Imported Upstream version 4.00.0~beta2
authorStephane Glondu <steph@glondu.net>
Wed, 13 Jun 2012 08:06:51 +0000 (10:06 +0200)
committerStephane Glondu <steph@glondu.net>
Wed, 13 Jun 2012 08:06:51 +0000 (10:06 +0200)
1553 files changed:
.depend
Changes
Makefile
Makefile.nt
README
README.win32
VERSION
_tags
asmcomp/amd64/arch.ml
asmcomp/amd64/emit.mlp
asmcomp/amd64/emit_nt.mlp
asmcomp/amd64/proc.ml
asmcomp/amd64/reload.ml
asmcomp/amd64/scheduling.ml
asmcomp/amd64/selection.ml
asmcomp/arm/arch.ml
asmcomp/arm/emit.mlp
asmcomp/arm/proc.ml
asmcomp/arm/reload.ml
asmcomp/arm/scheduling.ml
asmcomp/arm/selection.ml
asmcomp/asmgen.ml
asmcomp/asmgen.mli
asmcomp/asmlibrarian.ml
asmcomp/asmlibrarian.mli
asmcomp/asmlink.ml
asmcomp/asmlink.mli
asmcomp/asmpackager.ml
asmcomp/asmpackager.mli
asmcomp/clambda.ml
asmcomp/clambda.mli
asmcomp/closure.ml
asmcomp/closure.mli
asmcomp/cmm.ml
asmcomp/cmm.mli
asmcomp/cmmgen.ml
asmcomp/cmmgen.mli
asmcomp/cmx_format.mli
asmcomp/codegen.ml
asmcomp/codegen.mli
asmcomp/coloring.ml
asmcomp/coloring.mli
asmcomp/comballoc.ml
asmcomp/comballoc.mli
asmcomp/compilenv.ml
asmcomp/compilenv.mli
asmcomp/emit.mli
asmcomp/emitaux.ml
asmcomp/emitaux.mli
asmcomp/i386/arch.ml
asmcomp/i386/emit.mlp
asmcomp/i386/emit_nt.mlp
asmcomp/i386/proc.ml
asmcomp/i386/reload.ml
asmcomp/i386/scheduling.ml
asmcomp/i386/selection.ml
asmcomp/interf.ml
asmcomp/interf.mli
asmcomp/linearize.ml
asmcomp/linearize.mli
asmcomp/liveness.ml
asmcomp/liveness.mli
asmcomp/mach.ml
asmcomp/mach.mli
asmcomp/power/arch.ml
asmcomp/power/emit.mlp
asmcomp/power/proc.ml
asmcomp/power/reload.ml
asmcomp/power/scheduling.ml
asmcomp/power/selection.ml
asmcomp/printcmm.ml
asmcomp/printcmm.mli
asmcomp/printlinear.ml
asmcomp/printlinear.mli
asmcomp/printmach.ml
asmcomp/printmach.mli
asmcomp/proc.mli
asmcomp/reg.ml
asmcomp/reg.mli
asmcomp/reload.mli
asmcomp/reloadgen.ml
asmcomp/reloadgen.mli
asmcomp/schedgen.ml
asmcomp/schedgen.mli
asmcomp/scheduling.mli
asmcomp/selectgen.ml
asmcomp/selectgen.mli
asmcomp/selection.mli
asmcomp/sparc/arch.ml
asmcomp/sparc/emit.mlp
asmcomp/sparc/proc.ml
asmcomp/sparc/reload.ml
asmcomp/sparc/scheduling.ml
asmcomp/sparc/selection.ml
asmcomp/spill.ml
asmcomp/spill.mli
asmcomp/split.ml
asmcomp/split.mli
asmrun/.depend
asmrun/Makefile
asmrun/Makefile.nt
asmrun/amd64.S
asmrun/amd64nt.asm
asmrun/arm.S
asmrun/backtrace.c
asmrun/fail.c
asmrun/i386.S
asmrun/i386nt.asm
asmrun/power-elf.S
asmrun/power-rhapsody.S
asmrun/roots.c
asmrun/signals_asm.c
asmrun/signals_osdep.h
asmrun/sparc.S
asmrun/stack.h
asmrun/startup.c
boot/.ignore
boot/myocamlbuild.boot
boot/ocamlc
boot/ocamldep
boot/ocamllex
build/boot.sh
build/camlp4-bootstrap-recipe.txt
build/camlp4-byte-only.sh
build/camlp4-mkCamlp4Ast.sh
build/camlp4-native-only.sh
build/camlp4-targets.sh
build/distclean.sh
build/fastworld.sh
build/install.sh
build/mkmyocamlbuild_config.sh
build/mkruntimedef.sh
build/myocamlbuild.sh
build/ocamlbuild-byte-only.sh
build/ocamlbuild-native-only.sh
build/ocamlbuildlib-native-only.sh
build/otherlibs-targets.sh
build/partial-install.sh
build/targets.sh
build/world.all.sh
build/world.byte.sh
build/world.native.sh
bytecomp/bytegen.ml
bytecomp/bytegen.mli
bytecomp/bytelibrarian.ml
bytecomp/bytelibrarian.mli
bytecomp/bytelink.ml
bytecomp/bytelink.mli
bytecomp/bytepackager.ml
bytecomp/bytepackager.mli
bytecomp/bytesections.ml
bytecomp/bytesections.mli
bytecomp/cmo_format.mli
bytecomp/dll.ml
bytecomp/dll.mli
bytecomp/emitcode.ml
bytecomp/emitcode.mli
bytecomp/instruct.ml
bytecomp/instruct.mli
bytecomp/lambda.ml
bytecomp/lambda.mli
bytecomp/matching.ml
bytecomp/matching.mli
bytecomp/meta.ml
bytecomp/meta.mli
bytecomp/printinstr.ml
bytecomp/printinstr.mli
bytecomp/printlambda.ml
bytecomp/printlambda.mli
bytecomp/runtimedef.mli
bytecomp/simplif.ml
bytecomp/simplif.mli
bytecomp/symtable.ml
bytecomp/symtable.mli
bytecomp/translclass.ml
bytecomp/translclass.mli
bytecomp/translcore.ml
bytecomp/translcore.mli
bytecomp/translmod.ml
bytecomp/translmod.mli
bytecomp/translobj.ml
bytecomp/translobj.mli
bytecomp/typeopt.ml
bytecomp/typeopt.mli
byterun/.depend
byterun/.ignore
byterun/Makefile
byterun/Makefile.common
byterun/Makefile.nt
byterun/alloc.c
byterun/alloc.h
byterun/array.c
byterun/backtrace.c
byterun/backtrace.h
byterun/callback.c
byterun/callback.h
byterun/compact.c
byterun/compact.h
byterun/compare.c
byterun/compare.h
byterun/compatibility.h
byterun/config.h
byterun/custom.c
byterun/custom.h
byterun/debugger.c
byterun/debugger.h
byterun/dynlink.c
byterun/dynlink.h
byterun/exec.h
byterun/extern.c
byterun/fail.c
byterun/fail.h
byterun/finalise.c
byterun/finalise.h
byterun/fix_code.c
byterun/fix_code.h
byterun/floats.c
byterun/freelist.c
byterun/freelist.h
byterun/gc.h
byterun/gc_ctrl.c
byterun/gc_ctrl.h
byterun/globroots.c
byterun/globroots.h
byterun/hash.c
byterun/instrtrace.c
byterun/instrtrace.h
byterun/instruct.h
byterun/int64_emul.h
byterun/int64_format.h
byterun/int64_native.h
byterun/intern.c
byterun/interp.c
byterun/interp.h
byterun/intext.h
byterun/ints.c
byterun/io.c
byterun/io.h
byterun/lexing.c
byterun/main.c
byterun/major_gc.c
byterun/major_gc.h
byterun/md5.c
byterun/md5.h
byterun/memory.c
byterun/memory.h
byterun/meta.c
byterun/minor_gc.c
byterun/minor_gc.h
byterun/misc.c
byterun/misc.h
byterun/mlvalues.h
byterun/obj.c
byterun/osdeps.h
byterun/parsing.c
byterun/prims.h
byterun/printexc.c
byterun/printexc.h
byterun/reverse.h
byterun/roots.c
byterun/roots.h
byterun/signals.c
byterun/signals.h
byterun/signals_byt.c
byterun/signals_machdep.h
byterun/stacks.c
byterun/stacks.h
byterun/startup.c
byterun/startup.h
byterun/str.c
byterun/sys.c
byterun/sys.h
byterun/terminfo.c
byterun/ui.h
byterun/unix.c
byterun/weak.c
byterun/weak.h
byterun/win32.c
camlp4/Camlp4/Printers/OCaml.ml
camlp4/Camlp4/Printers/OCamlr.ml
camlp4/Camlp4/Struct/Camlp4Ast2OCamlAst.ml
camlp4/Camlp4/Struct/Token.ml
camlp4/Camlp4Parsers/Camlp4OCamlRevisedParser.ml
camlp4/boot/Camlp4.ml
camlp4/boot/Camlp4Ast.ml
camlp4/boot/camlp4boot.ml
camlp4/man/camlp4.1.tpl
camlp4/test/fixtures/assert.ml [deleted file]
camlp4/test/fixtures/backquoted_irrefutable_tuple.ml [deleted file]
camlp4/test/fixtures/backquoted_record.ml [deleted file]
camlp4/test/fixtures/backquoted_tuple.ml [deleted file]
camlp4/test/fixtures/big-tab1.ml [deleted file]
camlp4/test/fixtures/big-tab2.ml [deleted file]
camlp4/test/fixtures/big-tab3.ml [deleted file]
camlp4/test/fixtures/bug-4058.ml [deleted file]
camlp4/test/fixtures/bug-4337.ml [deleted file]
camlp4/test/fixtures/bug-by-vincent-balat.ml [deleted file]
camlp4/test/fixtures/bug-camlp4o-benjamin-monate.ml [deleted file]
camlp4/test/fixtures/bug-camlp4o-constr-arity-expr.ml [deleted file]
camlp4/test/fixtures/bug-camlp4o-constr-arity.ml [deleted file]
camlp4/test/fixtures/bug_escaping_quot.ml [deleted file]
camlp4/test/fixtures/chars.ml [deleted file]
camlp4/test/fixtures/class_expr_quot.ml [deleted file]
camlp4/test/fixtures/comments.ml [deleted file]
camlp4/test/fixtures/comments.mli [deleted file]
camlp4/test/fixtures/comments2.ml [deleted file]
camlp4/test/fixtures/constant-parser.ml [deleted file]
camlp4/test/fixtures/curry-constr.ml [deleted file]
camlp4/test/fixtures/default_quotation.ml [deleted file]
camlp4/test/fixtures/exception-with-eqn-bug.ml [deleted file]
camlp4/test/fixtures/external.ml [deleted file]
camlp4/test/fixtures/fun.ml [deleted file]
camlp4/test/fixtures/functor-perf.ml [deleted file]
camlp4/test/fixtures/functor-perf2.gen.ml [deleted file]
camlp4/test/fixtures/functor-perf2.ml [deleted file]
camlp4/test/fixtures/functor-perf3.ml [deleted file]
camlp4/test/fixtures/gen_map.ml [deleted file]
camlp4/test/fixtures/gram-fold.ml [deleted file]
camlp4/test/fixtures/gram-list.ml [deleted file]
camlp4/test/fixtures/gram-loc-lost.ml [deleted file]
camlp4/test/fixtures/gram-sub-rule.ml [deleted file]
camlp4/test/fixtures/gram-tree.ml [deleted file]
camlp4/test/fixtures/gram-tree2.ml [deleted file]
camlp4/test/fixtures/gram-tree3.ml [deleted file]
camlp4/test/fixtures/gram.ml [deleted file]
camlp4/test/fixtures/idents [deleted file]
camlp4/test/fixtures/idents1 [deleted file]
camlp4/test/fixtures/idents2 [deleted file]
camlp4/test/fixtures/if.ml [deleted file]
camlp4/test/fixtures/label.ml [deleted file]
camlp4/test/fixtures/lambda_free.ml [deleted file]
camlp4/test/fixtures/loc-bug.ml [deleted file]
camlp4/test/fixtures/macrotest.ml [deleted file]
camlp4/test/fixtures/macrotest.mli [deleted file]
camlp4/test/fixtures/macrotest2.ml [deleted file]
camlp4/test/fixtures/macrotest3.ml [deleted file]
camlp4/test/fixtures/make_extend.ml [deleted file]
camlp4/test/fixtures/match.ml [deleted file]
camlp4/test/fixtures/match_parser.ml [deleted file]
camlp4/test/fixtures/meta_multi_term.ml [deleted file]
camlp4/test/fixtures/metalib.ml [deleted file]
camlp4/test/fixtures/method_private_virtual.ml [deleted file]
camlp4/test/fixtures/mod.ml [deleted file]
camlp4/test/fixtures/mod2.ml [deleted file]
camlp4/test/fixtures/operators.ml [deleted file]
camlp4/test/fixtures/operators.mli [deleted file]
camlp4/test/fixtures/original_syntax.ml [deleted file]
camlp4/test/fixtures/outside-scope.ml [deleted file]
camlp4/test/fixtures/parser.ml [deleted file]
camlp4/test/fixtures/pp_let_in.ml [deleted file]
camlp4/test/fixtures/pp_let_in2.ml [deleted file]
camlp4/test/fixtures/pp_xml.ml [deleted file]
camlp4/test/fixtures/pprecordtyp.ml [deleted file]
camlp4/test/fixtures/pr4314.ml [deleted file]
camlp4/test/fixtures/pr4314gram1.ml [deleted file]
camlp4/test/fixtures/pr4314gram2.ml [deleted file]
camlp4/test/fixtures/pr4314gram3.ml [deleted file]
camlp4/test/fixtures/pr4314gram4.ml [deleted file]
camlp4/test/fixtures/pr4314gram5.ml [deleted file]
camlp4/test/fixtures/pr4329.ml [deleted file]
camlp4/test/fixtures/pr4330.ml [deleted file]
camlp4/test/fixtures/pr4357.ml [deleted file]
camlp4/test/fixtures/pr4357sample.ml [deleted file]
camlp4/test/fixtures/pr4357sample2.ml [deleted file]
camlp4/test/fixtures/pr4452.ml [deleted file]
camlp4/test/fixtures/private_row.ml [deleted file]
camlp4/test/fixtures/rec.ml [deleted file]
camlp4/test/fixtures/seq.ml [deleted file]
camlp4/test/fixtures/seq2.ml [deleted file]
camlp4/test/fixtures/simplify.ml [deleted file]
camlp4/test/fixtures/simplify_r.ml [deleted file]
camlp4/test/fixtures/stream-parser-bug.ml [deleted file]
camlp4/test/fixtures/string.ml [deleted file]
camlp4/test/fixtures/superfluous.ml [deleted file]
camlp4/test/fixtures/transform-examples.ml [deleted file]
camlp4/test/fixtures/try.ml [deleted file]
camlp4/test/fixtures/tuple_as_retval.ml [deleted file]
camlp4/test/fixtures/type.ml [deleted file]
camlp4/test/fixtures/type_decl.ml [deleted file]
camlp4/test/fixtures/unit.ml [deleted file]
camlp4/test/fixtures/use.ml [deleted file]
camlp4/test/fixtures/where.o.ml [deleted file]
camlp4/test/fixtures/where.r.ml [deleted file]
camlp4/unmaintained/Makefile [deleted file]
camlp4/unmaintained/compile/.depend [deleted file]
camlp4/unmaintained/compile/.ignore [deleted file]
camlp4/unmaintained/compile/Makefile [deleted file]
camlp4/unmaintained/compile/comp_head.ml [deleted file]
camlp4/unmaintained/compile/comp_trail.ml [deleted file]
camlp4/unmaintained/compile/compile.ml [deleted file]
camlp4/unmaintained/compile/compile.sh [deleted file]
camlp4/unmaintained/etc/.depend [deleted file]
camlp4/unmaintained/etc/.ignore [deleted file]
camlp4/unmaintained/etc/Makefile [deleted file]
camlp4/unmaintained/etc/pa_fstream.ml [deleted file]
camlp4/unmaintained/etc/pa_ifdef.ml [deleted file]
camlp4/unmaintained/etc/pa_oop.ml [deleted file]
camlp4/unmaintained/etc/pa_ru.ml [deleted file]
camlp4/unmaintained/etc/parserify.ml [deleted file]
camlp4/unmaintained/etc/parserify.mli [deleted file]
camlp4/unmaintained/etc/pr_depend.ml [deleted file]
camlp4/unmaintained/etc/pr_extend.ml [deleted file]
camlp4/unmaintained/etc/pr_extfun.ml [deleted file]
camlp4/unmaintained/etc/pr_null.ml [deleted file]
camlp4/unmaintained/etc/pr_op.ml [deleted file]
camlp4/unmaintained/etc/pr_op_main.ml [deleted file]
camlp4/unmaintained/etc/pr_rp.ml [deleted file]
camlp4/unmaintained/etc/pr_rp_main.ml [deleted file]
camlp4/unmaintained/etc/q_phony.ml [deleted file]
camlp4/unmaintained/extfold/README [deleted file]
camlp4/unmaintained/extfold/pa_extfold.ml [deleted file]
camlp4/unmaintained/format/.depend [deleted file]
camlp4/unmaintained/format/Makefile [deleted file]
camlp4/unmaintained/format/README [deleted file]
camlp4/unmaintained/format/pa_format.ml [deleted file]
camlp4/unmaintained/lefteval/.depend [deleted file]
camlp4/unmaintained/lefteval/Makefile [deleted file]
camlp4/unmaintained/lefteval/README [deleted file]
camlp4/unmaintained/lefteval/pa_lefteval.ml [deleted file]
camlp4/unmaintained/lib/.cvsignore [deleted file]
camlp4/unmaintained/lib/.depend [deleted file]
camlp4/unmaintained/lib/Makefile [deleted file]
camlp4/unmaintained/lib/extfun.ml [deleted file]
camlp4/unmaintained/lib/extfun.mli [deleted file]
camlp4/unmaintained/lib/fstream.ml [deleted file]
camlp4/unmaintained/lib/fstream.mli [deleted file]
camlp4/unmaintained/ocamllex/Makefile [deleted file]
camlp4/unmaintained/ocamllex/README [deleted file]
camlp4/unmaintained/ocamllex/pa_ocamllex.ml [deleted file]
camlp4/unmaintained/ocpp/.depend [deleted file]
camlp4/unmaintained/ocpp/.ignore [deleted file]
camlp4/unmaintained/ocpp/Makefile [deleted file]
camlp4/unmaintained/ocpp/ocpp.ml [deleted file]
camlp4/unmaintained/odyl/.depend [deleted file]
camlp4/unmaintained/odyl/.ignore [deleted file]
camlp4/unmaintained/odyl/Makefile [deleted file]
camlp4/unmaintained/odyl/odyl.ml [deleted file]
camlp4/unmaintained/odyl/odyl_main.mli [deleted file]
camlp4/unmaintained/olabl/.depend [deleted file]
camlp4/unmaintained/olabl/Makefile [deleted file]
camlp4/unmaintained/olabl/README [deleted file]
camlp4/unmaintained/olabl/pa_olabl.ml [deleted file]
camlp4/unmaintained/scheme/.depend [deleted file]
camlp4/unmaintained/scheme/Makefile [deleted file]
camlp4/unmaintained/scheme/README [deleted file]
camlp4/unmaintained/scheme/pa_scheme.ml [deleted file]
camlp4/unmaintained/scheme/pa_scheme.sc [deleted file]
camlp4/unmaintained/scheme/pr_scheme.ml [deleted file]
camlp4/unmaintained/scheme/pr_schp_main.ml [deleted file]
camlp4/unmaintained/sml/.depend [deleted file]
camlp4/unmaintained/sml/Makefile [deleted file]
camlp4/unmaintained/sml/README [deleted file]
camlp4/unmaintained/sml/pa_sml.ml [deleted file]
camlp4/unmaintained/sml/smllib.sml [deleted file]
config/Makefile-templ
config/Makefile.mingw
config/Makefile.mingw64
config/Makefile.msvc
config/Makefile.msvc64
config/auto-aux/align.c
config/auto-aux/async_io.c
config/auto-aux/bytecopy.c
config/auto-aux/dblalign.c
config/auto-aux/divmod.c
config/auto-aux/elf.c
config/auto-aux/endian.c
config/auto-aux/getgroups.c
config/auto-aux/gethostbyaddr.c
config/auto-aux/gethostbyname.c
config/auto-aux/ia32sse2.c
config/auto-aux/initgroups.c
config/auto-aux/int64align.c
config/auto-aux/longlong.c
config/auto-aux/schar.c
config/auto-aux/schar2.c
config/auto-aux/setgroups.c
config/auto-aux/sighandler.c
config/auto-aux/signals.c
config/auto-aux/sizes.c
config/auto-aux/stackov.c
config/auto-aux/tclversion.c
config/m-nt.h
config/m-templ.h
config/s-nt.h
config/s-templ.h
configure
debugger/.depend
debugger/.ignore
debugger/Makefile
debugger/Makefile.nt
debugger/Makefile.shared
debugger/breakpoints.ml
debugger/breakpoints.mli
debugger/checkpoints.ml
debugger/checkpoints.mli
debugger/command_line.ml
debugger/command_line.mli
debugger/debugcom.ml
debugger/debugcom.mli
debugger/debugger_config.ml
debugger/debugger_config.mli
debugger/envaux.ml
debugger/envaux.mli
debugger/eval.ml
debugger/eval.mli
debugger/events.ml
debugger/events.mli
debugger/exec.ml
debugger/exec.mli
debugger/frames.ml
debugger/frames.mli
debugger/history.ml
debugger/history.mli
debugger/input_handling.ml
debugger/input_handling.mli
debugger/int64ops.ml
debugger/int64ops.mli
debugger/lexer.mli
debugger/lexer.mll
debugger/loadprinter.ml
debugger/loadprinter.mli
debugger/main.ml
debugger/parameters.ml
debugger/parameters.mli
debugger/parser.mly
debugger/parser_aux.mli
debugger/pattern_matching.ml
debugger/pattern_matching.mli
debugger/pos.ml
debugger/pos.mli
debugger/primitives.ml
debugger/primitives.mli
debugger/printval.ml
debugger/printval.mli
debugger/program_loading.ml
debugger/program_loading.mli
debugger/program_management.ml
debugger/program_management.mli
debugger/show_information.ml
debugger/show_information.mli
debugger/show_source.ml
debugger/show_source.mli
debugger/source.ml
debugger/source.mli
debugger/symbols.ml
debugger/symbols.mli
debugger/time_travel.ml
debugger/time_travel.mli
debugger/trap_barrier.ml
debugger/trap_barrier.mli
debugger/unix_tools.ml
debugger/unix_tools.mli
driver/compile.ml
driver/compile.mli
driver/errors.ml
driver/errors.mli
driver/main.ml
driver/main.mli
driver/main_args.ml
driver/main_args.mli
driver/optcompile.ml
driver/optcompile.mli
driver/opterrors.ml
driver/opterrors.mli
driver/optmain.ml
driver/optmain.mli
driver/pparse.ml
driver/pparse.mli
emacs/Makefile
emacs/README
emacs/caml-compat.el
emacs/caml-emacs.el
emacs/caml-font-old.el
emacs/caml-help.el
emacs/caml-hilit.el
emacs/caml-types.el
emacs/caml-xemacs.el
emacs/caml.el
emacs/camldebug.el
emacs/inf-caml.el
emacs/ocamltags.in
experimental/doligez/checkheaders [deleted file]
experimental/garrigue/.cvsignore [deleted file]
experimental/garrigue/caml_set_oid.diffs [deleted file]
experimental/garrigue/coerce.diffs [deleted file]
experimental/garrigue/dirs_multimatch [deleted file]
experimental/garrigue/dirs_poly [deleted file]
experimental/garrigue/fixedtypes.ml [deleted file]
experimental/garrigue/gadt-escape-check.diffs [deleted file]
experimental/garrigue/marshal_objects.diffs [deleted file]
experimental/garrigue/module-errors.diffs [deleted file]
experimental/garrigue/multimatch.diffs [deleted file]
experimental/garrigue/multimatch.ml [deleted file]
experimental/garrigue/newlabels.ps [deleted file]
experimental/garrigue/objvariant.diffs [deleted file]
experimental/garrigue/objvariant.ml [deleted file]
experimental/garrigue/parser-lessminus.diffs [deleted file]
experimental/garrigue/printers.ml [deleted file]
experimental/garrigue/show_types.diffs [deleted file]
experimental/garrigue/tests.ml [deleted file]
experimental/garrigue/valvirt.diffs [deleted file]
experimental/garrigue/variable-names-Tvar.diffs [deleted file]
experimental/garrigue/variable-names.ml [deleted file]
experimental/garrigue/varunion.ml [deleted file]
experimental/garrigue/with-module-type.diffs [deleted file]
lex/Makefile
lex/Makefile.nt
lex/compact.ml
lex/compact.mli
lex/cset.ml
lex/cset.mli
lex/lexer.mli
lex/lexer.mll
lex/lexgen.ml
lex/lexgen.mli
lex/main.ml
lex/output.ml
lex/output.mli
lex/outputbis.ml
lex/outputbis.mli
lex/parser.mly
lex/syntax.ml
lex/syntax.mli
man/Makefile
man/ocaml.m
man/ocamlc.m
man/ocamlcp.m
man/ocamldebug.m
man/ocamldep.m
man/ocamldoc.m
man/ocamllex.m
man/ocamlmktop.m
man/ocamlopt.m
man/ocamlprof.m
man/ocamlrun.m
man/ocamlyacc.m
myocamlbuild.ml
myocamlbuild_config.mli
ocamlbuild/Makefile
ocamlbuild/display.ml
ocamlbuild/hygiene.ml
ocamlbuild/main.ml
ocamlbuild/manual/.ignore [deleted file]
ocamlbuild/manual/Makefile [deleted file]
ocamlbuild/manual/manual.hva [deleted file]
ocamlbuild/manual/manual.tex [deleted file]
ocamlbuild/manual/myocamlbuild.ml [deleted file]
ocamlbuild/manual/trace.out [deleted file]
ocamlbuild/my_std.ml
ocamlbuild/ocaml_specific.ml
ocamlbuild/ocamlbuild-presentation.rslide [deleted file]
ocamlbuild/options.ml
ocamlbuild/signatures.mli
ocamlbuild/test/good-output [deleted file]
ocamlbuild/test/runtest.sh [deleted file]
ocamlbuild/test/test1/foo.ml [deleted file]
ocamlbuild/test/test10/dbdi [deleted file]
ocamlbuild/test/test10/test.sh [deleted file]
ocamlbuild/test/test11/_tags [deleted file]
ocamlbuild/test/test11/a/aa.ml [deleted file]
ocamlbuild/test/test11/a/aa.mli [deleted file]
ocamlbuild/test/test11/b/bb.ml [deleted file]
ocamlbuild/test/test11/b/libb.mllib [deleted file]
ocamlbuild/test/test11/myocamlbuild.ml [deleted file]
ocamlbuild/test/test11/test.sh [deleted file]
ocamlbuild/test/test2/_tags [deleted file]
ocamlbuild/test/test2/tata.ml [deleted file]
ocamlbuild/test/test2/tata.mli [deleted file]
ocamlbuild/test/test2/test.sh [deleted file]
ocamlbuild/test/test2/titi.ml [deleted file]
ocamlbuild/test/test2/toto.ml [deleted file]
ocamlbuild/test/test2/tutu.ml [deleted file]
ocamlbuild/test/test2/tutu.mli [deleted file]
ocamlbuild/test/test2/tyty.mli [deleted file]
ocamlbuild/test/test2/vivi1.ml [deleted file]
ocamlbuild/test/test2/vivi2.ml [deleted file]
ocamlbuild/test/test2/vivi3.ml [deleted file]
ocamlbuild/test/test3/_tags [deleted file]
ocamlbuild/test/test3/a.ml [deleted file]
ocamlbuild/test/test3/a.mli [deleted file]
ocamlbuild/test/test3/b.ml [deleted file]
ocamlbuild/test/test3/b.mli [deleted file]
ocamlbuild/test/test3/c.ml [deleted file]
ocamlbuild/test/test3/c.mli [deleted file]
ocamlbuild/test/test3/d.ml [deleted file]
ocamlbuild/test/test3/d.mli [deleted file]
ocamlbuild/test/test3/e.ml [deleted file]
ocamlbuild/test/test3/e.mli [deleted file]
ocamlbuild/test/test3/f.ml [deleted file]
ocamlbuild/test/test3/f.mli [deleted file]
ocamlbuild/test/test3/proj.odocl [deleted file]
ocamlbuild/test/test3/test.sh [deleted file]
ocamlbuild/test/test4/_tags [deleted file]
ocamlbuild/test/test4/a/aa.ml [deleted file]
ocamlbuild/test/test4/a/aa.mli [deleted file]
ocamlbuild/test/test4/b/bb.ml [deleted file]
ocamlbuild/test/test4/test.sh [deleted file]
ocamlbuild/test/test5/_tags [deleted file]
ocamlbuild/test/test5/a.ml [deleted file]
ocamlbuild/test/test5/a.mli [deleted file]
ocamlbuild/test/test5/b.ml [deleted file]
ocamlbuild/test/test5/c.mlpack [deleted file]
ocamlbuild/test/test5/d.ml [deleted file]
ocamlbuild/test/test5/stack.ml [deleted file]
ocamlbuild/test/test5/test.sh [deleted file]
ocamlbuild/test/test6/a.ml [deleted file]
ocamlbuild/test/test6/a.mli [deleted file]
ocamlbuild/test/test6/b.ml [deleted file]
ocamlbuild/test/test6/b.mli [deleted file]
ocamlbuild/test/test6/b.mli.v1 [deleted file]
ocamlbuild/test/test6/b.mli.v2 [deleted file]
ocamlbuild/test/test6/d.ml [deleted file]
ocamlbuild/test/test6/d.mli [deleted file]
ocamlbuild/test/test6/d.mli.v1 [deleted file]
ocamlbuild/test/test6/d.mli.v2 [deleted file]
ocamlbuild/test/test6/main.ml [deleted file]
ocamlbuild/test/test6/main.mli [deleted file]
ocamlbuild/test/test6/test.sh [deleted file]
ocamlbuild/test/test7/_tags [deleted file]
ocamlbuild/test/test7/aa.ml [deleted file]
ocamlbuild/test/test7/bb.mli [deleted file]
ocamlbuild/test/test7/bb1.ml [deleted file]
ocamlbuild/test/test7/bb2.ml [deleted file]
ocamlbuild/test/test7/bb3.ml [deleted file]
ocamlbuild/test/test7/bbcc.mllib [deleted file]
ocamlbuild/test/test7/c2.ml [deleted file]
ocamlbuild/test/test7/c2.mli [deleted file]
ocamlbuild/test/test7/c3.ml [deleted file]
ocamlbuild/test/test7/cc.ml [deleted file]
ocamlbuild/test/test7/cool_plugin.ml [deleted file]
ocamlbuild/test/test7/main.ml [deleted file]
ocamlbuild/test/test7/myocamlbuild.ml [deleted file]
ocamlbuild/test/test7/test.sh [deleted file]
ocamlbuild/test/test8/a.ml [deleted file]
ocamlbuild/test/test8/myocamlbuild.ml [deleted file]
ocamlbuild/test/test8/test.sh [deleted file]
ocamlbuild/test/test9/dbgl [deleted file]
ocamlbuild/test/test9/test.sh [deleted file]
ocamlbuild/test/test9/testglob.ml [deleted file]
ocamlbuild/test/test_virtual/foo.itarget [deleted file]
ocamlbuild/test/test_virtual/foo1 [deleted file]
ocamlbuild/test/test_virtual/foo2 [deleted file]
ocamlbuild/test/test_virtual/myocamlbuild.ml [deleted file]
ocamlbuild/test/test_virtual/test.sh [deleted file]
ocamldoc/.depend
ocamldoc/Makefile
ocamldoc/Makefile.nt
ocamldoc/odoc.ml
ocamldoc/odoc_analyse.ml
ocamldoc/odoc_analyse.mli
ocamldoc/odoc_args.ml
ocamldoc/odoc_args.mli
ocamldoc/odoc_ast.ml
ocamldoc/odoc_ast.mli
ocamldoc/odoc_class.ml
ocamldoc/odoc_comments.ml
ocamldoc/odoc_comments.mli
ocamldoc/odoc_comments_global.ml
ocamldoc/odoc_comments_global.mli
ocamldoc/odoc_config.ml
ocamldoc/odoc_config.mli
ocamldoc/odoc_control.ml
ocamldoc/odoc_cross.ml
ocamldoc/odoc_cross.mli
ocamldoc/odoc_dag2html.ml
ocamldoc/odoc_dag2html.mli
ocamldoc/odoc_dep.ml
ocamldoc/odoc_dot.ml
ocamldoc/odoc_env.ml
ocamldoc/odoc_env.mli
ocamldoc/odoc_exception.ml
ocamldoc/odoc_global.ml
ocamldoc/odoc_global.mli
ocamldoc/odoc_html.ml
ocamldoc/odoc_info.ml
ocamldoc/odoc_info.mli
ocamldoc/odoc_inherit.ml
ocamldoc/odoc_latex.ml
ocamldoc/odoc_latex_style.ml
ocamldoc/odoc_lexer.mll
ocamldoc/odoc_man.ml
ocamldoc/odoc_merge.ml
ocamldoc/odoc_merge.mli
ocamldoc/odoc_messages.ml
ocamldoc/odoc_misc.ml
ocamldoc/odoc_misc.mli
ocamldoc/odoc_module.ml
ocamldoc/odoc_name.ml
ocamldoc/odoc_name.mli
ocamldoc/odoc_ocamlhtml.mll
ocamldoc/odoc_parameter.ml
ocamldoc/odoc_parser.mly
ocamldoc/odoc_print.ml
ocamldoc/odoc_print.mli
ocamldoc/odoc_scan.ml
ocamldoc/odoc_search.ml
ocamldoc/odoc_search.mli
ocamldoc/odoc_see_lexer.mll
ocamldoc/odoc_sig.ml
ocamldoc/odoc_sig.mli
ocamldoc/odoc_str.ml
ocamldoc/odoc_str.mli
ocamldoc/odoc_test.ml
ocamldoc/odoc_texi.ml
ocamldoc/odoc_text.ml
ocamldoc/odoc_text.mli
ocamldoc/odoc_text_lexer.mll
ocamldoc/odoc_text_parser.mly
ocamldoc/odoc_to_text.ml
ocamldoc/odoc_type.ml
ocamldoc/odoc_types.ml
ocamldoc/odoc_types.mli
ocamldoc/odoc_value.ml
ocamldoc/remove_DEBUG
ocamldoc/runocamldoc
otherlibs/Makefile
otherlibs/Makefile.nt
otherlibs/Makefile.shared
otherlibs/bigarray/.depend
otherlibs/bigarray/Makefile
otherlibs/bigarray/Makefile.nt
otherlibs/bigarray/bigarray.h
otherlibs/bigarray/bigarray.ml
otherlibs/bigarray/bigarray.mli
otherlibs/bigarray/bigarray_stubs.c
otherlibs/bigarray/mmap_unix.c
otherlibs/bigarray/mmap_win32.c
otherlibs/dynlink/Makefile
otherlibs/dynlink/Makefile.nt
otherlibs/dynlink/dynlink.ml
otherlibs/dynlink/dynlink.mli
otherlibs/dynlink/dynlinkaux.mlpack
otherlibs/dynlink/extract_crc.ml
otherlibs/dynlink/natdynlink.ml
otherlibs/graph/.depend
otherlibs/graph/Makefile
otherlibs/graph/color.c
otherlibs/graph/draw.c
otherlibs/graph/dump_img.c
otherlibs/graph/events.c
otherlibs/graph/fill.c
otherlibs/graph/graphics.ml
otherlibs/graph/graphics.mli
otherlibs/graph/graphicsX11.ml
otherlibs/graph/graphicsX11.mli
otherlibs/graph/image.c
otherlibs/graph/image.h
otherlibs/graph/libgraph.h
otherlibs/graph/make_img.c
otherlibs/graph/open.c
otherlibs/graph/point_col.c
otherlibs/graph/sound.c
otherlibs/graph/subwindow.c
otherlibs/graph/text.c
otherlibs/labltk/browser/.depend
otherlibs/labltk/browser/Makefile
otherlibs/labltk/browser/Makefile.nt
otherlibs/labltk/browser/Makefile.shared
otherlibs/labltk/browser/dummyUnix.mli
otherlibs/labltk/browser/dummyWin.mli
otherlibs/labltk/browser/editor.ml
otherlibs/labltk/browser/editor.mli
otherlibs/labltk/browser/fileselect.ml
otherlibs/labltk/browser/fileselect.mli
otherlibs/labltk/browser/jg_bind.ml
otherlibs/labltk/browser/jg_bind.mli
otherlibs/labltk/browser/jg_box.ml
otherlibs/labltk/browser/jg_button.ml
otherlibs/labltk/browser/jg_completion.ml
otherlibs/labltk/browser/jg_completion.mli
otherlibs/labltk/browser/jg_config.ml
otherlibs/labltk/browser/jg_config.mli
otherlibs/labltk/browser/jg_entry.ml
otherlibs/labltk/browser/jg_memo.ml
otherlibs/labltk/browser/jg_memo.mli
otherlibs/labltk/browser/jg_menu.ml
otherlibs/labltk/browser/jg_message.ml
otherlibs/labltk/browser/jg_message.mli
otherlibs/labltk/browser/jg_multibox.ml
otherlibs/labltk/browser/jg_multibox.mli
otherlibs/labltk/browser/jg_text.ml
otherlibs/labltk/browser/jg_text.mli
otherlibs/labltk/browser/jg_tk.ml
otherlibs/labltk/browser/jg_toplevel.ml
otherlibs/labltk/browser/lexical.ml
otherlibs/labltk/browser/lexical.mli
otherlibs/labltk/browser/list2.ml
otherlibs/labltk/browser/main.ml
otherlibs/labltk/browser/mytypes.mli
otherlibs/labltk/browser/searchid.ml
otherlibs/labltk/browser/searchid.mli
otherlibs/labltk/browser/searchpos.ml
otherlibs/labltk/browser/searchpos.mli
otherlibs/labltk/browser/setpath.ml
otherlibs/labltk/browser/setpath.mli
otherlibs/labltk/browser/shell.ml
otherlibs/labltk/browser/shell.mli
otherlibs/labltk/browser/typecheck.ml
otherlibs/labltk/browser/typecheck.mli
otherlibs/labltk/browser/useunix.ml
otherlibs/labltk/browser/useunix.mli
otherlibs/labltk/browser/viewer.ml
otherlibs/labltk/browser/viewer.mli
otherlibs/labltk/browser/winmain.c
otherlibs/labltk/builtin/LICENSE
otherlibs/labltk/compiler/compile.ml
otherlibs/labltk/compiler/intf.ml
otherlibs/labltk/compiler/lexer.mll
otherlibs/labltk/compiler/maincompile.ml
otherlibs/labltk/compiler/parser.mly
otherlibs/labltk/compiler/tables.ml
otherlibs/labltk/compiler/tsort.ml
otherlibs/labltk/examples_labltk/README
otherlibs/labltk/examples_labltk/calc.ml
otherlibs/labltk/examples_labltk/clock.ml
otherlibs/labltk/examples_labltk/demo.ml
otherlibs/labltk/examples_labltk/eyes.ml
otherlibs/labltk/examples_labltk/hello.ml
otherlibs/labltk/examples_labltk/taquin.ml
otherlibs/labltk/examples_labltk/tetris.ml
otherlibs/labltk/frx/frx_entry.ml
otherlibs/labltk/frx/frx_fileinput.ml
otherlibs/labltk/frx/frx_font.ml
otherlibs/labltk/frx/frx_lbutton.ml
otherlibs/labltk/frx/frx_listbox.ml
otherlibs/labltk/frx/frx_req.ml
otherlibs/labltk/frx/frx_text.ml
otherlibs/labltk/frx/frx_widget.ml
otherlibs/labltk/jpf/balloon.ml
otherlibs/labltk/jpf/balloon.mli
otherlibs/labltk/jpf/balloontest.ml
otherlibs/labltk/jpf/fileselect.ml
otherlibs/labltk/jpf/fileselect.mli
otherlibs/labltk/lib/Makefile
otherlibs/labltk/support/camltk.h
otherlibs/labltk/support/cltkCaml.c
otherlibs/labltk/support/cltkDMain.c
otherlibs/labltk/support/cltkEval.c
otherlibs/labltk/support/cltkEvent.c
otherlibs/labltk/support/cltkFile.c
otherlibs/labltk/support/cltkMain.c
otherlibs/labltk/support/cltkMisc.c
otherlibs/labltk/support/cltkTimer.c
otherlibs/labltk/support/cltkUtf.c
otherlibs/labltk/support/cltkVar.c
otherlibs/labltk/support/cltkWait.c
otherlibs/labltk/support/fileevent.ml
otherlibs/labltk/support/fileevent.mli
otherlibs/labltk/support/protocol.ml
otherlibs/labltk/support/protocol.mli
otherlibs/labltk/support/rawwidget.ml
otherlibs/labltk/support/rawwidget.mli
otherlibs/labltk/support/slave.ml
otherlibs/labltk/support/support.ml
otherlibs/labltk/support/support.mli
otherlibs/labltk/support/textvariable.ml
otherlibs/labltk/support/textvariable.mli
otherlibs/labltk/support/timer.ml
otherlibs/labltk/support/timer.mli
otherlibs/labltk/support/tkthread.ml
otherlibs/labltk/support/tkthread.mli
otherlibs/labltk/support/tkwait.ml
otherlibs/labltk/support/widget.ml
otherlibs/labltk/support/widget.mli
otherlibs/num/.depend
otherlibs/num/Makefile
otherlibs/num/Makefile.nt
otherlibs/num/arith_flags.ml
otherlibs/num/arith_flags.mli
otherlibs/num/arith_status.ml
otherlibs/num/arith_status.mli
otherlibs/num/big_int.ml
otherlibs/num/big_int.mli
otherlibs/num/bng.c
otherlibs/num/bng.h
otherlibs/num/bng_amd64.c
otherlibs/num/bng_digit.c
otherlibs/num/bng_ia32.c
otherlibs/num/bng_ppc.c
otherlibs/num/bng_sparc.c
otherlibs/num/int_misc.ml
otherlibs/num/int_misc.mli
otherlibs/num/nat.h
otherlibs/num/nat.ml
otherlibs/num/nat.mli
otherlibs/num/nat_stubs.c
otherlibs/num/num.ml
otherlibs/num/num.mli
otherlibs/num/ratio.mli
otherlibs/str/.depend
otherlibs/str/Makefile
otherlibs/str/Makefile.nt
otherlibs/str/str.ml
otherlibs/str/str.mli
otherlibs/str/strstubs.c
otherlibs/systhreads/.depend
otherlibs/systhreads/Makefile
otherlibs/systhreads/Makefile.nt
otherlibs/systhreads/condition.ml
otherlibs/systhreads/condition.mli
otherlibs/systhreads/event.ml
otherlibs/systhreads/event.mli
otherlibs/systhreads/mutex.ml
otherlibs/systhreads/mutex.mli
otherlibs/systhreads/st_stubs.c
otherlibs/systhreads/thread.mli
otherlibs/systhreads/threadUnix.ml
otherlibs/systhreads/threadUnix.mli
otherlibs/threads/.depend
otherlibs/threads/Makefile
otherlibs/threads/condition.ml
otherlibs/threads/condition.mli
otherlibs/threads/event.ml
otherlibs/threads/event.mli
otherlibs/threads/marshal.ml
otherlibs/threads/mutex.ml
otherlibs/threads/mutex.mli
otherlibs/threads/pervasives.ml
otherlibs/threads/scheduler.c
otherlibs/threads/thread.ml
otherlibs/threads/thread.mli
otherlibs/threads/threadUnix.ml
otherlibs/threads/threadUnix.mli
otherlibs/threads/unix.ml
otherlibs/unix/.depend
otherlibs/unix/Makefile
otherlibs/unix/accept.c
otherlibs/unix/access.c
otherlibs/unix/addrofstr.c
otherlibs/unix/alarm.c
otherlibs/unix/bind.c
otherlibs/unix/chdir.c
otherlibs/unix/chmod.c
otherlibs/unix/chown.c
otherlibs/unix/chroot.c
otherlibs/unix/close.c
otherlibs/unix/closedir.c
otherlibs/unix/connect.c
otherlibs/unix/cst2constr.c
otherlibs/unix/cst2constr.h
otherlibs/unix/cstringv.c
otherlibs/unix/dup.c
otherlibs/unix/dup2.c
otherlibs/unix/envir.c
otherlibs/unix/errmsg.c
otherlibs/unix/execv.c
otherlibs/unix/execve.c
otherlibs/unix/execvp.c
otherlibs/unix/exit.c
otherlibs/unix/fchmod.c
otherlibs/unix/fchown.c
otherlibs/unix/fcntl.c
otherlibs/unix/fork.c
otherlibs/unix/ftruncate.c
otherlibs/unix/getaddrinfo.c
otherlibs/unix/getcwd.c
otherlibs/unix/getegid.c
otherlibs/unix/geteuid.c
otherlibs/unix/getgid.c
otherlibs/unix/getgr.c
otherlibs/unix/getgroups.c
otherlibs/unix/gethost.c
otherlibs/unix/gethostname.c
otherlibs/unix/getlogin.c
otherlibs/unix/getnameinfo.c
otherlibs/unix/getpeername.c
otherlibs/unix/getpid.c
otherlibs/unix/getppid.c
otherlibs/unix/getproto.c
otherlibs/unix/getpw.c
otherlibs/unix/getserv.c
otherlibs/unix/getsockname.c
otherlibs/unix/gettimeofday.c
otherlibs/unix/getuid.c
otherlibs/unix/gmtime.c
otherlibs/unix/initgroups.c
otherlibs/unix/isatty.c
otherlibs/unix/itimer.c
otherlibs/unix/kill.c
otherlibs/unix/link.c
otherlibs/unix/listen.c
otherlibs/unix/lockf.c
otherlibs/unix/lseek.c
otherlibs/unix/mkdir.c
otherlibs/unix/mkfifo.c
otherlibs/unix/nice.c
otherlibs/unix/open.c
otherlibs/unix/opendir.c
otherlibs/unix/pipe.c
otherlibs/unix/putenv.c
otherlibs/unix/read.c
otherlibs/unix/readdir.c
otherlibs/unix/readlink.c
otherlibs/unix/rename.c
otherlibs/unix/rewinddir.c
otherlibs/unix/rmdir.c
otherlibs/unix/select.c
otherlibs/unix/sendrecv.c
otherlibs/unix/setgid.c
otherlibs/unix/setgroups.c
otherlibs/unix/setsid.c
otherlibs/unix/setuid.c
otherlibs/unix/shutdown.c
otherlibs/unix/signals.c
otherlibs/unix/sleep.c
otherlibs/unix/socket.c
otherlibs/unix/socketaddr.c
otherlibs/unix/socketaddr.h
otherlibs/unix/socketpair.c
otherlibs/unix/sockopt.c
otherlibs/unix/stat.c
otherlibs/unix/strofaddr.c
otherlibs/unix/symlink.c
otherlibs/unix/termios.c
otherlibs/unix/time.c
otherlibs/unix/times.c
otherlibs/unix/truncate.c
otherlibs/unix/umask.c
otherlibs/unix/unix.ml
otherlibs/unix/unix.mli
otherlibs/unix/unixLabels.ml
otherlibs/unix/unixLabels.mli
otherlibs/unix/unixsupport.c
otherlibs/unix/unixsupport.h
otherlibs/unix/unlink.c
otherlibs/unix/utimes.c
otherlibs/unix/wait.c
otherlibs/unix/write.c
otherlibs/win32graph/Makefile.nt
otherlibs/win32graph/dib.c
otherlibs/win32graph/draw.c
otherlibs/win32graph/events.c
otherlibs/win32graph/libgraph.h
otherlibs/win32graph/open.c
otherlibs/win32unix/Makefile.nt
otherlibs/win32unix/accept.c
otherlibs/win32unix/bind.c
otherlibs/win32unix/channels.c
otherlibs/win32unix/close.c
otherlibs/win32unix/close_on.c
otherlibs/win32unix/connect.c
otherlibs/win32unix/createprocess.c
otherlibs/win32unix/dup.c
otherlibs/win32unix/dup2.c
otherlibs/win32unix/errmsg.c
otherlibs/win32unix/getpeername.c
otherlibs/win32unix/getpid.c
otherlibs/win32unix/getsockname.c
otherlibs/win32unix/gettimeofday.c
otherlibs/win32unix/link.c
otherlibs/win32unix/listen.c
otherlibs/win32unix/lockf.c
otherlibs/win32unix/lseek.c
otherlibs/win32unix/mkdir.c
otherlibs/win32unix/nonblock.c
otherlibs/win32unix/open.c
otherlibs/win32unix/pipe.c
otherlibs/win32unix/read.c
otherlibs/win32unix/rename.c
otherlibs/win32unix/select.c
otherlibs/win32unix/sendrecv.c
otherlibs/win32unix/shutdown.c
otherlibs/win32unix/sleep.c
otherlibs/win32unix/socket.c
otherlibs/win32unix/socketaddr.h
otherlibs/win32unix/sockopt.c
otherlibs/win32unix/stat.c
otherlibs/win32unix/system.c
otherlibs/win32unix/unix.ml
otherlibs/win32unix/unixsupport.c
otherlibs/win32unix/unixsupport.h
otherlibs/win32unix/windbug.c
otherlibs/win32unix/windbug.h
otherlibs/win32unix/windir.c
otherlibs/win32unix/winlist.c
otherlibs/win32unix/winlist.h
otherlibs/win32unix/winwait.c
otherlibs/win32unix/winworker.c
otherlibs/win32unix/winworker.h
otherlibs/win32unix/write.c
parsing/asttypes.mli
parsing/lexer.mli
parsing/lexer.mll
parsing/location.ml
parsing/location.mli
parsing/longident.ml
parsing/longident.mli
parsing/parse.ml
parsing/parse.mli
parsing/parser.mly
parsing/parsetree.mli
parsing/printast.ml
parsing/printast.mli
parsing/syntaxerr.ml
parsing/syntaxerr.mli
stdlib/.depend
stdlib/Compflags
stdlib/Makefile
stdlib/Makefile.nt
stdlib/Makefile.shared
stdlib/StdlibModules
stdlib/arg.ml
stdlib/arg.mli
stdlib/array.ml
stdlib/array.mli
stdlib/arrayLabels.ml
stdlib/arrayLabels.mli
stdlib/buffer.ml
stdlib/buffer.mli
stdlib/callback.ml
stdlib/callback.mli
stdlib/camlinternalLazy.ml
stdlib/camlinternalLazy.mli
stdlib/camlinternalMod.ml
stdlib/camlinternalMod.mli
stdlib/camlinternalOO.ml
stdlib/camlinternalOO.mli
stdlib/char.ml
stdlib/char.mli
stdlib/complex.ml
stdlib/complex.mli
stdlib/digest.ml
stdlib/digest.mli
stdlib/filename.ml
stdlib/filename.mli
stdlib/format.ml
stdlib/format.mli
stdlib/gc.ml
stdlib/gc.mli
stdlib/genlex.ml
stdlib/genlex.mli
stdlib/hashtbl.ml
stdlib/hashtbl.mli
stdlib/header.c
stdlib/headernt.c
stdlib/int32.ml
stdlib/int32.mli
stdlib/int64.ml
stdlib/int64.mli
stdlib/lazy.ml
stdlib/lazy.mli
stdlib/lexing.ml
stdlib/lexing.mli
stdlib/list.ml
stdlib/list.mli
stdlib/listLabels.ml
stdlib/listLabels.mli
stdlib/map.ml
stdlib/map.mli
stdlib/marshal.ml
stdlib/marshal.mli
stdlib/moreLabels.ml
stdlib/moreLabels.mli
stdlib/nativeint.ml
stdlib/nativeint.mli
stdlib/obj.ml
stdlib/obj.mli
stdlib/oo.ml
stdlib/oo.mli
stdlib/parsing.ml
stdlib/parsing.mli
stdlib/pervasives.ml
stdlib/pervasives.mli
stdlib/printexc.ml
stdlib/printexc.mli
stdlib/printf.ml
stdlib/printf.mli
stdlib/queue.ml
stdlib/queue.mli
stdlib/random.ml
stdlib/random.mli
stdlib/scanf.ml
stdlib/scanf.mli
stdlib/set.ml
stdlib/set.mli
stdlib/sort.ml
stdlib/sort.mli
stdlib/stack.ml
stdlib/stack.mli
stdlib/stdLabels.ml
stdlib/stdLabels.mli
stdlib/std_exit.ml
stdlib/stdlib.mllib
stdlib/stream.ml
stdlib/stream.mli
stdlib/string.ml
stdlib/string.mli
stdlib/stringLabels.ml
stdlib/stringLabels.mli
stdlib/sys.mli
stdlib/sys.mlp
stdlib/weak.ml
stdlib/weak.mli
testsuite/Makefile
testsuite/interactive/lib-gc/alloc.ml
testsuite/lib/Makefile
testsuite/lib/testing.ml
testsuite/lib/testing.mli
testsuite/makefiles/Makefile.common
testsuite/makefiles/Makefile.okbad
testsuite/makefiles/Makefile.one
testsuite/makefiles/Makefile.several
testsuite/makefiles/Makefile.toplevel
testsuite/tests/asmcomp/Makefile
testsuite/tests/asmcomp/alpha.S
testsuite/tests/asmcomp/amd64.S
testsuite/tests/asmcomp/arith.cmm
testsuite/tests/asmcomp/arm.S
testsuite/tests/asmcomp/checkbound.cmm
testsuite/tests/asmcomp/fib.cmm
testsuite/tests/asmcomp/hppa.S
testsuite/tests/asmcomp/i386.S
testsuite/tests/asmcomp/i386nt.asm
testsuite/tests/asmcomp/ia64.S
testsuite/tests/asmcomp/integr.cmm
testsuite/tests/asmcomp/lexcmm.mli
testsuite/tests/asmcomp/lexcmm.mll
testsuite/tests/asmcomp/m68k.S
testsuite/tests/asmcomp/main.c
testsuite/tests/asmcomp/main.ml
testsuite/tests/asmcomp/mainarith.c
testsuite/tests/asmcomp/mips.s
testsuite/tests/asmcomp/parsecmm.mly
testsuite/tests/asmcomp/parsecmmaux.ml
testsuite/tests/asmcomp/parsecmmaux.mli
testsuite/tests/asmcomp/power-aix.S
testsuite/tests/asmcomp/power-elf.S
testsuite/tests/asmcomp/power-rhapsody.S
testsuite/tests/asmcomp/quicksort.cmm
testsuite/tests/asmcomp/quicksort2.cmm
testsuite/tests/asmcomp/soli.cmm
testsuite/tests/asmcomp/sparc.S
testsuite/tests/asmcomp/tagged-fib.cmm
testsuite/tests/asmcomp/tagged-integr.cmm
testsuite/tests/asmcomp/tagged-quicksort.cmm
testsuite/tests/asmcomp/tagged-tak.cmm
testsuite/tests/asmcomp/tak.cmm
testsuite/tests/basic-io-2/io.ml
testsuite/tests/basic-more/tformat.ml
testsuite/tests/basic-private/length.ml
testsuite/tests/basic-private/length.mli
testsuite/tests/basic-private/tlength.ml
testsuite/tests/basic/bigints.ml
testsuite/tests/basic/maps.ml
testsuite/tests/basic/sets.ml
testsuite/tests/lib-bigarray/bigarrays.ml
testsuite/tests/lib-bigarray/bigarrays.reference
testsuite/tests/lib-bigarray/fftba.ml
testsuite/tests/lib-dynlink-bytecode/.ignore
testsuite/tests/lib-dynlink-csharp/Makefile
testsuite/tests/lib-dynlink-native/.ignore
testsuite/tests/lib-hashtbl/htbl.ml
testsuite/tests/lib-marshal/intext.ml
testsuite/tests/lib-marshal/intext.reference
testsuite/tests/lib-scanf/.ignore [new file with mode: 0644]
testsuite/tests/lib-scanf/tscanf.ml
testsuite/tests/lib-scanf/tscanf_data [deleted file]
testsuite/tests/lib-threads/testsignal2.runner
testsuite/tests/misc-kb/equations.ml
testsuite/tests/misc-kb/equations.mli
testsuite/tests/misc-kb/kb.ml
testsuite/tests/misc-kb/kb.mli
testsuite/tests/misc-kb/kbmain.ml
testsuite/tests/misc-kb/orderings.ml
testsuite/tests/misc-kb/orderings.mli
testsuite/tests/misc-kb/terms.ml
testsuite/tests/misc-kb/terms.mli
testsuite/tests/misc-unsafe/fft.ml
testsuite/tests/misc-unsafe/quicksort.ml
testsuite/tests/misc-unsafe/soli.ml
testsuite/tests/misc/bdd.ml
testsuite/tests/misc/boyer.ml
testsuite/tests/misc/fib.ml
testsuite/tests/misc/hamming.ml
testsuite/tests/misc/nucleic.ml
testsuite/tests/misc/sieve.ml
testsuite/tests/misc/sorts.ml
testsuite/tests/misc/takc.ml
testsuite/tests/misc/taku.ml
testsuite/tests/misc/weaktest.ml
testsuite/tests/tool-lexyacc/gram_aux.ml
testsuite/tests/tool-lexyacc/grammar.mly
testsuite/tests/tool-lexyacc/input
testsuite/tests/tool-lexyacc/lexgen.ml
testsuite/tests/tool-lexyacc/main.ml
testsuite/tests/tool-lexyacc/output.ml
testsuite/tests/tool-lexyacc/scan_aux.ml
testsuite/tests/tool-lexyacc/scanner.mll
testsuite/tests/tool-lexyacc/syntax.ml
testsuite/tests/tool-ocaml/lib.ml
testsuite/tests/tool-ocaml/t301-object.ml
testsuite/tests/tool-ocamldoc/Makefile
testsuite/tests/tool-ocamldoc/odoc_test.ml
testsuite/tests/typing-gadts/Makefile
testsuite/tests/typing-labels/mixin.ml
testsuite/tests/typing-labels/mixin2.ml
testsuite/tests/typing-labels/mixin3.ml
testsuite/tests/typing-modules/Test.ml
testsuite/tests/typing-modules/Test.ml.principal.reference
testsuite/tests/typing-modules/Test.ml.reference
testsuite/tests/typing-objects/Tests.ml.principal.reference
testsuite/tests/typing-objects/Tests.ml.reference
testsuite/tests/typing-objects/pr5619_bad.ml [new file with mode: 0644]
testsuite/tests/typing-objects/pr5619_bad.ml.principal.reference [new file with mode: 0644]
testsuite/tests/typing-objects/pr5619_bad.ml.reference [new file with mode: 0644]
testsuite/tests/typing-poly/poly.ml
testsuite/tests/typing-poly/poly.ml.principal.reference
testsuite/tests/typing-poly/poly.ml.reference
tools/.depend
tools/.ignore
tools/Makefile
tools/Makefile.nt
tools/Makefile.shared
tools/addlabels.ml
tools/checkstack.c
tools/cmt2annot.ml [new file with mode: 0644]
tools/cvt_emit.mll
tools/depend.ml
tools/depend.mli
tools/dumpobj.ml
tools/lexer299.mll
tools/lexer301.mll
tools/make-package-macosx
tools/objinfo.ml
tools/ocaml-objcopy-macosx
tools/ocaml299to3.ml
tools/ocamlcp.ml
tools/ocamldep.ml
tools/ocamlmklib.mlp
tools/ocamlmktop.ml
tools/ocamlmktop.tpl
tools/ocamloptp.ml
tools/ocamlprof.ml
tools/pprintast.ml [new file with mode: 0644]
tools/primreq.ml
tools/profiling.ml
tools/profiling.mli
tools/read_cmt.ml [new file with mode: 0644]
tools/scrapelabels.ml
tools/setignore
tools/typedtreeIter.ml [new file with mode: 0644]
tools/typedtreeIter.mli [new file with mode: 0644]
tools/untypeast.ml [new file with mode: 0644]
tools/untypeast.mli [new file with mode: 0644]
toplevel/expunge.ml
toplevel/genprintval.ml
toplevel/genprintval.mli
toplevel/opttopdirs.ml
toplevel/opttopdirs.mli
toplevel/opttoploop.ml
toplevel/opttoploop.mli
toplevel/opttopmain.ml
toplevel/opttopmain.mli
toplevel/opttopstart.ml
toplevel/topdirs.ml
toplevel/topdirs.mli
toplevel/toplevellib.mllib
toplevel/toploop.ml
toplevel/toploop.mli
toplevel/topmain.ml
toplevel/topmain.mli
toplevel/topstart.ml
toplevel/trace.ml
toplevel/trace.mli
typing/annot.mli
typing/btype.ml
typing/btype.mli
typing/cmi_format.ml [new file with mode: 0644]
typing/cmi_format.mli [new file with mode: 0644]
typing/cmt_format.ml [new file with mode: 0644]
typing/cmt_format.mli [new file with mode: 0644]
typing/ctype.ml
typing/ctype.mli
typing/datarepr.ml
typing/datarepr.mli
typing/env.ml
typing/env.mli
typing/ident.ml
typing/ident.mli
typing/includeclass.ml
typing/includeclass.mli
typing/includecore.ml
typing/includecore.mli
typing/includemod.ml
typing/includemod.mli
typing/mtype.ml
typing/mtype.mli
typing/oprint.ml
typing/oprint.mli
typing/outcometree.mli
typing/parmatch.ml
typing/parmatch.mli
typing/path.ml
typing/path.mli
typing/predef.ml
typing/predef.mli
typing/primitive.ml
typing/primitive.mli
typing/printtyp.ml
typing/printtyp.mli
typing/printtyped.ml [new file with mode: 0644]
typing/printtyped.mli [new file with mode: 0644]
typing/stypes.ml
typing/stypes.mli
typing/subst.ml
typing/subst.mli
typing/typeclass.ml
typing/typeclass.mli
typing/typecore.ml
typing/typecore.mli
typing/typedecl.ml
typing/typedecl.mli
typing/typedtree.ml
typing/typedtree.mli
typing/typemod.ml
typing/typemod.mli
typing/types.ml
typing/types.mli
typing/typetexp.ml
typing/typetexp.mli
utils/ccomp.ml
utils/ccomp.mli
utils/clflags.ml
utils/clflags.mli
utils/config.mlbuild
utils/config.mli
utils/config.mlp
utils/consistbl.ml
utils/consistbl.mli
utils/misc.ml
utils/misc.mli
utils/tbl.ml
utils/tbl.mli
utils/terminfo.ml
utils/terminfo.mli
utils/warnings.ml
utils/warnings.mli
yacc/.ignore
yacc/Makefile
yacc/Makefile.nt
yacc/closure.c
yacc/defs.h
yacc/error.c
yacc/lalr.c
yacc/lr0.c
yacc/main.c
yacc/mkpar.c
yacc/output.c
yacc/reader.c
yacc/skeleton.c
yacc/symtab.c
yacc/verbose.c
yacc/warshall.c

diff --git a/.depend b/.depend
index b64c1e797c52efe8efaf123a30aa7639edfcb17a..8eac9ddd41800d13c97213f2e76521126b745405 100644 (file)
--- a/.depend
+++ b/.depend
@@ -24,12 +24,13 @@ utils/terminfo.cmo : utils/terminfo.cmi
 utils/terminfo.cmx : utils/terminfo.cmi
 utils/warnings.cmo : utils/warnings.cmi
 utils/warnings.cmx : utils/warnings.cmi
-parsing/asttypes.cmi :
+parsing/asttypes.cmi : parsing/location.cmi
 parsing/lexer.cmi : parsing/parser.cmi parsing/location.cmi
 parsing/location.cmi : utils/warnings.cmi
 parsing/longident.cmi :
 parsing/parse.cmi : parsing/parsetree.cmi
-parsing/parser.cmi : parsing/parsetree.cmi
+parsing/parser.cmi : parsing/parsetree.cmi parsing/longident.cmi \
+    parsing/location.cmi
 parsing/parsetree.cmi : parsing/longident.cmi parsing/location.cmi \
     parsing/asttypes.cmi
 parsing/printast.cmi : parsing/parsetree.cmi
@@ -62,15 +63,18 @@ parsing/syntaxerr.cmo : parsing/location.cmi parsing/syntaxerr.cmi
 parsing/syntaxerr.cmx : parsing/location.cmx parsing/syntaxerr.cmi
 typing/annot.cmi : parsing/location.cmi
 typing/btype.cmi : typing/types.cmi typing/path.cmi parsing/asttypes.cmi
+typing/cmi_format.cmi : typing/types.cmi
+typing/cmt_format.cmi : typing/types.cmi typing/typedtree.cmi \
+    parsing/location.cmi typing/env.cmi typing/cmi_format.cmi
 typing/ctype.cmi : typing/types.cmi typing/path.cmi parsing/longident.cmi \
     typing/ident.cmi typing/env.cmi parsing/asttypes.cmi
-typing/datarepr.cmi : typing/types.cmi typing/path.cmi parsing/asttypes.cmi
+typing/datarepr.cmi : typing/types.cmi typing/path.cmi typing/ident.cmi \
+    parsing/asttypes.cmi
 typing/env.cmi : utils/warnings.cmi typing/types.cmi typing/path.cmi \
     parsing/longident.cmi parsing/location.cmi typing/ident.cmi \
     utils/consistbl.cmi typing/annot.cmi
 typing/ident.cmi :
-typing/includeclass.cmi : typing/types.cmi typing/typedtree.cmi \
-    typing/env.cmi typing/ctype.cmi
+typing/includeclass.cmi : typing/types.cmi typing/env.cmi typing/ctype.cmi
 typing/includecore.cmi : typing/types.cmi typing/typedtree.cmi \
     typing/ident.cmi typing/env.cmi
 typing/includemod.cmi : typing/types.cmi typing/typedtree.cmi \
@@ -80,13 +84,15 @@ typing/mtype.cmi : typing/types.cmi typing/path.cmi typing/ident.cmi \
     typing/env.cmi
 typing/oprint.cmi : typing/outcometree.cmi
 typing/outcometree.cmi : parsing/asttypes.cmi
-typing/parmatch.cmi : typing/types.cmi typing/typedtree.cmi \
-    parsing/parsetree.cmi parsing/location.cmi typing/env.cmi
+typing/parmatch.cmi : typing/types.cmi typing/typedtree.cmi typing/path.cmi \
+    parsing/parsetree.cmi parsing/longident.cmi parsing/location.cmi \
+    typing/env.cmi parsing/asttypes.cmi
 typing/path.cmi : typing/ident.cmi
 typing/predef.cmi : typing/types.cmi typing/path.cmi typing/ident.cmi
 typing/primitive.cmi :
 typing/printtyp.cmi : typing/types.cmi typing/path.cmi \
     typing/outcometree.cmi parsing/longident.cmi typing/ident.cmi
+typing/printtyped.cmi : typing/typedtree.cmi
 typing/stypes.cmi : typing/typedtree.cmi parsing/location.cmi \
     typing/annot.cmi
 typing/subst.cmi : typing/types.cmi typing/path.cmi typing/ident.cmi
@@ -96,23 +102,36 @@ typing/typeclass.cmi : typing/types.cmi typing/typedtree.cmi \
 typing/typecore.cmi : typing/types.cmi typing/typedtree.cmi typing/path.cmi \
     parsing/parsetree.cmi parsing/longident.cmi parsing/location.cmi \
     typing/ident.cmi typing/env.cmi parsing/asttypes.cmi typing/annot.cmi
-typing/typedecl.cmi : typing/types.cmi typing/path.cmi parsing/parsetree.cmi \
-    parsing/longident.cmi parsing/location.cmi typing/includecore.cmi \
-    typing/ident.cmi typing/env.cmi
+typing/typedecl.cmi : typing/types.cmi typing/typedtree.cmi typing/path.cmi \
+    parsing/parsetree.cmi parsing/longident.cmi parsing/location.cmi \
+    typing/includecore.cmi typing/ident.cmi typing/env.cmi \
+    parsing/asttypes.cmi
 typing/typedtree.cmi : typing/types.cmi typing/primitive.cmi typing/path.cmi \
-    parsing/location.cmi typing/ident.cmi typing/env.cmi parsing/asttypes.cmi
+    parsing/longident.cmi parsing/location.cmi typing/ident.cmi \
+    typing/env.cmi parsing/asttypes.cmi
 typing/typemod.cmi : typing/types.cmi typing/typedtree.cmi \
     parsing/parsetree.cmi parsing/longident.cmi parsing/location.cmi \
     typing/includemod.cmi typing/ident.cmi typing/env.cmi
 typing/types.cmi : typing/primitive.cmi typing/path.cmi \
     parsing/longident.cmi parsing/location.cmi typing/ident.cmi \
     parsing/asttypes.cmi
-typing/typetexp.cmi : typing/types.cmi typing/path.cmi parsing/parsetree.cmi \
-    parsing/longident.cmi parsing/location.cmi typing/env.cmi
+typing/typetexp.cmi : typing/types.cmi typing/typedtree.cmi typing/path.cmi \
+    parsing/parsetree.cmi parsing/longident.cmi parsing/location.cmi \
+    typing/env.cmi parsing/asttypes.cmi
 typing/btype.cmo : typing/types.cmi typing/path.cmi utils/misc.cmi \
     typing/btype.cmi
 typing/btype.cmx : typing/types.cmx typing/path.cmx utils/misc.cmx \
     typing/btype.cmi
+typing/cmi_format.cmo : typing/types.cmi utils/misc.cmi parsing/location.cmi \
+    utils/config.cmi typing/cmi_format.cmi
+typing/cmi_format.cmx : typing/types.cmx utils/misc.cmx parsing/location.cmx \
+    utils/config.cmx typing/cmi_format.cmi
+typing/cmt_format.cmo : typing/types.cmi typing/typedtree.cmi utils/misc.cmi \
+    parsing/location.cmi parsing/lexer.cmi typing/env.cmi utils/config.cmi \
+    typing/cmi_format.cmi utils/clflags.cmi typing/cmt_format.cmi
+typing/cmt_format.cmx : typing/types.cmx typing/typedtree.cmx utils/misc.cmx \
+    parsing/location.cmx parsing/lexer.cmx typing/env.cmx utils/config.cmx \
+    typing/cmi_format.cmx utils/clflags.cmx typing/cmt_format.cmi
 typing/ctype.cmo : typing/types.cmi typing/subst.cmi typing/path.cmi \
     utils/misc.cmi parsing/longident.cmi parsing/location.cmi \
     typing/ident.cmi typing/env.cmi utils/clflags.cmi typing/btype.cmi \
@@ -122,21 +141,23 @@ typing/ctype.cmx : typing/types.cmx typing/subst.cmx typing/path.cmx \
     typing/ident.cmx typing/env.cmx utils/clflags.cmx typing/btype.cmx \
     parsing/asttypes.cmi typing/ctype.cmi
 typing/datarepr.cmo : typing/types.cmi typing/predef.cmi utils/misc.cmi \
-    typing/btype.cmi parsing/asttypes.cmi typing/datarepr.cmi
+    typing/ident.cmi typing/btype.cmi parsing/asttypes.cmi \
+    typing/datarepr.cmi
 typing/datarepr.cmx : typing/types.cmx typing/predef.cmx utils/misc.cmx \
-    typing/btype.cmx parsing/asttypes.cmi typing/datarepr.cmi
+    typing/ident.cmx typing/btype.cmx parsing/asttypes.cmi \
+    typing/datarepr.cmi
 typing/env.cmo : utils/warnings.cmi typing/types.cmi utils/tbl.cmi \
     typing/subst.cmi typing/predef.cmi typing/path.cmi utils/misc.cmi \
     parsing/longident.cmi parsing/location.cmi typing/ident.cmi \
     typing/datarepr.cmi utils/consistbl.cmi utils/config.cmi \
-    utils/clflags.cmi typing/btype.cmi parsing/asttypes.cmi typing/annot.cmi \
-    typing/env.cmi
+    typing/cmi_format.cmi utils/clflags.cmi typing/btype.cmi \
+    parsing/asttypes.cmi typing/annot.cmi typing/env.cmi
 typing/env.cmx : utils/warnings.cmx typing/types.cmx utils/tbl.cmx \
     typing/subst.cmx typing/predef.cmx typing/path.cmx utils/misc.cmx \
     parsing/longident.cmx parsing/location.cmx typing/ident.cmx \
     typing/datarepr.cmx utils/consistbl.cmx utils/config.cmx \
-    utils/clflags.cmx typing/btype.cmx parsing/asttypes.cmi typing/annot.cmi \
-    typing/env.cmi
+    typing/cmi_format.cmx utils/clflags.cmx typing/btype.cmx \
+    parsing/asttypes.cmi typing/annot.cmi typing/env.cmi
 typing/ident.cmo : typing/ident.cmi
 typing/ident.cmx : typing/ident.cmi
 typing/includeclass.cmo : typing/types.cmi typing/printtyp.cmi \
@@ -201,6 +222,12 @@ typing/printtyp.cmx : typing/types.cmx typing/primitive.cmx \
     typing/oprint.cmx utils/misc.cmx parsing/longident.cmx typing/ident.cmx \
     typing/env.cmx typing/ctype.cmx utils/clflags.cmx typing/btype.cmx \
     parsing/asttypes.cmi typing/printtyp.cmi
+typing/printtyped.cmo : typing/typedtree.cmi typing/path.cmi \
+    parsing/longident.cmi parsing/location.cmi typing/ident.cmi \
+    parsing/asttypes.cmi typing/printtyped.cmi
+typing/printtyped.cmx : typing/typedtree.cmx typing/path.cmx \
+    parsing/longident.cmx parsing/location.cmx typing/ident.cmx \
+    parsing/asttypes.cmi typing/printtyped.cmi
 typing/stypes.cmo : typing/typedtree.cmi typing/printtyp.cmi \
     parsing/location.cmi utils/clflags.cmi typing/annot.cmi typing/stypes.cmi
 typing/stypes.cmx : typing/typedtree.cmx typing/printtyp.cmx \
@@ -217,32 +244,34 @@ typing/typeclass.cmo : utils/warnings.cmi typing/typetexp.cmi \
     typing/printtyp.cmi typing/predef.cmi typing/path.cmi \
     parsing/parsetree.cmi typing/parmatch.cmi utils/misc.cmi \
     parsing/longident.cmi parsing/location.cmi typing/includeclass.cmi \
-    typing/ident.cmi typing/env.cmi typing/ctype.cmi utils/clflags.cmi \
-    typing/btype.cmi parsing/asttypes.cmi typing/typeclass.cmi
+    typing/ident.cmi typing/env.cmi typing/ctype.cmi typing/cmt_format.cmi \
+    utils/clflags.cmi typing/btype.cmi parsing/asttypes.cmi \
+    typing/typeclass.cmi
 typing/typeclass.cmx : utils/warnings.cmx typing/typetexp.cmx \
     typing/types.cmx typing/typedtree.cmx typing/typedecl.cmx \
     typing/typecore.cmx typing/subst.cmx typing/stypes.cmx \
     typing/printtyp.cmx typing/predef.cmx typing/path.cmx \
     parsing/parsetree.cmi typing/parmatch.cmx utils/misc.cmx \
     parsing/longident.cmx parsing/location.cmx typing/includeclass.cmx \
-    typing/ident.cmx typing/env.cmx typing/ctype.cmx utils/clflags.cmx \
-    typing/btype.cmx parsing/asttypes.cmi typing/typeclass.cmi
+    typing/ident.cmx typing/env.cmx typing/ctype.cmx typing/cmt_format.cmx \
+    utils/clflags.cmx typing/btype.cmx parsing/asttypes.cmi \
+    typing/typeclass.cmi
 typing/typecore.cmo : utils/warnings.cmi typing/typetexp.cmi \
     typing/types.cmi typing/typedtree.cmi typing/subst.cmi typing/stypes.cmi \
     typing/printtyp.cmi typing/primitive.cmi typing/predef.cmi \
     typing/path.cmi parsing/parsetree.cmi typing/parmatch.cmi \
     typing/oprint.cmi utils/misc.cmi parsing/longident.cmi \
     parsing/location.cmi typing/ident.cmi typing/env.cmi typing/ctype.cmi \
-    utils/clflags.cmi typing/btype.cmi parsing/asttypes.cmi typing/annot.cmi \
-    typing/typecore.cmi
+    typing/cmt_format.cmi utils/clflags.cmi typing/btype.cmi \
+    parsing/asttypes.cmi typing/annot.cmi typing/typecore.cmi
 typing/typecore.cmx : utils/warnings.cmx typing/typetexp.cmx \
     typing/types.cmx typing/typedtree.cmx typing/subst.cmx typing/stypes.cmx \
     typing/printtyp.cmx typing/primitive.cmx typing/predef.cmx \
     typing/path.cmx parsing/parsetree.cmi typing/parmatch.cmx \
     typing/oprint.cmx utils/misc.cmx parsing/longident.cmx \
     parsing/location.cmx typing/ident.cmx typing/env.cmx typing/ctype.cmx \
-    utils/clflags.cmx typing/btype.cmx parsing/asttypes.cmi typing/annot.cmi \
-    typing/typecore.cmi
+    typing/cmt_format.cmx utils/clflags.cmx typing/btype.cmx \
+    parsing/asttypes.cmi typing/annot.cmi typing/typecore.cmi
 typing/typedecl.cmo : utils/warnings.cmi typing/typetexp.cmi \
     typing/types.cmi typing/typedtree.cmi typing/subst.cmi \
     typing/printtyp.cmi typing/primitive.cmi typing/predef.cmi \
@@ -260,43 +289,45 @@ typing/typedecl.cmx : utils/warnings.cmx typing/typetexp.cmx \
     utils/clflags.cmx typing/btype.cmx parsing/asttypes.cmi \
     typing/typedecl.cmi
 typing/typedtree.cmo : typing/types.cmi typing/primitive.cmi typing/path.cmi \
-    utils/misc.cmi parsing/location.cmi typing/ident.cmi typing/env.cmi \
-    parsing/asttypes.cmi typing/typedtree.cmi
+    utils/misc.cmi parsing/longident.cmi parsing/location.cmi \
+    typing/ident.cmi typing/env.cmi parsing/asttypes.cmi typing/typedtree.cmi
 typing/typedtree.cmx : typing/types.cmx typing/primitive.cmx typing/path.cmx \
-    utils/misc.cmx parsing/location.cmx typing/ident.cmx typing/env.cmx \
-    parsing/asttypes.cmi typing/typedtree.cmi
+    utils/misc.cmx parsing/longident.cmx parsing/location.cmx \
+    typing/ident.cmx typing/env.cmx parsing/asttypes.cmi typing/typedtree.cmi
 typing/typemod.cmo : utils/warnings.cmi typing/typetexp.cmi typing/types.cmi \
     typing/typedtree.cmi typing/typedecl.cmi typing/typecore.cmi \
     typing/typeclass.cmi typing/subst.cmi typing/stypes.cmi \
     typing/printtyp.cmi typing/path.cmi parsing/parsetree.cmi \
     typing/mtype.cmi utils/misc.cmi parsing/longident.cmi \
     parsing/location.cmi typing/includemod.cmi typing/ident.cmi \
-    typing/env.cmi typing/ctype.cmi utils/config.cmi utils/clflags.cmi \
-    typing/btype.cmi parsing/asttypes.cmi typing/annot.cmi typing/typemod.cmi
+    typing/env.cmi typing/ctype.cmi utils/config.cmi typing/cmt_format.cmi \
+    utils/clflags.cmi typing/btype.cmi parsing/asttypes.cmi typing/annot.cmi \
+    typing/typemod.cmi
 typing/typemod.cmx : utils/warnings.cmx typing/typetexp.cmx typing/types.cmx \
     typing/typedtree.cmx typing/typedecl.cmx typing/typecore.cmx \
     typing/typeclass.cmx typing/subst.cmx typing/stypes.cmx \
     typing/printtyp.cmx typing/path.cmx parsing/parsetree.cmi \
     typing/mtype.cmx utils/misc.cmx parsing/longident.cmx \
     parsing/location.cmx typing/includemod.cmx typing/ident.cmx \
-    typing/env.cmx typing/ctype.cmx utils/config.cmx utils/clflags.cmx \
-    typing/btype.cmx parsing/asttypes.cmi typing/annot.cmi typing/typemod.cmi
+    typing/env.cmx typing/ctype.cmx utils/config.cmx typing/cmt_format.cmx \
+    utils/clflags.cmx typing/btype.cmx parsing/asttypes.cmi typing/annot.cmi \
+    typing/typemod.cmi
 typing/types.cmo : typing/primitive.cmi typing/path.cmi utils/misc.cmi \
     parsing/longident.cmi parsing/location.cmi typing/ident.cmi \
     parsing/asttypes.cmi typing/types.cmi
 typing/types.cmx : typing/primitive.cmx typing/path.cmx utils/misc.cmx \
     parsing/longident.cmx parsing/location.cmx typing/ident.cmx \
     parsing/asttypes.cmi typing/types.cmi
-typing/typetexp.cmo : utils/warnings.cmi typing/types.cmi utils/tbl.cmi \
-    typing/printtyp.cmi typing/path.cmi parsing/parsetree.cmi utils/misc.cmi \
-    parsing/longident.cmi parsing/location.cmi typing/env.cmi \
-    typing/ctype.cmi utils/clflags.cmi typing/btype.cmi parsing/asttypes.cmi \
-    typing/typetexp.cmi
-typing/typetexp.cmx : utils/warnings.cmx typing/types.cmx utils/tbl.cmx \
-    typing/printtyp.cmx typing/path.cmx parsing/parsetree.cmi utils/misc.cmx \
-    parsing/longident.cmx parsing/location.cmx typing/env.cmx \
-    typing/ctype.cmx utils/clflags.cmx typing/btype.cmx parsing/asttypes.cmi \
-    typing/typetexp.cmi
+typing/typetexp.cmo : utils/warnings.cmi typing/types.cmi \
+    typing/typedtree.cmi utils/tbl.cmi typing/printtyp.cmi typing/path.cmi \
+    parsing/parsetree.cmi utils/misc.cmi parsing/longident.cmi \
+    parsing/location.cmi typing/env.cmi typing/ctype.cmi utils/clflags.cmi \
+    typing/btype.cmi parsing/asttypes.cmi typing/typetexp.cmi
+typing/typetexp.cmx : utils/warnings.cmx typing/types.cmx \
+    typing/typedtree.cmx utils/tbl.cmx typing/printtyp.cmx typing/path.cmx \
+    parsing/parsetree.cmi utils/misc.cmx parsing/longident.cmx \
+    parsing/location.cmx typing/env.cmx typing/ctype.cmx utils/clflags.cmx \
+    typing/btype.cmx parsing/asttypes.cmi typing/typetexp.cmi
 bytecomp/bytegen.cmi : bytecomp/lambda.cmi bytecomp/instruct.cmi
 bytecomp/bytelibrarian.cmi :
 bytecomp/bytelink.cmi : bytecomp/symtable.cmi bytecomp/cmo_format.cmi
@@ -457,15 +488,17 @@ bytecomp/translclass.cmx : typing/types.cmx bytecomp/typeopt.cmx \
 bytecomp/translcore.cmo : typing/types.cmi bytecomp/typeopt.cmi \
     typing/typedtree.cmi bytecomp/translobj.cmi typing/primitive.cmi \
     typing/predef.cmi typing/path.cmi typing/parmatch.cmi utils/misc.cmi \
-    bytecomp/matching.cmi parsing/location.cmi bytecomp/lambda.cmi \
-    typing/ident.cmi typing/env.cmi utils/config.cmi utils/clflags.cmi \
-    typing/btype.cmi parsing/asttypes.cmi bytecomp/translcore.cmi
+    bytecomp/matching.cmi parsing/longident.cmi parsing/location.cmi \
+    bytecomp/lambda.cmi typing/ident.cmi typing/env.cmi utils/config.cmi \
+    utils/clflags.cmi typing/btype.cmi parsing/asttypes.cmi \
+    bytecomp/translcore.cmi
 bytecomp/translcore.cmx : typing/types.cmx bytecomp/typeopt.cmx \
     typing/typedtree.cmx bytecomp/translobj.cmx typing/primitive.cmx \
     typing/predef.cmx typing/path.cmx typing/parmatch.cmx utils/misc.cmx \
-    bytecomp/matching.cmx parsing/location.cmx bytecomp/lambda.cmx \
-    typing/ident.cmx typing/env.cmx utils/config.cmx utils/clflags.cmx \
-    typing/btype.cmx parsing/asttypes.cmi bytecomp/translcore.cmi
+    bytecomp/matching.cmx parsing/longident.cmx parsing/location.cmx \
+    bytecomp/lambda.cmx typing/ident.cmx typing/env.cmx utils/config.cmx \
+    utils/clflags.cmx typing/btype.cmx parsing/asttypes.cmi \
+    bytecomp/translcore.cmi
 bytecomp/translmod.cmo : typing/types.cmi typing/typedtree.cmi \
     bytecomp/translobj.cmi bytecomp/translcore.cmi bytecomp/translclass.cmi \
     typing/printtyp.cmi typing/primitive.cmi typing/predef.cmi \
@@ -534,8 +567,8 @@ asmcomp/selectgen.cmi : utils/tbl.cmi asmcomp/reg.cmi asmcomp/mach.cmi \
 asmcomp/selection.cmi : asmcomp/mach.cmi asmcomp/cmm.cmi
 asmcomp/spill.cmi : asmcomp/mach.cmi
 asmcomp/split.cmi : asmcomp/mach.cmi
-asmcomp/arch.cmo :
-asmcomp/arch.cmx :
+asmcomp/arch.cmo : utils/misc.cmi utils/config.cmi
+asmcomp/arch.cmx : utils/misc.cmx utils/config.cmx
 asmcomp/asmgen.cmo : bytecomp/translmod.cmi asmcomp/split.cmi \
     asmcomp/spill.cmi asmcomp/selection.cmi asmcomp/scheduling.cmi \
     asmcomp/reload.cmi asmcomp/reg.cmi asmcomp/proc.cmi asmcomp/printmach.cmi \
@@ -639,13 +672,15 @@ asmcomp/debuginfo.cmo : parsing/location.cmi bytecomp/lambda.cmi \
 asmcomp/debuginfo.cmx : parsing/location.cmx bytecomp/lambda.cmx \
     asmcomp/debuginfo.cmi
 asmcomp/emit.cmo : asmcomp/reg.cmi asmcomp/proc.cmi utils/misc.cmi \
-    asmcomp/mach.cmi asmcomp/linearize.cmi asmcomp/emitaux.cmi \
-    asmcomp/debuginfo.cmi utils/config.cmi asmcomp/compilenv.cmi \
-    asmcomp/cmm.cmi utils/clflags.cmi asmcomp/arch.cmo asmcomp/emit.cmi
+    asmcomp/mach.cmi parsing/location.cmi asmcomp/linearize.cmi \
+    asmcomp/emitaux.cmi asmcomp/debuginfo.cmi utils/config.cmi \
+    asmcomp/compilenv.cmi asmcomp/cmm.cmi utils/clflags.cmi asmcomp/arch.cmo \
+    asmcomp/emit.cmi
 asmcomp/emit.cmx : asmcomp/reg.cmx asmcomp/proc.cmx utils/misc.cmx \
-    asmcomp/mach.cmx asmcomp/linearize.cmx asmcomp/emitaux.cmx \
-    asmcomp/debuginfo.cmx utils/config.cmx asmcomp/compilenv.cmx \
-    asmcomp/cmm.cmx utils/clflags.cmx asmcomp/arch.cmx asmcomp/emit.cmi
+    asmcomp/mach.cmx parsing/location.cmx asmcomp/linearize.cmx \
+    asmcomp/emitaux.cmx asmcomp/debuginfo.cmx utils/config.cmx \
+    asmcomp/compilenv.cmx asmcomp/cmm.cmx utils/clflags.cmx asmcomp/arch.cmx \
+    asmcomp/emit.cmi
 asmcomp/emitaux.cmo : asmcomp/reg.cmi asmcomp/linearize.cmi \
     asmcomp/debuginfo.cmi utils/config.cmi asmcomp/cmm.cmi utils/clflags.cmi \
     asmcomp/arch.cmo asmcomp/emitaux.cmi
@@ -701,9 +736,9 @@ asmcomp/proc.cmx : asmcomp/reg.cmx utils/misc.cmx asmcomp/mach.cmx \
 asmcomp/reg.cmo : asmcomp/cmm.cmi asmcomp/reg.cmi
 asmcomp/reg.cmx : asmcomp/cmm.cmx asmcomp/reg.cmi
 asmcomp/reload.cmo : asmcomp/reloadgen.cmi asmcomp/reg.cmi asmcomp/mach.cmi \
-    asmcomp/cmm.cmi utils/clflags.cmi asmcomp/arch.cmo asmcomp/reload.cmi
+    asmcomp/cmm.cmi asmcomp/arch.cmo asmcomp/reload.cmi
 asmcomp/reload.cmx : asmcomp/reloadgen.cmx asmcomp/reg.cmx asmcomp/mach.cmx \
-    asmcomp/cmm.cmx utils/clflags.cmx asmcomp/arch.cmx asmcomp/reload.cmi
+    asmcomp/cmm.cmx asmcomp/arch.cmx asmcomp/reload.cmi
 asmcomp/reloadgen.cmo : asmcomp/reg.cmi utils/misc.cmi asmcomp/mach.cmi \
     asmcomp/reloadgen.cmi
 asmcomp/reloadgen.cmx : asmcomp/reg.cmx utils/misc.cmx asmcomp/mach.cmx \
@@ -726,10 +761,10 @@ asmcomp/selectgen.cmx : utils/tbl.cmx bytecomp/simplif.cmx asmcomp/reg.cmx \
     asmcomp/selectgen.cmi
 asmcomp/selection.cmo : asmcomp/selectgen.cmi asmcomp/reg.cmi \
     asmcomp/proc.cmi utils/misc.cmi asmcomp/mach.cmi asmcomp/cmm.cmi \
-    utils/clflags.cmi asmcomp/arch.cmo asmcomp/selection.cmi
+    asmcomp/arch.cmo asmcomp/selection.cmi
 asmcomp/selection.cmx : asmcomp/selectgen.cmx asmcomp/reg.cmx \
     asmcomp/proc.cmx utils/misc.cmx asmcomp/mach.cmx asmcomp/cmm.cmx \
-    utils/clflags.cmx asmcomp/arch.cmx asmcomp/selection.cmi
+    asmcomp/arch.cmx asmcomp/selection.cmi
 asmcomp/spill.cmo : asmcomp/reg.cmi asmcomp/proc.cmi utils/misc.cmi \
     asmcomp/mach.cmi asmcomp/spill.cmi
 asmcomp/spill.cmx : asmcomp/reg.cmx asmcomp/proc.cmx utils/misc.cmx \
@@ -766,7 +801,7 @@ driver/errors.cmo : utils/warnings.cmi typing/typetexp.cmi \
     bytecomp/translclass.cmi parsing/syntaxerr.cmi bytecomp/symtable.cmi \
     driver/pparse.cmi parsing/location.cmi parsing/lexer.cmi \
     typing/includemod.cmi typing/env.cmi typing/ctype.cmi \
-    bytecomp/bytepackager.cmi bytecomp/bytelink.cmi \
+    typing/cmi_format.cmi bytecomp/bytepackager.cmi bytecomp/bytelink.cmi \
     bytecomp/bytelibrarian.cmi driver/errors.cmi
 driver/errors.cmx : utils/warnings.cmx typing/typetexp.cmx \
     typing/typemod.cmx typing/typedecl.cmx typing/typecore.cmx \
@@ -774,7 +809,7 @@ driver/errors.cmx : utils/warnings.cmx typing/typetexp.cmx \
     bytecomp/translclass.cmx parsing/syntaxerr.cmx bytecomp/symtable.cmx \
     driver/pparse.cmx parsing/location.cmx parsing/lexer.cmx \
     typing/includemod.cmx typing/env.cmx typing/ctype.cmx \
-    bytecomp/bytepackager.cmx bytecomp/bytelink.cmx \
+    typing/cmi_format.cmx bytecomp/bytepackager.cmx bytecomp/bytelink.cmx \
     bytecomp/bytelibrarian.cmx driver/errors.cmi
 driver/main.cmo : utils/warnings.cmi utils/misc.cmi driver/main_args.cmi \
     parsing/location.cmi driver/errors.cmi utils/config.cmi \
@@ -806,16 +841,16 @@ driver/opterrors.cmo : utils/warnings.cmi typing/typetexp.cmi \
     bytecomp/translclass.cmi parsing/syntaxerr.cmi driver/pparse.cmi \
     parsing/location.cmi parsing/lexer.cmi typing/includemod.cmi \
     typing/env.cmi typing/ctype.cmi asmcomp/compilenv.cmi \
-    asmcomp/asmpackager.cmi asmcomp/asmlink.cmi asmcomp/asmlibrarian.cmi \
-    asmcomp/asmgen.cmi driver/opterrors.cmi
+    typing/cmi_format.cmi asmcomp/asmpackager.cmi asmcomp/asmlink.cmi \
+    asmcomp/asmlibrarian.cmi asmcomp/asmgen.cmi driver/opterrors.cmi
 driver/opterrors.cmx : utils/warnings.cmx typing/typetexp.cmx \
     typing/typemod.cmx typing/typedecl.cmx typing/typecore.cmx \
     typing/typeclass.cmx bytecomp/translmod.cmx bytecomp/translcore.cmx \
     bytecomp/translclass.cmx parsing/syntaxerr.cmx driver/pparse.cmx \
     parsing/location.cmx parsing/lexer.cmx typing/includemod.cmx \
     typing/env.cmx typing/ctype.cmx asmcomp/compilenv.cmx \
-    asmcomp/asmpackager.cmx asmcomp/asmlink.cmx asmcomp/asmlibrarian.cmx \
-    asmcomp/asmgen.cmx driver/opterrors.cmi
+    typing/cmi_format.cmx asmcomp/asmpackager.cmx asmcomp/asmlink.cmx \
+    asmcomp/asmlibrarian.cmx asmcomp/asmgen.cmx driver/opterrors.cmi
 driver/optmain.cmo : utils/warnings.cmi asmcomp/printmach.cmi \
     driver/opterrors.cmi driver/optcompile.cmi utils/misc.cmi \
     driver/main_args.cmi parsing/location.cmi utils/config.cmi \
@@ -917,9 +952,9 @@ toplevel/toploop.cmo : utils/warnings.cmi typing/types.cmi \
     parsing/printast.cmi typing/predef.cmi typing/path.cmi \
     parsing/parsetree.cmi parsing/parse.cmi typing/outcometree.cmi \
     typing/oprint.cmi utils/misc.cmi bytecomp/meta.cmi parsing/longident.cmi \
-    parsing/location.cmi parsing/lexer.cmi typing/ident.cmi \
-    toplevel/genprintval.cmi driver/errors.cmi typing/env.cmi \
-    bytecomp/emitcode.cmi bytecomp/dll.cmi utils/consistbl.cmi \
+    parsing/location.cmi parsing/lexer.cmi typing/includemod.cmi \
+    typing/ident.cmi toplevel/genprintval.cmi driver/errors.cmi \
+    typing/env.cmi bytecomp/emitcode.cmi bytecomp/dll.cmi utils/consistbl.cmi \
     utils/config.cmi driver/compile.cmi utils/clflags.cmi \
     bytecomp/bytegen.cmi typing/btype.cmi toplevel/toploop.cmi
 toplevel/toploop.cmx : utils/warnings.cmx typing/types.cmx \
@@ -929,9 +964,9 @@ toplevel/toploop.cmx : utils/warnings.cmx typing/types.cmx \
     parsing/printast.cmx typing/predef.cmx typing/path.cmx \
     parsing/parsetree.cmi parsing/parse.cmx typing/outcometree.cmi \
     typing/oprint.cmx utils/misc.cmx bytecomp/meta.cmx parsing/longident.cmx \
-    parsing/location.cmx parsing/lexer.cmx typing/ident.cmx \
-    toplevel/genprintval.cmx driver/errors.cmx typing/env.cmx \
-    bytecomp/emitcode.cmx bytecomp/dll.cmx utils/consistbl.cmx \
+    parsing/location.cmx parsing/lexer.cmx typing/includemod.cmx \
+    typing/ident.cmx toplevel/genprintval.cmx driver/errors.cmx \
+    typing/env.cmx bytecomp/emitcode.cmx bytecomp/dll.cmx utils/consistbl.cmx \
     utils/config.cmx driver/compile.cmx utils/clflags.cmx \
     bytecomp/bytegen.cmx typing/btype.cmx toplevel/toploop.cmi
 toplevel/topmain.cmo : utils/warnings.cmi toplevel/toploop.cmi \
diff --git a/Changes b/Changes
index 90030e8072fa02899d0710b9fc397a1388cf4b0e..8f708f96e52ab05063df79e8c2716b9db51ee2ed 100644 (file)
--- a/Changes
+++ b/Changes
@@ -6,9 +6,8 @@ OCaml 4.00.0:
 - The official name of the language is now OCaml.
 
 Language features:
-- Added Generalized Abstract Data Types (GADTs) to the language. See
-  testsuite/tests/typing-gadts for the syntax and some examples of
-  use. Please use -principal for testing.
+- Added Generalized Abstract Data Types (GADTs) to the language.
+  See chapter "Language extensions" of the reference manual for documentation.
 - It is now possible to omit type annotations when packing and unpacking
   first-class modules. The type-checker attempts to infer it from the context.
   Using the -principal option guarantees forward compatibility.
@@ -21,6 +20,11 @@ Compilers:
 * Warning 28 is now enabled by default.
 - New option -absname to use absolute paths in error messages
 - Optimize away compile-time beta-redexes, e.g. (fun x y -> e) a b.
+- Added option -bin-annot to dump the AST with type annotations.
+- Added lots of new warnings about unused variables, opens, fields,
+  constructors, etc.
+* New meaning for warning 7: it is now triggered when a method is overridden
+  with the "method" keyword.  Use "method!" to avoid the warning.
 
 Native-code compiler:
 - Optimized handling of partially-applied functions (PR#5287)
@@ -38,6 +42,17 @@ Native-code compiler:
   and 64-bits only. (PR#5487)
 - New tool: ocamloptp, the equivalent of ocamlcp for the native-code compiler.
 
+OCamldoc:
+- PR#5544: improve HTML output (less formatting in html code)
+- PR#5522: allow refering to record fields and variant constructors
+- fix PR#5419 (error message in french)
+- fix PR#5535 (no cross ref to class after dump+load)
+* Use first class modules for custom generators, to be able to
+  load various plugins incrementally adding features to the current
+  generator
+* PR#5507: Use Location.t structures for locations.
+- fix: do not keep code when not told to keep code.
+
 Standard library:
 - Added float functions "hypot" and "copysign" (PR#3806, PR#4752, PR#5246)
 * Arg: options with empty doc strings are no longer included in the usage string
@@ -47,9 +62,14 @@ Standard library:
 * Hashtbl:
     . Statistically-better generic hash function based on Murmur 3 (PR#5225)
     . Fixed behavior of generic hash function w.r.t. -0.0 and NaN (PR#5222)
-    . Added optional "seed" parameter to Hashtbl.create for diversification
-    . Added new functorial interface "MakeSeeded" to support diversification
-      with user-provided hash functions.
+    . Added optional "random" parameter to Hashtbl.create to randomize
+      collision patterns and improve security (PR#5572, CVE-2012-0839)
+    . Added "randomize" function and "R" parameter to OCAMLRUNPARAMS
+      to turn randomization on by default (PR#5572, CVE-2012-0839)
+    . Added new functorial interface "MakeSeeded" to support randomization
+      with user-provided seeded hash functions.
+    . Install new header <caml/hash.h> for C code.
+- Filename: on-demand (lazy) initialization of the PRNG used by "temp_file".
 - Marshal: marshalling of function values (flag Marshal.Closures) now
   also works for functions that come from dynamically-loaded modules (PR#5215)
 - Random:
@@ -60,14 +80,30 @@ Standard library:
 - Set and Map: more efficient implementation of "filter" and "partition"
 - String: new function "map" (PR#3888)
 
-Other libraries:
-- Bigarray: added "release" functions that free memory and file mappings
-  just like GC finalization does eventually, but does it immediately.
+Installation procedure:
+- Compiler internals are now installed in `ocamlc -where`/compiler-libs.
+  The files available there include the .cmi interfaces for all compiler
+  modules, plus the following libraries:
+      ocamlcommon.cma/.cmxa     modules common to ocamlc, ocamlopt, ocaml
+      ocamlbytecomp.cma/.cmxa   modules for ocamlc and ocaml
+      ocamloptcomp.cma/.cmxa    modules specific to ocamlopt
+      ocamltoplevel.cma         modules specific to ocaml
+   (PR#1804, PR#4653, frequently-asked feature).
+* Some .cmi for toplevel internals that used to be installed in
+  `ocamlc -where` are now to be found in  `ocamlc -where`/compiler-libs.
+  Add "-I +compiler-libs" where needed.
+* toplevellib.cma is no longer installed because subsumed by
+  ocamlcommon.cma ocamlbytecomp.cma ocamltoplevel.cma
+- Added a configuration option (-with-debug-runtime) to compile and install
+  a debug version of the runtime system, and a compiler option
+  (-runtime-variant) to select the debug runtime.
 
 Bug Fixes:
 - PR#1643: functions of the Lazy module whose named started with 'lazy_' have
   been deprecated, and new ones without the prefix added
 - PR#3571: in Bigarrays, call msync() before unmapping to commit changes
+- PR#4292: various documentation problems
+- PR#4511, PR#4838: local modules remove polymorphism
 - PR#4549: Filename.dirname is not handling multiple / on Unix
 - PR#4688: (Windows) special floating-point values aren't converted to strings
   correctly
@@ -85,41 +121,71 @@ Bug Fixes:
   before calling into C functions, raising a Stack_overflow exception
   otherwise.  This reduces (but does not eliminate) the risk of
   segmentation faults due to stack overflow in C code
+- PR#5084: sub-sub-module building fails for native code compilation
+- PR#5120: fix the output function of Camlp4.Debug.formatter
+- PR#5159: better documentation of type Lexing.position
+- PR#5171: Map.join does more comparisons than needed
+- PR#5176: emacs mode: stack overflow in regexp matcher
+- PR#5179: port OCaml to mingw-w64
 - PR#5211: updated Genlex documentation to state that camlp4 is mandatory for
   'parser' keyword and associated notation
+- PR#5224: confusing error message in non-regular type definition
+- PR#5231: camlp4: fix parsing of <:str_item< type t = $x$ >>
 - PR#5238, PR#5277: Sys_error when getting error location
+- PR#5261, PR#5497: Ocaml source-code examples are not "copy-paste-able"
+- PR#5290: added hash functions for channels, nats, mutexes, conditions
 - PR#5295: OS threads: problem with caml_c_thread_unregister()
 - PR#5301: camlp4r and exception equal to another one with parameters
+- PR#5305: prevent ocamlbuild from complaining about links to _build/
+- PR#5306: comparing to Thread.self() raises exception at runtime
 - PR#5309: Queue.add is not thread/signal safe
 - PR#5310: Ratio.create_ratio/create_normalized_ratio have misleading names
 - PR#5311: better message for warning 23
 - PR#5313: ocamlopt -g misses optimizations
 - PR#5316: objinfo now shows ccopts/ccobjs/force_link when applicable
+- PR#5318: segfault on stack overflow when reading marshaled data
+- PR#5319: %r11 clobbered by Lswitch in Windows AMD64 native-code compilation
 - PR#5322: type abbreviations expanding to a universal type variable
 - PR#5325: (Windows) blocked Unix.recv in one thread blocks Unix.send in
   another thread
-- PR#5327: (Windows) Unix.select blocks if same socket listed in first and
-  third arguments
 - PR#5328: under Windows, Unix.select leaves sockets in non-blocking mode
 - PR#5330: thread tag with '.top' and '.inferred.mli' targets
 - PR#5331: ocamlmktop is not always a shell script
 - PR#5335: Unix.environment segfaults after a call to clearenv
+- PR#5338: sanitize.sh has windows style end-of-lines (mingw)
 - PR#5343: ocaml -rectypes is unsound wrt module subtyping
-- PR#5344: some predifined exceptions need special printing
+- PR#5344: some predefined exceptions need special printing
+- PR#5349: Hashtbl.replace uses new key instead of reusing old key
 - PR#5356: ocamlbuild handling of 'predicates' for ocamlfind
 - PR#5364: wrong compilation of "((val m : SIG1) : SIG2)"
 - PR#5370: ocamldep omits filename in syntax error message
+- PR#5374: camlp4 creates wrong location for type definitions
 - PR#5380: strange sscanf input segfault
-- PR#5394: Documentation for -dtypes is missing in manpage
+- PR#5382: EOPNOTSUPP and ENOTSUPP different on exotic platforms
+- PR#5383: build failure in Win32/MSVC
+- PR#5387: camlp4: str_item and other syntactic elements with Nils are
+  not very usable
+- PR#5389: compaction sometimes leaves a very large heap
+- PR#5393: fails to build from source on GNU/kFreeBSD because of -R link option
+- PR#5394: documentation for -dtypes is missing in manpage
+- PR#5397: Filename.temp_dir_name should be mutable
+- PR#5410: fix printing of class application with Camlp4
 - PR#5416: (Windows) Unix.(set|clear)_close_on_exec now preserves blocking mode
+- PR#5435: ocamlbuild does not find .opt executables on Windows
 - PR#5436: update object ids on unmarshaling
+- PR#5442: camlp4: quotation issue with strings
 - PR#5453: configure doesn't find X11 under Ubuntu/MultiarchSpec
 - PR#5461: Double linking of bytecode modules
 - PR#5463: Bigarray.*.map_file fail if empty array is requested
+- PR#5465: increase stack size of ocamlopt.opt for windows
 - PR#5469: private record type generated by functor loses abbreviation
 - PR#5475: Wrapper script for interpreted LablTk wrongly handles command line
   parameters
 - PR#5476: bug in native code compilation of let rec on float arrays
+- PR#5477: use pkg-config to configure graphics on linux
+- PR#5481: update camlp4 magic numbers
+- PR#5482: remove bashism in test suite scripts
+- PR#5495: camlp4o dies on infix definition (or)
 - PR#5498: Unification with an empty object only checks the absence of
   the first method
 - PR#5503: error when ocamlbuild is passed an absolute path as build directory
@@ -129,37 +195,85 @@ Bug Fixes:
 - PR#5511: in Bigarray.reshape, unwarranted limitation on new array dimensions.
 - PR#5513: Int64.div causes floating point exception (ocamlopt, x86)
 - PR#5516: in Bigarray C stubs, use C99 flexible array types if possible
+- PR#5518: segfault with lazy empty array
+- PR#5531: Allow ocamlbuild to add ocamldoc flags through -docflag
+  and -docflags switches
 - PR#5543: in Bigarray.map_file, try to avoid using lseek() when growing file
 - PR#5538: combining -i and -annot in ocamlc
+- PR#5551: repeated calls to find_in_path degrade performance
+- PR#5552: Mac OS X: unrecognized gcc option "-no-cpp-precomp"
+- PR#5555: add Hashtbl.reset to resize the bucket table to its initial size
 - PR#5560: incompatible type for tuple pattern with -principal
+- PR#5575: Random states are not marshallable across architectures
+- PR#5579: camlp4: when a plugin is loaded in the toplevel,
+  Token.Filter.define_filter has no effect before the first syntax error
+- PR#5585: typo: "explicitely"
+- PR#5587: documentation: "allows to" is not correct English
+- PR#5593: remove C file when -output-obj fails
+- PR#5598: add backslash-space support in strings in ocamllex
+- PR#5603: wrong .file debug info generated by ocamlopt -g
+- PR#5604: fix permissions of files created by ocamlbuild itself
+- PR#5610: new unmarshaler (from PR#5318) fails to freshen object identifiers
+- PR#5614: add missing -linkall flag when compiling ocamldoc.opt
+- PR#5616: move ocamlbuild documentation to the reference manual
+- PR#5619: Uncaught CType.Unify exception in the compiler
+- PR#5620: invalid printing of type manifest (camlp4 revised syntax)
 - problem with printing of string literals in camlp4 (reported on caml-list)
 - emacs mode: colorization of comments and strings now works correctly
+- problem with forall and method (reported on caml-list on 2011-07-26)
 
 Feature wishes:
 - PR#352: new option "-stdin" to make ocaml read stdin as a script
+- PR#1164: better error message when mixing -a and .cmxa
+- PR#1284: documentation: remove restriction on mixed streams
+- PR#1496: allow configuring LIBDIR, BINDIR, and MANDIR relative to $(PREFIX)
+- PR#1835: add Digest.from_hex
+- PR#1898: toplevel: add option to suppress continuation prompts
+- PR#4278: configure: option to disable "graph" library
 - PR#4444: new String.trim function, removing leading and trailing whistespace
+- PR#4549: make Filename.dirname/basename POSIX compliant
+- PR#4830: add option -v to expunge.ml
 - PR#4898: new Sys.big_endian boolean for machine endianness
+- PR#4963, PR#5467: no extern "C" into ocaml C-stub headers
 - PR#5199: tests are run only for bytecode if either native support is missing,
   or a non-empty value is set to "BYTECODE_ONLY" Makefile variable
+- PR#5215: marshalling of dynlinked closure
 - PR#5236: new '%revapply' primitive with the semantics 'revapply x f = f x',
     and '%apply' with semantics 'apply f x = f x'.
+- PR#5295: OS threads: problem with caml_c_thread_unregister()
 - PR#5297: compiler now checks existence of builtin primitives
 - PR#5329: (Windows) more efficient Unix.select if all fd's are sockets
 - PR#5358: first class modules don't allow "with type" declarations for types
   in sub-modules
+- PR#5385: configure: emit a warning when MACOSX_DEPLOYMENT_TARGET is set
+- PR#5396: ocamldep: add options -sort, -all, and -one-line
 - PR#5397: Filename.temp_dir_name should be mutable
+- PR#5403: give better error message when emacs is not found in PATH
 - PR#5411: new directive for the toplevel: #load_rec
 - PR#5420: Unix.openfile share mode (Windows)
+- PR#5421: Unix: do not leak fds in various open_proc* functions
+- PR#5434: implement Unix.times in win32unix (partially)
 - PR#5437: warning for useless open statements
 - PR#5438: new warnings for unused declarations
+- PR#5439: upgrade config.guess and config.sub
+- PR#5445 and others: better printing of types with user-provided names
 - PR#5454: Digest.compare is missing and md5 doc update
-- PR#5467: no extern "C" into ocaml C-stub headers
+- PR#5455: .emacs instructions, add lines to recognize ocaml scripts
+- PR#5456: pa_macro: replace __LOCATION__ after macro expansion; add LOCATION_OF
+- PR#5461: bytecode: emit warning when linking two modules with the same name
 - PR#5478: ocamlopt assumes ar command exists
 - PR#5479: Num.num_of_string may raise an exception, not reflected in the
   documentation.
+- PR#5501: increase IO_BUFFER_SIZE to 64KiB
+- PR#5532: improve error message when bytecode file is wrong
+- PR#5555: add function Hashtbl.reset to resize the bucket table to
+  its initial size.
+- PR#5586: increase UNIX_BUFFER_SIZE to 64KiB
+- PR#5599: Add warn() tag in ocamlbuild to control -w compiler switch
 - ocamldebug: ability to inspect values that contain code pointers
 - ocamldebug: new 'environment' directive to set environment variables
-  for debugee
+  for debuggee
+- configure: add -no-camlp4 option
 
 Shedding weight:
 * Removed the obsolete native-code generators for Alpha, HPPA, IA64 and MIPS.
@@ -169,7 +283,7 @@ Shedding weight:
 * The "OCamlWin" toplevel user interface for MS Windows is no longer
   part of this distribution.  It now lives its own life at
   https://forge.ocamlcore.org/projects/ocamltopwin/
-  
+
 Other changes:
 - Copy VERSION file to library directory when installing.
 
index 73894ea24a8acebed68381fcb04c24084702e1a7..709193950452918af41102673881972dfcb70a7d 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -10,7 +10,7 @@
 #                                                                       #
 #########################################################################
 
-# $Id$
+# $Id: Makefile 12511 2012-05-30 13:29:48Z lefessan $
 
 # The main Makefile
 
@@ -19,7 +19,7 @@ include stdlib/StdlibModules
 
 CAMLC=boot/ocamlrun boot/ocamlc -nostdlib -I boot
 CAMLOPT=boot/ocamlrun ./ocamlopt -nostdlib -I stdlib -I otherlibs/dynlink
-COMPFLAGS=-strict-sequence -warn-error A $(INCLUDES)
+COMPFLAGS= -strict-sequence -warn-error A $(INCLUDES)
 LINKFLAGS=
 
 CAMLYACC=boot/ocamlyacc
@@ -41,8 +41,6 @@ UTILS=utils/misc.cmo utils/tbl.cmo utils/config.cmo \
   utils/clflags.cmo utils/terminfo.cmo utils/ccomp.cmo utils/warnings.cmo \
   utils/consistbl.cmo
 
-OPTUTILS=$(UTILS)
-
 PARSING=parsing/location.cmo parsing/longident.cmo \
   parsing/syntaxerr.cmo parsing/parser.cmo \
   parsing/lexer.cmo parsing/parse.cmo parsing/printast.cmo
@@ -51,12 +49,12 @@ TYPING=typing/ident.cmo typing/path.cmo \
   typing/primitive.cmo typing/types.cmo \
   typing/btype.cmo typing/oprint.cmo \
   typing/subst.cmo typing/predef.cmo \
-  typing/datarepr.cmo typing/env.cmo \
-  typing/typedtree.cmo typing/ctype.cmo \
+  typing/datarepr.cmo typing/cmi_format.cmo typing/env.cmo \
+  typing/typedtree.cmo typing/printtyped.cmo typing/ctype.cmo \
   typing/printtyp.cmo typing/includeclass.cmo \
   typing/mtype.cmo typing/includecore.cmo \
   typing/includemod.cmo typing/typetexp.cmo typing/parmatch.cmo \
-  typing/stypes.cmo typing/typecore.cmo \
+  typing/cmt_format.cmo typing/stypes.cmo typing/typecore.cmo \
   typing/typedecl.cmo typing/typeclass.cmo \
   typing/typemod.cmo
 
@@ -64,12 +62,16 @@ COMP=bytecomp/lambda.cmo bytecomp/printlambda.cmo \
   bytecomp/typeopt.cmo bytecomp/switch.cmo bytecomp/matching.cmo \
   bytecomp/translobj.cmo bytecomp/translcore.cmo \
   bytecomp/translclass.cmo bytecomp/translmod.cmo \
-  bytecomp/simplif.cmo bytecomp/runtimedef.cmo
+  bytecomp/simplif.cmo bytecomp/runtimedef.cmo \
+  driver/pparse.cmo driver/main_args.cmo
+
+COMMON=$(UTILS) $(PARSING) $(TYPING) $(COMP)
 
 BYTECOMP=bytecomp/meta.cmo bytecomp/instruct.cmo bytecomp/bytegen.cmo \
   bytecomp/printinstr.cmo bytecomp/opcodes.cmo bytecomp/emitcode.cmo \
   bytecomp/bytesections.cmo bytecomp/dll.cmo bytecomp/symtable.cmo \
-  bytecomp/bytelink.cmo bytecomp/bytelibrarian.cmo bytecomp/bytepackager.cmo
+  bytecomp/bytelink.cmo bytecomp/bytelibrarian.cmo bytecomp/bytepackager.cmo \
+  driver/errors.cmo driver/compile.cmo
 
 ASMCOMP=asmcomp/arch.cmo asmcomp/debuginfo.cmo \
   asmcomp/cmm.cmo asmcomp/printcmm.cmo \
@@ -84,42 +86,22 @@ ASMCOMP=asmcomp/arch.cmo asmcomp/debuginfo.cmo \
   asmcomp/printlinear.cmo asmcomp/linearize.cmo \
   asmcomp/schedgen.cmo asmcomp/scheduling.cmo \
   asmcomp/emitaux.cmo asmcomp/emit.cmo asmcomp/asmgen.cmo \
-  asmcomp/asmlink.cmo asmcomp/asmlibrarian.cmo asmcomp/asmpackager.cmo
-
-DRIVER=driver/pparse.cmo driver/errors.cmo driver/compile.cmo \
-  driver/main_args.cmo driver/main.cmo
-
-OPTDRIVER= driver/pparse.cmo driver/opterrors.cmo driver/optcompile.cmo \
-  driver/main_args.cmo driver/optmain.cmo
+  asmcomp/asmlink.cmo asmcomp/asmlibrarian.cmo asmcomp/asmpackager.cmo \
+  driver/opterrors.cmo driver/optcompile.cmo
 
-TOPLEVEL=driver/pparse.cmo driver/errors.cmo driver/compile.cmo \
-  driver/main_args.cmo toplevel/genprintval.cmo toplevel/toploop.cmo \
+TOPLEVEL=toplevel/genprintval.cmo toplevel/toploop.cmo \
   toplevel/trace.cmo toplevel/topdirs.cmo toplevel/topmain.cmo
 
-TOPLEVELLIB=toplevel/toplevellib.cma
-TOPLEVELSTART=toplevel/topstart.cmo
-
-COMPOBJS=$(UTILS) $(PARSING) $(TYPING) $(COMP) $(BYTECOMP) $(DRIVER)
+BYTESTART=driver/main.cmo
 
-TOPLIB=$(UTILS) $(PARSING) $(TYPING) $(COMP) $(BYTECOMP) $(TOPLEVEL)
+OPTSTART=driver/optmain.cmo
 
-TOPOBJS=$(TOPLEVELLIB) $(TOPLEVELSTART)
+TOPLEVELSTART=toplevel/topstart.cmo
 
-NATTOPOBJS=$(OPTUTILS) $(PARSING) $(TYPING) $(COMP) $(ASMCOMP) \
-  driver/pparse.cmo driver/opterrors.cmo driver/optcompile.cmo \
-  driver/main_args.cmo \
+NATTOPOBJS=$(UTILS) $(PARSING) $(TYPING) $(COMP) $(ASMCOMP) \
   toplevel/genprintval.cmo toplevel/opttoploop.cmo toplevel/opttopdirs.cmo \
   toplevel/opttopmain.cmo toplevel/opttopstart.cmo
 
-OPTOBJS=$(OPTUTILS) $(PARSING) $(TYPING) $(COMP) $(ASMCOMP) $(OPTDRIVER)
-
-EXPUNGEOBJS=utils/misc.cmo utils/tbl.cmo \
-  utils/config.cmo utils/clflags.cmo \
-  typing/ident.cmo typing/path.cmo typing/types.cmo typing/btype.cmo \
-  utils/warnings.cmo parsing/location.cmo \
-  typing/predef.cmo bytecomp/runtimedef.cmo bytecomp/bytesections.cmo \
-  bytecomp/dll.cmo bytecomp/meta.cmo bytecomp/symtable.cmo toplevel/expunge.cmo
-
 PERVASIVES=$(STDLIB_MODULES) outcometree topdirs toploop
 
 # For users who don't read the INSTALL file
@@ -278,10 +260,14 @@ base.opt: checkstack runtime core ocaml opt-core ocamlc.opt otherlibraries \
         otherlibrariesopt
 
 # Installation
+
+COMPLIBDIR=$(LIBDIR)/compiler-libs
+
 install:
        if test -d $(BINDIR); then : ; else $(MKDIR) $(BINDIR); fi
        if test -d $(LIBDIR); then : ; else $(MKDIR) $(LIBDIR); fi
        if test -d $(STUBLIBDIR); then : ; else $(MKDIR) $(STUBLIBDIR); fi
+       if test -d $(COMPLIBDIR); then : ; else $(MKDIR) $(COMPLIBDIR); fi
        if test -d $(MANDIR)/man$(MANEXT); then : ; \
          else $(MKDIR) $(MANDIR)/man$(MANEXT); fi
        cp VERSION $(LIBDIR)/
@@ -294,12 +280,9 @@ install:
        cd stdlib; $(MAKE) install
        cp lex/ocamllex $(BINDIR)/ocamllex$(EXE)
        cp yacc/ocamlyacc$(EXE) $(BINDIR)/ocamlyacc$(EXE)
-       cp toplevel/toplevellib.cma $(LIBDIR)/toplevellib.cma
+       cp utils/*.cmi parsing/*.cmi typing/*.cmi bytecomp/*.cmi driver/*.cmi toplevel/*.cmi $(COMPLIBDIR)
+       cp compilerlibs/ocamlcommon.cma compilerlibs/ocamlbytecomp.cma compilerlibs/ocamltoplevel.cma $(BYTESTART) $(TOPLEVELSTART) $(COMPLIBDIR)
        cp expunge $(LIBDIR)/expunge$(EXE)
-       cp typing/outcometree.cmi typing/outcometree.mli $(LIBDIR)
-       cp toplevel/topstart.cmo $(LIBDIR)
-       cp toplevel/toploop.cmi toplevel/topdirs.cmi toplevel/topmain.cmi \
-          $(LIBDIR)
        cd tools; $(MAKE) install
        -cd man; $(MAKE) install
        for i in $(OTHERLIBRARIES); do \
@@ -318,34 +301,59 @@ installopt:
        cd asmrun; $(MAKE) install
        cp ocamlopt $(BINDIR)/ocamlopt$(EXE)
        cd stdlib; $(MAKE) installopt
+       cp asmcomp/*.cmi $(COMPLIBDIR)
+       cp compilerlibs/ocamloptcomp.cma $(OPTSTART) $(COMPLIBDIR)
        cd ocamldoc; $(MAKE) installopt
        for i in $(OTHERLIBRARIES); \
          do (cd otherlibs/$$i; $(MAKE) installopt) || exit $$?; done
-       if test -f ocamlc.opt; \
-         then cp ocamlc.opt $(BINDIR)/ocamlc.opt$(EXE); else :; fi
-       if test -f ocamlopt.opt; \
-         then cp ocamlopt.opt $(BINDIR)/ocamlopt.opt$(EXE); else :; fi
-       if test -f lex/ocamllex.opt; \
-         then cp lex/ocamllex.opt $(BINDIR)/ocamllex.opt$(EXE); else :; fi
+       if test -f ocamlopt.opt ; then $(MAKE) installoptopt; fi
        cd tools; $(MAKE) installopt
 
+installoptopt:
+       cp ocamlc.opt $(BINDIR)/ocamlc.opt$(EXE)
+       cp ocamlopt.opt $(BINDIR)/ocamlopt.opt$(EXE)
+       cp lex/ocamllex.opt $(BINDIR)/ocamllex.opt$(EXE)
+       cp compilerlibs/ocamlcommon.cmxa compilerlibs/ocamlcommon.a \
+           compilerlibs/ocamlbytecomp.cmxa compilerlibs/ocamlbytecomp.a \
+           compilerlibs/ocamloptcomp.cmxa compilerlibs/ocamloptcomp.a \
+           $(BYTESTART:.cmo=.cmx) $(BYTESTART:.cmo=.o) \
+           $(OPTSTART:.cmo=.cmx) $(OPTSTART:.cmo=.o) \
+           $(COMPLIBDIR)
+       cd $(COMPLIBDIR) && $(RANLIB) ocamlcommon.a ocamlbytecomp.a ocamloptcomp.a
+
 clean:: partialclean
 
-# The compiler
+# Shared parts of the system
 
-ocamlc: $(COMPOBJS)
-       $(CAMLC) $(LINKFLAGS) -o ocamlc $(COMPOBJS)
+compilerlibs/ocamlcommon.cma: $(COMMON)
+       $(CAMLC) -a -o $@ $(COMMON)
+partialclean::
+       rm -f compilerlibs/ocamlcommon.cma
+
+# The bytecode compiler
+
+compilerlibs/ocamlbytecomp.cma: $(BYTECOMP)
+       $(CAMLC) -a -o $@ $(BYTECOMP)
+partialclean::
+       rm -f compilerlibs/ocamlbytecomp.cma
+
+ocamlc: compilerlibs/ocamlcommon.cma compilerlibs/ocamlbytecomp.cma $(BYTESTART)
+       $(CAMLC) $(LINKFLAGS) -o ocamlc \
+           compilerlibs/ocamlcommon.cma compilerlibs/ocamlbytecomp.cma $(BYTESTART)
        @sed -e 's|@compiler@|$$topdir/boot/ocamlrun $$topdir/ocamlc|' \
          driver/ocamlcomp.sh.in > ocamlcomp.sh
        @chmod +x ocamlcomp.sh
 
-partialclean::
-       rm -f ocamlc ocamlcomp.sh
-
 # The native-code compiler
 
-ocamlopt: $(OPTOBJS)
-       $(CAMLC) $(LINKFLAGS) -o ocamlopt $(OPTOBJS)
+compilerlibs/ocamloptcomp.cma: $(ASMCOMP)
+       $(CAMLC) -a -o $@ $(ASMCOMP)
+partialclean::
+       rm -f compilerlibs/ocamloptcomp.cma
+
+ocamlopt: compilerlibs/ocamlcommon.cma compilerlibs/ocamloptcomp.cma $(OPTSTART)
+       $(CAMLC) $(LINKFLAGS) -o ocamlopt \
+          compilerlibs/ocamlcommon.cma compilerlibs/ocamloptcomp.cma $(OPTSTART)
        @sed -e 's|@compiler@|$$topdir/boot/ocamlrun $$topdir/ocamlopt|' \
          driver/ocamlcomp.sh.in > ocamlcompopt.sh
        @chmod +x ocamlcompopt.sh
@@ -355,16 +363,20 @@ partialclean::
 
 # The toplevel
 
-ocaml: $(TOPOBJS) expunge
-       $(CAMLC) $(LINKFLAGS) -linkall -o ocaml.tmp $(TOPOBJS)
+compilerlibs/ocamltoplevel.cma: $(TOPLEVEL)
+       $(CAMLC) -a -o $@ $(TOPLEVEL)
+partialclean::
+       rm -f compilerlibs/ocamltoplevel.cma
+
+ocaml: compilerlibs/ocamlcommon.cma compilerlibs/ocamlbytecomp.cma compilerlibs/ocamltoplevel.cma $(TOPLEVELSTART) expunge
+       $(CAMLC) $(LINKFLAGS) -linkall -o ocaml.tmp \
+          compilerlibs/ocamlcommon.cma compilerlibs/ocamlbytecomp.cma \
+          compilerlibs/ocamltoplevel.cma $(TOPLEVELSTART)
        - $(CAMLRUN) ./expunge ocaml.tmp ocaml $(PERVASIVES)
        rm -f ocaml.tmp
 
-toplevel/toplevellib.cma: $(TOPLIB)
-       $(CAMLC) -a -o $@ $(TOPLIB)
-
 partialclean::
-       rm -f ocaml toplevel/toplevellib.cma
+       rm -f ocaml
 
 # The native toplevel
 
@@ -433,13 +445,24 @@ partialclean::
 
 beforedepend:: parsing/lexer.ml
 
+# Shared parts of the system compiled with the native-code compiler
+
+compilerlibs/ocamlcommon.cmxa: $(COMMON:.cmo=.cmx)
+       $(CAMLOPT) -a -o $@ $(COMMON:.cmo=.cmx)
+partialclean::
+       rm -f compilerlibs/ocamlcommon.cmxa compilerlibs/ocamlcommon.a
+
 # The bytecode compiler compiled with the native-code compiler
 
-ocamlc.opt: $(COMPOBJS:.cmo=.cmx)
-       cd asmrun; $(MAKE) meta.o dynlink.o
+compilerlibs/ocamlbytecomp.cmxa: $(BYTECOMP:.cmo=.cmx)
+       $(CAMLOPT) -a -o $@ $(BYTECOMP:.cmo=.cmx)
+partialclean::
+       rm -f compilerlibs/ocamlbytecomp.cmxa compilerlibs/ocamlbytecomp.a
+
+ocamlc.opt: compilerlibs/ocamlcommon.cmxa compilerlibs/ocamlbytecomp.cmxa $(BYTESTART:.cmo=.cmx)
        $(CAMLOPT) $(LINKFLAGS) -ccopt "$(BYTECCLINKOPTS)" -o ocamlc.opt \
-         $(COMPOBJS:.cmo=.cmx) \
-         asmrun/meta.o asmrun/dynlink.o -cclib "$(BYTECCLIBS)"
+          compilerlibs/ocamlcommon.cmxa compilerlibs/ocamlbytecomp.cmxa \
+          $(BYTESTART:.cmo=.cmx) -cclib "$(BYTECCLIBS)"
        @sed -e 's|@compiler@|$$topdir/ocamlc.opt|' \
          driver/ocamlcomp.sh.in > ocamlcomp.sh
        @chmod +x ocamlcomp.sh
@@ -449,8 +472,15 @@ partialclean::
 
 # The native-code compiler compiled with itself
 
-ocamlopt.opt: $(OPTOBJS:.cmo=.cmx)
-       $(CAMLOPT) $(LINKFLAGS) -o ocamlopt.opt $(OPTOBJS:.cmo=.cmx)
+compilerlibs/ocamloptcomp.cmxa: $(ASMCOMP:.cmo=.cmx)
+       $(CAMLOPT) -a -o $@ $(ASMCOMP:.cmo=.cmx)
+partialclean::
+       rm -f compilerlibs/ocamloptcomp.cmxa compilerlibs/ocamloptcomp.a
+
+ocamlopt.opt: compilerlibs/ocamlcommon.cmxa compilerlibs/ocamloptcomp.cmxa $(OPTSTART:.cmo=.cmx)
+       $(CAMLOPT) $(LINKFLAGS) -o ocamlopt.opt \
+           compilerlibs/ocamlcommon.cmxa compilerlibs/ocamloptcomp.cmxa \
+           $(OPTSTART:.cmo=.cmx)
        @sed -e 's|@compiler@|$$topdir/ocamlopt.opt|' \
          driver/ocamlcomp.sh.in > ocamlcompopt.sh
        @chmod +x ocamlcompopt.sh
@@ -458,7 +488,7 @@ ocamlopt.opt: $(OPTOBJS:.cmo=.cmx)
 partialclean::
        rm -f ocamlopt.opt
 
-$(OPTOBJS:.cmo=.cmx): ocamlopt
+$(COMMON:.cmo=.cmx) $(BYTECOMP:.cmo=.cmx) $(ASMCOMP:.cmo=.cmx): ocamlopt
 
 # The numeric opcodes
 
@@ -549,8 +579,9 @@ tools/cvt_emit: tools/cvt_emit.mll
 
 # The "expunge" utility
 
-expunge: $(EXPUNGEOBJS)
-       $(CAMLC) $(LINKFLAGS) -o expunge $(EXPUNGEOBJS)
+expunge: compilerlibs/ocamlcommon.cma compilerlibs/ocamlbytecomp.cma toplevel/expunge.cmo
+       $(CAMLC) $(LINKFLAGS) -o expunge \
+          compilerlibs/ocamlcommon.cma compilerlibs/ocamlbytecomp.cma toplevel/expunge.cmo
 
 partialclean::
        rm -f expunge
index 0b9e4e7c2f20bfe60af2042a256dcba85720232d..3a064b9f3613d97992323c5643e61365ef8b0952 100644 (file)
@@ -10,7 +10,7 @@
 #                                                                       #
 #########################################################################
 
-# $Id$
+# $Id: Makefile.nt 12511 2012-05-30 13:29:48Z lefessan $
 
 # The main Makefile
 
@@ -38,8 +38,6 @@ UTILS=utils/misc.cmo utils/tbl.cmo utils/config.cmo \
   utils/clflags.cmo utils/terminfo.cmo utils/ccomp.cmo utils/warnings.cmo \
   utils/consistbl.cmo
 
-OPTUTILS=$(UTILS)
-
 PARSING=parsing/location.cmo parsing/longident.cmo \
   parsing/syntaxerr.cmo parsing/parser.cmo \
   parsing/lexer.cmo parsing/parse.cmo parsing/printast.cmo
@@ -48,12 +46,13 @@ TYPING=typing/ident.cmo typing/path.cmo \
   typing/primitive.cmo typing/types.cmo \
   typing/btype.cmo typing/oprint.cmo \
   typing/subst.cmo typing/predef.cmo \
-  typing/datarepr.cmo typing/env.cmo \
+  typing/datarepr.cmo typing/cmi_format.cmo typing/env.cmo \
   typing/typedtree.cmo typing/ctype.cmo \
   typing/printtyp.cmo typing/includeclass.cmo \
   typing/mtype.cmo typing/includecore.cmo \
   typing/includemod.cmo typing/parmatch.cmo \
-  typing/typetexp.cmo typing/stypes.cmo typing/typecore.cmo \
+  typing/typetexp.cmo \
+  typing/cmt_format.cmo typing/stypes.cmo typing/typecore.cmo \
   typing/typedecl.cmo typing/typeclass.cmo \
   typing/typemod.cmo
 
@@ -61,12 +60,16 @@ COMP=bytecomp/lambda.cmo bytecomp/printlambda.cmo \
   bytecomp/typeopt.cmo bytecomp/switch.cmo bytecomp/matching.cmo \
   bytecomp/translobj.cmo bytecomp/translcore.cmo \
   bytecomp/translclass.cmo bytecomp/translmod.cmo \
-  bytecomp/simplif.cmo bytecomp/runtimedef.cmo
+  bytecomp/simplif.cmo bytecomp/runtimedef.cmo \
+  driver/pparse.cmo driver/main_args.cmo
+
+COMMON=$(UTILS) $(PARSING) $(TYPING) $(COMP)
 
 BYTECOMP=bytecomp/meta.cmo bytecomp/instruct.cmo bytecomp/bytegen.cmo \
   bytecomp/printinstr.cmo bytecomp/opcodes.cmo bytecomp/emitcode.cmo \
   bytecomp/bytesections.cmo bytecomp/dll.cmo bytecomp/symtable.cmo \
-  bytecomp/bytelink.cmo bytecomp/bytelibrarian.cmo bytecomp/bytepackager.cmo
+  bytecomp/bytelink.cmo bytecomp/bytelibrarian.cmo bytecomp/bytepackager.cmo \
+  driver/errors.cmo driver/compile.cmo
 
 ASMCOMP=asmcomp/arch.cmo asmcomp/debuginfo.cmo \
   asmcomp/cmm.cmo asmcomp/printcmm.cmo \
@@ -81,41 +84,17 @@ ASMCOMP=asmcomp/arch.cmo asmcomp/debuginfo.cmo \
   asmcomp/printlinear.cmo asmcomp/linearize.cmo \
   asmcomp/schedgen.cmo asmcomp/scheduling.cmo \
   asmcomp/emitaux.cmo asmcomp/emit.cmo asmcomp/asmgen.cmo \
-  asmcomp/asmlink.cmo asmcomp/asmlibrarian.cmo asmcomp/asmpackager.cmo
-
-DRIVER=driver/pparse.cmo driver/errors.cmo driver/compile.cmo \
-  driver/main_args.cmo driver/main.cmo
-
-OPTDRIVER=driver/pparse.cmo driver/opterrors.cmo driver/optcompile.cmo \
-  driver/main_args.cmo driver/optmain.cmo
+  asmcomp/asmlink.cmo asmcomp/asmlibrarian.cmo asmcomp/asmpackager.cmo \
+  driver/opterrors.cmo driver/optcompile.cmo
 
-TOPLEVEL=driver/pparse.cmo driver/errors.cmo driver/compile.cmo \
-  driver/main_args.cmo toplevel/genprintval.cmo toplevel/toploop.cmo \
+TOPLEVEL=toplevel/genprintval.cmo toplevel/toploop.cmo \
   toplevel/trace.cmo toplevel/topdirs.cmo toplevel/topmain.cmo
 
-TOPLEVELLIB=toplevel/toplevellib.cma
-TOPLEVELSTART=toplevel/topstart.cmo
-
-COMPOBJS=$(UTILS) $(PARSING) $(TYPING) $(COMP) $(BYTECOMP) $(DRIVER)
-
-TOPLIB=$(UTILS) $(PARSING) $(TYPING) $(COMP) $(BYTECOMP) $(TOPLEVEL)
-
-TOPOBJS=$(TOPLEVELLIB) $(TOPLEVELSTART)
+BYTESTART=driver/main.cmo
 
-NATTOPOBJS=$(OPTUTILS) $(PARSING) $(TYPING) $(COMP) $(ASMCOMP) \
-  driver/pparse.cmo driver/opterrors.cmo driver/optcompile.cmo \
-  driver/main_args.cmo \
-  toplevel/genprintval.cmo toplevel/opttoploop.cmo toplevel/opttopdirs.cmo \
-  toplevel/opttopmain.cmo toplevel/opttopstart.cmo
+OPTSTART=driver/optmain.cmo
 
-OPTOBJS=$(OPTUTILS) $(PARSING) $(TYPING) $(COMP) $(ASMCOMP) $(OPTDRIVER)
-
-EXPUNGEOBJS=utils/misc.cmo utils/tbl.cmo \
-  utils/config.cmo utils/clflags.cmo \
-  typing/ident.cmo typing/path.cmo typing/types.cmo typing/btype.cmo \
-  utils/warnings.cmo parsing/location.cmo \
-  typing/predef.cmo bytecomp/runtimedef.cmo bytecomp/bytesections.cmo \
-  bytecomp/dll.cmo bytecomp/meta.cmo bytecomp/symtable.cmo toplevel/expunge.cmo
+TOPLEVELSTART=toplevel/topstart.cmo
 
 PERVASIVES=$(STDLIB_MODULES) topdirs toploop outcometree
 
@@ -125,7 +104,7 @@ defaultentry:
 
 # Recompile the system using the bootstrap compiler
 all: runtime ocamlc ocamllex ocamlyacc ocamltools library ocaml \
-  otherlibraries ocamldoc.byte ocamlbuild.byte $(CAMLP4OUT) $(DEBUGGER) 
+  otherlibraries ocamldoc.byte ocamlbuild.byte $(CAMLP4OUT) $(DEBUGGER)
 
 # The compilation of ocaml will fail if the runtime has changed.
 # Never mind, just do make bootstrap to reach fixpoint again.
@@ -221,22 +200,24 @@ opt.opt: core opt-core ocamlc.opt all ocamlopt.opt ocamllex.opt \
 world.opt: coldstart opt.opt
 
 # Installation
+
+COMPLIBDIR=$(LIBDIR)/compiler-libs
+
 install: installbyt installopt
 
 installbyt:
        mkdir -p $(BINDIR)
        mkdir -p $(LIBDIR)
+       mkdir -p $(COMPLIBDIR)
        cd byterun ; $(MAKEREC) install
        cp ocamlc $(BINDIR)/ocamlc.exe
        cp ocaml $(BINDIR)/ocaml.exe
        cd stdlib ; $(MAKEREC) install
        cp lex/ocamllex $(BINDIR)/ocamllex.exe
        cp yacc/ocamlyacc.exe $(BINDIR)/ocamlyacc.exe
-       cp toplevel/toplevellib.cma $(LIBDIR)/toplevellib.cma
+       cp utils/*.cmi parsing/*.cmi typing/*.cmi bytecomp/*.cmi driver/*.cmi toplevel/*.cmi $(COMPLIBDIR)
+       cp compilerlibs/ocamlcommon.cma compilerlibs/ocamlbytecomp.cma compilerlibs/ocamltoplevel.cma $(BYTESTART) $(TOPLEVELSTART) $(COMPLIBDIR)
        cp expunge $(LIBDIR)/expunge.exe
-       cp typing/outcometree.cmi typing/outcometree.mli $(LIBDIR)
-       cp toplevel/topstart.cmo $(LIBDIR)
-       cp toplevel/toploop.cmi toplevel/topdirs.cmi toplevel/topmain.cmi $(LIBDIR)
        cd tools ; $(MAKEREC) install
        cd ocamldoc ; $(MAKEREC) install
        mkdir -p $(STUBLIBDIR)
@@ -255,49 +236,78 @@ installopt:
        cd asmrun ; $(MAKEREC) install
        cp ocamlopt $(BINDIR)/ocamlopt.exe
        cd stdlib ; $(MAKEREC) installopt
+       cp asmcomp/*.cmi driver/*.cmi $(COMPLIBDIR)
+       cp compilerlibs/ocamloptcomp.cma $(OPTSTART) $(COMPLIBDIR)
        cd ocamldoc ; $(MAKEREC) installopt
        for i in $(OTHERLIBRARIES); do $(MAKEREC) -C otherlibs/$$i installopt; done
-       if test -f ocamlc.opt; \
-         then cp ocamlc.opt $(BINDIR)/ocamlc.opt.exe; else :; fi
-       if test -f ocamlopt.opt; \
-         then cp ocamlopt.opt $(BINDIR)/ocamlopt.opt.exe; else :; fi
-       if test -f lex/ocamllex.opt; \
-         then cp lex/ocamllex.opt $(BINDIR)/ocamllex.opt.exe; else :; fi
+       if test -f ocamlopt.opt ; then $(MAKEREC) installoptopt; fi
+
+installoptopt:
+       cp ocamlc.opt $(BINDIR)/ocamlc.opt$(EXE)
+       cp ocamlopt.opt $(BINDIR)/ocamlopt.opt$(EXE)
+       cp lex/ocamllex.opt $(BINDIR)/ocamllex.opt$(EXE)
+       cp compilerlibs/ocamlcommon.cmxa compilerlibs/ocamlcommon.a \
+        compilerlibs/ocamlbytecomp.cmxa compilerlibs/ocamlbytecomp.a \
+        compilerlibs/ocamloptcomp.cmxa compilerlibs/ocamloptcomp.a \
+        $(COMPLIBDIR)
 
 clean:: partialclean
 
 # The compiler
 
-ocamlc: $(COMPOBJS)
-       $(CAMLC) $(LINKFLAGS) -o ocamlc $(COMPOBJS)
+compilerlibs/ocamlcommon.cma: $(COMMON)
+       $(CAMLC) -a -o $@ $(COMMON)
+partialclean::
+       rm -f compilerlibs/ocamlcommon.cma
+
+# The bytecode compiler
+
+compilerlibs/ocamlbytecomp.cma: $(BYTECOMP)
+       $(CAMLC) -a -o $@ $(BYTECOMP)
+partialclean::
+       rm -f compilerlibs/ocamlbytecomp.cma
+
+ocamlc: compilerlibs/ocamlcommon.cma compilerlibs/ocamlbytecomp.cma $(BYTESTART)
+       $(CAMLC) $(LINKFLAGS) -o ocamlc \
+           compilerlibs/ocamlcommon.cma compilerlibs/ocamlbytecomp.cma $(BYTESTART)
        @sed -e 's|@compiler@|$$topdir/boot/ocamlrun $$topdir/ocamlc|' \
          driver/ocamlcomp.sh.in > ocamlcomp.sh
        @chmod +x ocamlcomp.sh
 
 partialclean::
-       rm -f ocamlc
+       rm -f ocamlc ocamlcomp.sh
 
 # The native-code compiler
 
-ocamlopt: $(OPTOBJS)
-       $(CAMLC) $(LINKFLAGS) -o ocamlopt $(OPTOBJS)
+compilerlibs/ocamloptcomp.cma: $(ASMCOMP)
+       $(CAMLC) -a -o $@ $(ASMCOMP)
+partialclean::
+       rm -f compilerlibs/ocamloptcomp.cma
+
+ocamlopt: compilerlibs/ocamlcommon.cma compilerlibs/ocamloptcomp.cma $(OPTSTART)
+       $(CAMLC) $(LINKFLAGS) -o ocamlopt \
+          compilerlibs/ocamlcommon.cma compilerlibs/ocamloptcomp.cma $(OPTSTART)
        @sed -e 's|@compiler@|$$topdir/boot/ocamlrun $$topdir/ocamlopt|' \
          driver/ocamlcomp.sh.in > ocamlcompopt.sh
        @chmod +x ocamlcompopt.sh
 
 partialclean::
-       rm -f ocamlopt
+       rm -f ocamlopt ocamlcompopt.sh
 
 # The toplevel
 
-ocaml: $(TOPOBJS) expunge
-       $(CAMLC) $(LINKFLAGS) -linkall -o ocaml.tmp $(TOPOBJS)
+compilerlibs/ocamltoplevel.cma: $(TOPLEVEL)
+       $(CAMLC) -a -o $@ $(TOPLEVEL)
+partialclean::
+       rm -f compilerlibs/ocamltoplevel.cma
+
+ocaml: compilerlibs/ocamlcommon.cma compilerlibs/ocamlbytecomp.cma compilerlibs/ocamltoplevel.cma $(TOPLEVELSTART) expunge
+       $(CAMLC) $(LINKFLAGS) -linkall -o ocaml.tmp \
+          compilerlibs/ocamlcommon.cma compilerlibs/ocamlbytecomp.cma \
+          compilerlibs/ocamltoplevel.cma $(TOPLEVELSTART)
        - $(CAMLRUN) ./expunge ocaml.tmp ocaml $(PERVASIVES)
        rm -f ocaml.tmp
 
-toplevel/toplevellib.cma: $(TOPLIB)
-       $(CAMLC) -a -o $@ $(TOPLIB)
-
 partialclean::
        rm -f ocaml
 
@@ -371,11 +381,24 @@ partialclean::
 
 beforedepend:: parsing/lexer.ml
 
+# Shared parts of the system compiled with the native-code compiler
+
+compilerlibs/ocamlcommon.cmxa: $(COMMON:.cmo=.cmx)
+       $(CAMLOPT) -a -o $@ $(COMMON:.cmo=.cmx)
+partialclean::
+       rm -f compilerlibs/ocamlcommon.cmxa compilerlibs/ocamlcommon.a
+
 # The bytecode compiler compiled with the native-code compiler
 
-ocamlc.opt: $(COMPOBJS:.cmo=.cmx)
-       cd asmrun ; $(MAKEREC) meta.$(O) dynlink.$(O)
-       $(CAMLOPT) $(LINKFLAGS) -o ocamlc.opt $(COMPOBJS:.cmo=.cmx) asmrun/meta.$(O) asmrun/dynlink.$(O)
+compilerlibs/ocamlbytecomp.cmxa: $(BYTECOMP:.cmo=.cmx)
+       $(CAMLOPT) -a -o $@ $(BYTECOMP:.cmo=.cmx)
+partialclean::
+       rm -f compilerlibs/ocamlbytecomp.cmxa compilerlibs/ocamlbytecomp.a
+
+ocamlc.opt: compilerlibs/ocamlcommon.cmxa compilerlibs/ocamlbytecomp.cmxa $(BYTESTART:.cmo=.cmx)
+       $(CAMLOPT) $(LINKFLAGS) -ccopt "$(BYTECCLINKOPTS)" -o ocamlc.opt \
+          compilerlibs/ocamlcommon.cmxa compilerlibs/ocamlbytecomp.cmxa \
+          $(BYTESTART:.cmo=.cmx) -cclib "$(BYTECCLIBS)"
        @sed -e 's|@compiler@|$$topdir/ocamlc.opt|' \
          driver/ocamlcomp.sh.in > ocamlcomp.sh
        @chmod +x ocamlcomp.sh
@@ -385,8 +408,15 @@ partialclean::
 
 # The native-code compiler compiled with itself
 
-ocamlopt.opt: $(OPTOBJS:.cmo=.cmx)
-       $(CAMLOPT) $(LINKFLAGS) -o ocamlopt.opt $(OPTOBJS:.cmo=.cmx)
+compilerlibs/ocamloptcomp.cmxa: $(ASMCOMP:.cmo=.cmx)
+       $(CAMLOPT) -a -o $@ $(ASMCOMP:.cmo=.cmx)
+partialclean::
+       rm -f compilerlibs/ocamloptcomp.cmxa compilerlibs/ocamloptcomp.a
+
+ocamlopt.opt: compilerlibs/ocamlcommon.cmxa compilerlibs/ocamloptcomp.cmxa $(OPTSTART:.cmo=.cmx)
+       $(CAMLOPT) $(LINKFLAGS) -o ocamlopt.opt \
+           compilerlibs/ocamlcommon.cmxa compilerlibs/ocamloptcomp.cmxa \
+           $(OPTSTART:.cmo=.cmx)
        @sed -e 's|@compiler@|$$topdir/ocamlopt.opt|' \
          driver/ocamlcomp.sh.in > ocamlcompopt.sh
        @chmod +x ocamlcompopt.sh
@@ -394,7 +424,7 @@ ocamlopt.opt: $(OPTOBJS:.cmo=.cmx)
 partialclean::
        rm -f ocamlopt.opt
 
-$(OPTOBJS:.cmo=.cmx): ocamlopt
+$(COMMON:.cmo=.cmx) $(BYTECOMP:.cmo=.cmx) $(ASMCOMP:.cmo=.cmx): ocamlopt
 
 # The numeric opcodes
 
@@ -489,8 +519,9 @@ tools/cvt_emit: tools/cvt_emit.mll
 
 # The "expunge" utility
 
-expunge: $(EXPUNGEOBJS)
-       $(CAMLC) $(LINKFLAGS) -o expunge $(EXPUNGEOBJS)
+expunge: compilerlibs/ocamlcommon.cma compilerlibs/ocamlbytecomp.cma toplevel/expunge.cmo
+       $(CAMLC) $(LINKFLAGS) -o expunge \
+          compilerlibs/ocamlcommon.cma compilerlibs/ocamlbytecomp.cma toplevel/expunge.cmo
 
 partialclean::
        rm -f expunge
diff --git a/README b/README
index 6090041f5dd3e9e8a77ac61976ed03404e04731a..eb9f8c39de5377966f1d90f94f5b57b2b00d08f6 100644 (file)
--- a/README
+++ b/README
@@ -132,4 +132,4 @@ You can also contact the implementors directly at caml@inria.fr.
 
 
 ----
-$Id$
+$Id: README 12149 2012-02-10 16:15:24Z doligez $
index 6f21ecb531446d81527d6a2f369fbdf9ddaa075d..54d42ef9257a1e2e61d3cb2ebbe63f457b689c62 100644 (file)
@@ -317,7 +317,26 @@ the OCaml packages).  Alternatively, recompile from the source distribution.
 
 RECOMPILATION FROM THE SOURCES:
 
-Just follow the instructions for Unix machines given in the file INSTALL.
+You will need to recompile (and install) flexdll from source with
+Cygwin's C compiler because the official binary version of flexdll
+doesn't handle Cygwin's symbolic links and sometimes fails to
+launch the C compiler.
+
+In order to recompile flexdll, you first need to configure, compile,
+and install OCaml without flexdll support (by following the instructions
+in file INSTALL, except the "make opt.opt" part), then modify the
+flexdll Makefile to change line 51 from:
+  LINKFLAGS = -ccopt "-link version_res.o"
+to:
+  LINKFLAGS = -cclib version_res.o
+
+Then "make CHAINS=cygwin" and add the flexdll directory to your PATH.
+Make sure to add it before "/usr/bin" or you will get cygwin's flexlink.
+
+Then, OCaml's source directory, type:
+  make clean
+  make distclean
+and follow the instructions for Unix machines given in the file INSTALL.
 
 
 NOTES:
diff --git a/VERSION b/VERSION
index c3a421f747c8ce0c016ccd6b8542337ea4fcbb05..58bb292716215c19818813ca4504c1128117bb07 100644 (file)
--- a/VERSION
+++ b/VERSION
@@ -1,6 +1,6 @@
-4.00.0+dev15_2012-04-16
+4.00.0+beta2
 
 # The version string is the first line of this file.
 # It must be in the format described in stdlib/sys.mli
 
-# $Id$
+# $Id: VERSION 12567 2012-06-04 17:01:09Z doligez $
diff --git a/_tags b/_tags
index 82c7c649e8e9ca768fd43b721f83d4357fc7da49..0f1b6f66258a3182b4c5c617e0d272fac9265d21 100644 (file)
--- a/_tags
+++ b/_tags
@@ -17,7 +17,7 @@ true: -traverse
 # Traverse only these directories
 <{bytecomp,driver,stdlib,tools,asmcomp,camlp4,ocamlbuild,toplevel,ocamldoc,typing,otherlibs,utils,debugger,lex,parsing,byterun,asmrun}/**>: traverse
 
-"boot" or "byterun" or "asmrun": not_hygienic
+"boot" or "byterun" or "asmrun" or "compilerlibs": not_hygienic
 
 # These should not be required but it fails on *BSD and Windows...
 "yacc" or "win32caml": not_hygienic
index 8e065d9ae09f4426beeed87fc26b699f9bbeae2d..c4e5efb48c8697aaad47ccde9e1e8e436ac76273 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: arch.ml 12187 2012-02-24 10:13:02Z xleroy $ *)
 
 (* Machine-specific command-line options *)
 
index 7dd55c964f4758950daa44aa19b4bd5e6e1bc251..35c7f313ee17d1885ad4fc63cf439e32506d374e 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: emit.mlp 12448 2012-05-12 09:49:40Z xleroy $ *)
 
 (* Emission of x86-64 (AMD 64) assembly code *)
 
@@ -769,6 +769,7 @@ let data l =
 (* Beginning / end of an assembly file *)
 
 let begin_assembly() =
+  reset_debug_info();                   (* PR#5603 *)
   if !Clflags.dlcode then begin
     (* from amd64.S; could emit these constants on demand *)
     if macosx then
index 6dbbb83e6ef2a8366da6968c007c44a510ffbe4f..48646b7722b7863ccbac89741d24b2b028be6d8b 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: emit_nt.mlp 11887 2011-12-18 10:00:56Z xleroy $ *)
 
 (* Emission of x86-64 (AMD 64) assembly code, MASM syntax *)
 
index 01132e6cbbb3a1a737fe0915b803bf8007772e6b..d3082139c932cb232c853c2577b45e1a4b8ba32b 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: proc.ml 12149 2012-02-10 16:15:24Z doligez $ *)
 
 (* Description of the AMD64 processor *)
 
index e7d5e23b02348aeb56521588fd1d7b492bb26712..50a28d2c7cf51c1889c08847131f56f73bfd53e8 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: reload.ml 11156 2011-07-27 14:17:02Z doligez $ *)
 
 open Cmm
 open Arch
index 8ba88f4a7963cfbb9a1c7a8f38f1ef2ad6b29180..fba887665f406b2bd0e7620166425e10a2c38492 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: scheduling.ml 11156 2011-07-27 14:17:02Z doligez $ *)
 
 open Schedgen (* to create a dependency *)
 
index 9c4464aed9f0a6925b7f368b70c707d6433fb4bf..8e75baaea8580d76e19a6c5e94619c2eb3fd7f9a 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: selection.ml 12122 2012-02-04 10:00:09Z bmeurer $ *)
 
 (* Instruction selection for the AMD64 *)
 
index c4aca8df0f0779e6756b67729889a0348dbbda74..a275b32b6874189ef8ba2835c97800018363189a 100644 (file)
@@ -11,7 +11,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: arch.ml 12187 2012-02-24 10:13:02Z xleroy $ *)
 
 (* Specific operations for the ARM processor *)
 
index 846ee4ae3b70c03f138d53d8d8c54e7020903f88..0310b4a72ee16210e312cc7e7300176524a917be 100644 (file)
@@ -11,7 +11,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: emit.mlp 12547 2012-06-02 18:00:43Z bmeurer $ *)
 
 (* Emission of ARM assembly code *)
 
@@ -243,11 +243,28 @@ let emit_intconst dst n =
 
 (* Adjust sp (up or down) by the given byte amount *)
 
-let emit_stack_adjustment instr n =
-  if n <= 0 then 0 else
-    decompose_intconst (Int32.of_int n)
-      (fun bits ->
-        `      {emit_string instr}     sp, sp, #{emit_int32 bits}\n`)
+let emit_stack_adjustment n =
+  if n = 0 then 0 else begin
+    let instr = if n < 0 then "sub" else "add" in
+    let ninstr = decompose_intconst (Int32.of_int (abs n))
+                   (fun bits ->
+                     ` {emit_string instr}     sp, sp, #{emit_int32 bits}\n`) in
+    cfi_adjust_cfa_offset (-n);
+    ninstr
+  end
+
+(* Deallocate the stack frame before a return or tail call *)
+
+let output_epilogue f =
+  let n = frame_size() in
+  if n > 0 then begin
+    let ninstr = emit_stack_adjustment n in
+    let ninstr = ninstr + f () in
+    (* reset CFA back cause function body may continue *)
+    cfi_adjust_cfa_offset n;
+    ninstr
+  end else
+    f ()
 
 (* Name of current function *)
 let function_name = ref ""
@@ -347,6 +364,7 @@ let emit_load_symbol_addr dst s =
 (* Output the assembly code for an instruction *)
 
 let emit_instr i =
+    emit_debug_info i.dbg;
     match i.desc with
       Lend -> 0
     | Lop(Imove | Ispill | Ireload) ->
@@ -423,22 +441,20 @@ let emit_instr i =
         `      {emit_call s}\n`;
         `{record_frame i.live i.dbg}\n`; 1
     | Lop(Itailcall_ind) ->
-        let n = frame_size() in
-        if !contains_calls then
-          `    ldr     lr, [sp, #{emit_int (n-4)}]\n`;
-        let ninstr = emit_stack_adjustment "add" n in
-        `      bx      {emit_reg i.arg.(0)}\n`;
-        2 + ninstr
+        output_epilogue begin fun () ->
+          if !contains_calls then
+            `  ldr     lr, [sp, #{emit_int (-4)}]\n`;
+          `    bx      {emit_reg i.arg.(0)}\n`; 2
+        end
     | Lop(Itailcall_imm s) ->
         if s = !function_name then begin
           `    b       {emit_label !tailrec_entry_point}\n`; 1
         end else begin
-          let n = frame_size() in
-          if !contains_calls then
-            `  ldr     lr, [sp, #{emit_int (n-4)}]\n`;
-          let ninstr = emit_stack_adjustment "add" n in
-          `    {emit_jump s}\n`;
-          2 + ninstr
+          output_epilogue begin fun () ->
+            if !contains_calls then
+              `        ldr     lr, [sp, #{emit_int (-4)}]\n`;
+            `  {emit_jump s}\n`; 2
+          end
         end
     | Lop(Iextcall(s, false)) ->
         `      {emit_call s}\n`; 1
@@ -449,10 +465,7 @@ let emit_instr i =
         1 + ninstr
     | Lop(Istackoffset n) ->
         assert (n mod 8 = 0);
-        let ninstr =
-          if n >= 0
-          then emit_stack_adjustment "sub" n
-          else emit_stack_adjustment "add" (-n) in
+        let ninstr = emit_stack_adjustment (-n) in
         stack_offset := !stack_offset + n;
         ninstr
     | Lop(Iload(Single, addr)) when !fpu >= VFPv3_D16 ->
@@ -672,9 +685,9 @@ let emit_instr i =
         let n = frame_size() in
         `      ldr     lr, [sp, #{emit_int(n-4)}]\n`; 1
     | Lreturn ->
-        let ninstr = emit_stack_adjustment "add" (frame_size()) in
-        `      bx      lr\n`;
-        ninstr + 1
+        output_epilogue begin fun () ->
+          `    bx      lr\n`; 1
+        end
     | Llabel lbl ->
         `{emit_label lbl}:\n`; 0
     | Lbranch lbl ->
@@ -734,39 +747,50 @@ let emit_instr i =
         4
     | Lswitch jumptbl ->
         if !arch > ARMv6 && !thumb then begin
-          let lbl = new_label() in
-          `    tbh     [pc, {emit_reg i.arg.(0)}]\n`;
-          `{emit_label lbl}:`;
-          for i = 0 to Array.length jumptbl - 1 do
-            `  .short  ({emit_label jumptbl.(i)}-{emit_label lbl})/2\n`;
+          (* The Thumb-2 TBH instruction supports only forward branches,
+             so we need to generate appropriate trampolines for all labels
+             that appear before this switch instruction (PR#5623) *)
+          let tramtbl = Array.copy jumptbl in
+          `    tbh     [pc, {emit_reg i.arg.(0)}, lsl #1]\n`;
+          for j = 0 to Array.length tramtbl - 1 do
+            let rec label i =
+              match i.desc with
+                Lend -> new_label()
+              | Llabel lbl when lbl = tramtbl.(j) -> lbl
+              | _ -> label i.next in
+            tramtbl.(j) <- label i.next;
+            `  .short  ({emit_label tramtbl.(j)}-.)/2+{emit_int j}\n`
           done;
-          `    .align  1\n`;
-          2 + Array.length jumptbl / 2
+          (* Generate the necessary trampolines *)
+          for j = 0 to Array.length tramtbl - 1 do
+            if tramtbl.(j) <> jumptbl.(j) then
+              `{emit_label tramtbl.(j)}:       b       {emit_label jumptbl.(j)}\n`
+          done
+        end else if not !pic_code then begin
+          `    ldr     pc, [pc, {emit_reg i.arg.(0)}, lsl #2]\n`;
+          `    nop\n`;
+          for j = 0 to Array.length jumptbl - 1 do
+            `  .word   {emit_label jumptbl.(j)}\n`
+          done
         end else begin
-          if not !pic_code then begin
-            `  ldr     pc, [pc, {emit_reg i.arg.(0)}, lsl #2]\n`;
-            `  nop\n`;
-            for i = 0 to Array.length jumptbl - 1 do
-              `        .word   {emit_label jumptbl.(i)}\n`
-            done
-          end else begin
-            (* Slightly slower, but position-independent *)
-            `  add     pc, pc, {emit_reg i.arg.(0)}, lsl #2\n`;
-            `  nop\n`;
-            for i = 0 to Array.length jumptbl - 1 do
-              `        b       {emit_label jumptbl.(i)}\n`
-            done
-          end;
-          2 + Array.length jumptbl
-        end
+          (* Slightly slower, but position-independent *)
+          `    add     pc, pc, {emit_reg i.arg.(0)}, lsl #2\n`;
+          `    nop\n`;
+          for j = 0 to Array.length jumptbl - 1 do
+            `  b       {emit_label jumptbl.(j)}\n`
+          done
+        end;
+        2 + Array.length jumptbl
     | Lsetuptrap lbl ->
         `      bl      {emit_label lbl}\n`; 1
     | Lpushtrap ->
         stack_offset := !stack_offset + 8;
         `      push    \{trap_ptr, lr}\n`;
+        cfi_adjust_cfa_offset 8;
         `      mov     trap_ptr, sp\n`; 2
     | Lpoptrap ->
         `      pop     \{trap_ptr, lr}\n`;
+        cfi_adjust_cfa_offset (-8);
         stack_offset := !stack_offset - 8; 1
     | Lraise ->
         if !Clflags.debug then begin
@@ -831,16 +855,21 @@ let fundecl fundecl =
     `  .arm\n`;
   `    .type   {emit_symbol fundecl.fun_name}, %function\n`;
   `{emit_symbol fundecl.fun_name}:\n`;
+  emit_debug_info fundecl.fun_dbg;
+  cfi_startproc();
   if !Clflags.gprofile then emit_profile();
   let n = frame_size() in
-  ignore(emit_stack_adjustment "sub" n);
-  if !contains_calls then
-    `  str     lr, [sp, #{emit_int(n - 4)}]\n`;
+  if n > 0 then begin
+    ignore(emit_stack_adjustment (-n));
+    if !contains_calls then
+      `        str     lr, [sp, #{emit_int(n - 4)}]\n`
+  end;
   `{emit_label !tailrec_entry_point}:\n`;
   emit_all 0 fundecl.fun_body;
   emit_literals();
   List.iter emit_call_gc !call_gc_sites;
   List.iter emit_call_bound_error !bound_error_sites;
+  cfi_endproc();
   `    .type   {emit_symbol fundecl.fun_name}, %function\n`;
   `    .size   {emit_symbol fundecl.fun_name}, .-{emit_symbol fundecl.fun_name}\n`
 
@@ -869,6 +898,7 @@ let data l =
 (* Beginning / end of an assembly file *)
 
 let begin_assembly() =
+  reset_debug_info();
   `    .syntax unified\n`;
   begin match !arch with
   | ARMv4   -> `       .arch   armv4t\n`
index aed2b01a7696438daf9685b99270065f40fdc332..35fdc8ff680aa181063c08bee4d899fb0922c016 100644 (file)
@@ -11,7 +11,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: proc.ml 12125 2012-02-05 08:47:16Z bmeurer $ *)
 
 (* Description of the ARM processor *)
 
index c5b137abcf1567aface899221556b8e3a590b08d..7789790cb0a734e2c325f5e99c6ef52ae1a4268c 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: reload.ml 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (* Reloading for the ARM *)
 
index 4b47733f1f578541e37649b9bf49d73766293294..703b02f148e72f0abe0640ed435e02c572b9a9a8 100644 (file)
@@ -11,7 +11,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: scheduling.ml 12125 2012-02-05 08:47:16Z bmeurer $ *)
 
 open Arch
 open Mach
index 94d0367befbe332ebd3e2ed4fa586a0c2e74c974..ecda3829fc145d229eeea878d8b8633a2761d254 100644 (file)
@@ -11,7 +11,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: selection.ml 12125 2012-02-05 08:47:16Z bmeurer $ *)
 
 (* Instruction selection for the ARM processor *)
 
index 5f513db1bb2c45fa9e2179851f20817c94d4b460..f152bb3f6adbff4d90026b8fcce7bb9ddd6073ce 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: asmgen.ml 12202 2012-03-07 17:50:17Z frisch $ *)
 
 (* From lambda to assembly code *)
 
index f71cba8f7cedc6e2e318049f9a14722882f9568d..9c1b01ac40c769982817c7abbba0bbb3f7342a0e 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: asmgen.mli 12058 2012-01-20 14:23:34Z frisch $ *)
 
 (* From lambda to assembly code *)
 
index e0d2170b5a01e093a54d1ae053d2fb277058f80a..f6424ec6ec37421c95aaf211cedafef7ab4a4c6a 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: asmlibrarian.ml 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (* Build libraries of .cmx files *)
 
index 20a0380c9c214bd927b6cb51dce385a98d7343af..692947cf39092eceb7d19eb25daeca5205781c2b 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: asmlibrarian.mli 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (* Build libraries of .cmx files *)
 
index e99e62a3974843a08a8f55f525282c844e87a311..33eaa3f1d521cf9dfbbedc0b8292a2969a912958 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: asmlink.ml 12201 2012-03-07 17:40:17Z frisch $ *)
 
 (* Link a set of .cmx/.o files and produce an executable *)
 
index b9465f8090ca7c926f6efd0bba9418832c6252e4..db4e9ab890e5631c2bc4ff3ccc9f980fff61f69d 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: asmlink.mli 12058 2012-01-20 14:23:34Z frisch $ *)
 
 (* Link a set of .cmx/.o files and produce an executable or a plugin *)
 
index 3f44a0a9816bfb69623b6e123e909f055351d1c4..530fbe263f2fedc61938064d249f00cfe1bc4f74 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: asmpackager.ml 12202 2012-03-07 17:50:17Z frisch $ *)
 
 (* "Package" a set of .cmx/.o files into one .cmx/.o file having the
    original compilation units as sub-modules. *)
index fafccfea3b3e226ff0a6b1417752bbe64c034dc0..e4f39801655686fa4e2ff825d221d21287e75931 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: asmpackager.mli 12058 2012-01-20 14:23:34Z frisch $ *)
 
 (* "Package" a set of .cmx/.o files into one .cmx/.o file having the
    original compilation units as sub-modules. *)
index 9a01de819e4f6b828b6790d3b4710d84badcf494..e05c3c08a53ec7c55fb0d7bcc3bae057467463ca 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: clambda.ml 12179 2012-02-21 17:41:02Z xleroy $ *)
 
 (* A variant of the "lambda" code with direct / indirect calls explicit
    and closures explicit too *)
index 808c1c6dae3b6a1e509ffd497104e1d1de152a0c..a7d33db2f709356b033325f5c22eded2527fce53 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: clambda.mli 12179 2012-02-21 17:41:02Z xleroy $ *)
 
 (* A variant of the "lambda" code with direct / indirect calls explicit
    and closures explicit too *)
index 03ed0c12418acfde17ae8a809221a0abc9fda52c..1984ee05b8b2cac6535aa4c6f5455e0d9c9a854d 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: closure.ml 12179 2012-02-21 17:41:02Z xleroy $ *)
 
 (* Introduction of closures, uncurrying, recognition of direct calls *)
 
index f406603c2cdaca53a4ca0f98b4ee110d24c14803..209c5b0eeedc0932f0aef74976f3216560e5b6d2 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: closure.mli 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (* Introduction of closures, uncurrying, recognition of direct calls *)
 
index 7787a22042f66882566a48fe502b5d3212edc598..96fa1caf8850af17b927f9192985a139b5f93070 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: cmm.ml 12179 2012-02-21 17:41:02Z xleroy $ *)
 
 type machtype_component =
     Addr
index 5787bcb961c42c240b68755f41840a89fe237c59..b3a1cbe211d1d83f3ed34e2258ac5a1dba9c9933 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: cmm.mli 12179 2012-02-21 17:41:02Z xleroy $ *)
 
 (* Second intermediate language (machine independent) *)
 
index 0b5d09db7d2a527d7146a0881a36f4c8cd12f2da..eea15f5e623764aa097bb5c8cce95ec599f2bf8b 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: cmmgen.ml 12237 2012-03-14 09:26:54Z xleroy $ *)
 
 (* Translation from closed lambda to C-- *)
 
index a192b985e1401a73f7bfbe7671b2ca4190a56c18..51a949e0b0848be0e552d1753d38e57b08fdf00f 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: cmmgen.mli 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (* Translation from closed lambda to C-- *)
 
index 69cd38234f71b2fd3d33ccd045afac5535365121..d64fc2fd6e76c3a50570d5664edb99e656c4bdb3 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: cmx_format.mli 12210 2012-03-08 19:52:03Z doligez $ *)
 
 (* Format of .cmx, .cmxa and .cmxs files *)
 
index 4b71503f9dd90d099c85dadeb99cca045a67f15a..ff2c4c18a4b60f2b04f053a697311821b074b61b 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: codegen.ml 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (* From C-- to assembly code *)
 
index 43f98e50b2fa663edacb70bf150a4058187f6574..c3adc1cdba044b7973a7e4dc436a479e4984a211 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: codegen.mli 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (* From C-- to assembly code *)
 
index 06c1eb82465777bbb5f942d06586a97cc0a4ad1b..b9581f559e0fd5a80878972cfc5f79bf6a13402e 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: coloring.ml 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (* Register allocation by coloring of the interference graph *)
 
index 72576fa10a44ca7d8645a8f436dbba7c6fe6c55d..7b23aa8858bfd968f69ce1415e156ff7f0a63f40 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: coloring.mli 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (* Register allocation by coloring of the interference graph *)
 
index 9767d2638a0bc98a124a80d2a6d0743de4646f6a..7dc42fd60e47e4a316ffa4133850b6b2de7faad8 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: comballoc.ml 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (* Combine heap allocations occurring in the same basic block *)
 
index 20be980544b3ff31bf3bdd9468107c65d9565c12..52f1d1154a89034297c98159de6e3121acf3e6c5 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: comballoc.mli 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (* Combine heap allocations occurring in the same basic block *)
 
index 4c6e72d0b5a4dfda29f6cdf912159c3a3dff9d45..9a0bb416614383db280a988537371c48fb9f7214 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: compilenv.ml 12202 2012-03-07 17:50:17Z frisch $ *)
 
 (* Compilation environments for compilation units *)
 
index 3e4d83e20e5b3b2a870de19bccda175c72142099..3ff997e4af747b6c8157158cc9ba3e25f67c71ee 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: compilenv.mli 12210 2012-03-08 19:52:03Z doligez $ *)
 
 (* Compilation environments for compilation units *)
 
index e2ff68ffcd97b2c178496064d2825b61bac5ff38..adc5f3e92c5af761c527bdedb2d35a98d3bd7bea 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: emit.mli 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (* Generation of assembly code *)
 
index 712b848f7e1efab7a75dfe8645e9ee25446468fa..1fffc65aa3d524e1d0760f04120dd976573f64ad 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: emitaux.ml 12448 2012-05-12 09:49:40Z xleroy $ *)
 
 (* Common functions for emitting assembly code *)
 
@@ -123,12 +123,17 @@ let file_pos_nums =
 (* Number of files *)
 let file_pos_num_cnt = ref 1
 
+(* Reset debug state at beginning of asm file *)
+let reset_debug_info () =
+  file_pos_nums := [];
+  file_pos_num_cnt := 1
+
 (* We only diplay .file if the file has not been seen before. We
    display .loc for every instruction. *)
 let emit_debug_info dbg =
-  let line = dbg.Debuginfo.dinfo_line in
-  let file_name = dbg.Debuginfo.dinfo_file in
   if !Clflags.debug && not (Debuginfo.is_none dbg) then (
+    let line = dbg.Debuginfo.dinfo_line in
+    let file_name = dbg.Debuginfo.dinfo_file in
     let file_num =
       try List.assoc file_name !file_pos_nums
       with Not_found ->
index dd2f5b8c89689401eeba012f2faaa42dbffcb937..4a1934e2537cb9e65c2ad47d8941ad1912959d14 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: emitaux.mli 12448 2012-05-12 09:49:40Z xleroy $ *)
 
 (* Common functions for emitting assembly code *)
 
@@ -29,6 +29,7 @@ val emit_float64_directive: string -> string -> unit
 val emit_float64_split_directive: string -> string -> unit
 val emit_float32_directive: string -> string -> unit
 
+val reset_debug_info: unit -> unit
 val emit_debug_info: Debuginfo.t -> unit
 
 type frame_descr =
index e6fb8b9008dd94bbe054b4092c4bdc6c61f26d2d..f5e21e5436a3a5526a66f484ca3c07c74de4ac2c 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: arch.ml 12187 2012-02-24 10:13:02Z xleroy $ *)
 
 (* Machine-specific command-line options *)
 
index d52b1db6708c00e2c03414978eeda9f0b418e7d4..e7694d07ed37219c8294570b03e5c8486c0e00d4 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: emit.mlp 12448 2012-05-12 09:49:40Z xleroy $ *)
 
 (* Emission of Intel 386 assembly code *)
 
@@ -988,6 +988,7 @@ let data l =
 (* Beginning / end of an assembly file *)
 
 let begin_assembly() =
+  reset_debug_info();                   (* PR#5603 *)
   let lbl_begin = Compilenv.make_symbol (Some "data_begin") in
   `    .data\n`;
   `    .globl  {emit_symbol lbl_begin}\n`;
index 48704ab4013b418e61b712467354ea19fcf3f504..6f4f83093c7f38729c3dcfcea248fe7edaba0a49 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: emit_nt.mlp 12166 2012-02-18 16:56:29Z xleroy $ *)
 
 (* Emission of Intel 386 assembly code, MASM syntax. *)
 
index 10ac59bfced13ce3402e4bffda58eac2008f7ef5..c35172c5569f559266b361802fbd57a15c500c55 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: proc.ml 11319 2011-12-16 17:02:48Z xleroy $ *)
 
 (* Description of the Intel 386 processor *)
 
index 66ad6a140752fddb3e109c2dcd6e02b0098ea2f0..041c114d20174dbc15189c55e2928d5b472c0e28 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: reload.ml 11156 2011-07-27 14:17:02Z doligez $ *)
 
 open Cmm
 open Arch
index cbfaa2111073c501b6871c79bfd09bd245fc0ace..a2c21d3fb30eef98391a8d1def10f69c965db030 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: scheduling.ml 11156 2011-07-27 14:17:02Z doligez $ *)
 
 open Schedgen (* to create a dependency *)
 
index 38c7a1d73049d0219454666bb0a79a1f85e0ffc9..8770c57c772aa54a2959306fc90ec18a81810cd3 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: selection.ml 12123 2012-02-04 10:00:44Z bmeurer $ *)
 
 (* Instruction selection for the Intel x86 *)
 
index f22672b55d989c5c796962ca13f3230a3b5eeb10..4359a80207e045538fd244545e201a58ef4ad994 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: interf.ml 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (* Construction of the interference graph.
    Annotate pseudoregs with interference lists and preference lists. *)
index 9e16f83641a0f5e5a1dcc43b9465b297267d1aab..e400d53b8481f8c14b00470de6e0a4fcccdc2ae4 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: interf.mli 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (* Construction of the interference graph.
    Annotate pseudoregs with interference lists and preference lists. *)
index 8a5411876a22d79295c0074a796aa1b0fe7b8b04..6b918ffd1f76863e537bf86471f3fb01841fd311 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: linearize.ml 12179 2012-02-21 17:41:02Z xleroy $ *)
 
 (* Transformation of Mach code into a list of pseudo-instructions. *)
 
index 9fbe14ddb0e5ff4ee8d70b97cf6e1a913ad1aac6..05866ef3d2eeee8a89cb988e22a38ec243b4a558 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: linearize.mli 12179 2012-02-21 17:41:02Z xleroy $ *)
 
 (* Transformation of Mach code into a list of pseudo-instructions. *)
 
index 74a034fb391963c7a8ceaf2ee56616756dd88e7a..eeaff44234133a95b993ab86b7dbfd03bd05b183 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: liveness.ml 12058 2012-01-20 14:23:34Z frisch $ *)
 
 (* Liveness analysis.
    Annotate mach code with the set of regs live at each point. *)
index 8a25a27bc686cef78adc21d5a2dfe0defe6f496a..622fcb480813a4bb3c433a7947d503eb198d6182 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: liveness.mli 12058 2012-01-20 14:23:34Z frisch $ *)
 
 (* Liveness analysis.
    Annotate mach code with the set of regs live at each point. *)
index 3d29bde11ba1e7925b22eb258d78414d23fcd34d..ad81f01c8969925a180230cdf3c0df4e4615df44 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: mach.ml 12179 2012-02-21 17:41:02Z xleroy $ *)
 
 (* Representation of machine code by sequences of pseudoinstructions *)
 
index 05cc999b5364420e2c7115ce10e33c58593d1b4d..9c2a0c04ef50ef34970a8fbafa9ec69d7fb5ed8d 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: mach.mli 12179 2012-02-21 17:41:02Z xleroy $ *)
 
 (* Representation of machine code by sequences of pseudoinstructions *)
 
index c0557244ba3283aeb59984f7f89705f00867392a..696073e3cc3da19723d609942674b2925b599efb 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: arch.ml 12187 2012-02-24 10:13:02Z xleroy $ *)
 
 (* Specific operations for the PowerPC processor *)
 
index 38586076f2f1b9497532222fad1b13da474a1ed6..1d83ce4d72476df5aafe5492435afebe48273d74 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: emit.mlp 11887 2011-12-18 10:00:56Z xleroy $ *)
 
 (* Emission of PowerPC assembly code *)
 
index 6eaacbbad0fc6af2a35d69b80e5b0e890b66700f..011f6ff8e33851f4adbff79b5a6acc9a4ec985c0 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: proc.ml 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (* Description of the Power PC *)
 
index ef0ab79df653042f1a2d387fb57d5097639b39ec..7cc288d7e2fcd947278ee5de794246afbffc62c8 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: reload.ml 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (* Reloading for the PowerPC *)
 
index 90d08831d57600fd0b46a704e6f8f153e0c3dc68..41817611a808a2c9dae7805ff9641388af02c60d 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: scheduling.ml 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (* Instruction scheduling for the Power PC *)
 
index 179548af5c5dc4aba737b08aa89aa95a8be5540f..c39bf53c6ee5483bcd06a4ba537940a53bfcd560 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: selection.ml 12120 2012-02-04 09:43:33Z bmeurer $ *)
 
 (* Instruction selection for the Power PC processor *)
 
index ca1c0f11c3823f5375b97f9089968bac9e8bbff8..99af9d52cff6e59fe6819cb32be5f1f04c7e174a 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: printcmm.ml 12179 2012-02-21 17:41:02Z xleroy $ *)
 
 (* Pretty-printing of C-- code *)
 
index c64657653182537e6e52e1122f020bf22f00a4d9..36bc1384b0529c9060e8c5ba8c6779ecba6f066c 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: printcmm.mli 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (* Pretty-printing of C-- code *)
 
index 754a4361208ee5b5fbe3e57e8d99c24c70a219aa..44a3959766031e05717be0b6929ee9e5f22aa00e 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: printlinear.ml 12179 2012-02-21 17:41:02Z xleroy $ *)
 
 (* Pretty-printing of linearized machine code *)
 
index bb179c94c1d4f635eaf21a4e019a6c273a395bb6..df6b79834c95cc399c7ceb33fd927ce28be6c68b 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: printlinear.mli 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (* Pretty-printing of linearized machine code *)
 
index 93d0a02247bdd587188688b40c761a4f06db98ea..5f6481586374ef12955231f973f87a2641a1c213 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: printmach.ml 12179 2012-02-21 17:41:02Z xleroy $ *)
 
 (* Pretty-printing of pseudo machine code *)
 
index 509018d54c66497fb97567eab89752ccedff9bad..3ce050938001017c1fb8559122371ce10b5f29c8 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: printmach.mli 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (* Pretty-printing of pseudo machine code *)
 
index 7d0a5e485bc4dd1832b7aff0d1046604324256bc..7a27c53b12b4d08bc2f03e9455ff2cb6aeb57b0a 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: proc.mli 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (* Processor descriptions *)
 
index 30c0ab5ab03b9305aea6b7506aaf3b0b92060886..6c990b6427c4e1cbb75f6d5c520cf104e519a8d0 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: reg.ml 11156 2011-07-27 14:17:02Z doligez $ *)
 
 open Cmm
 
index 11e314f6139a750ef091c819b410803ea1d54f3f..a7c4b00e11909bbc233dde232004b17b9a3e37a9 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: reg.mli 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (* Pseudo-registers *)
 
index ff4b1637a55d0874751c2061b1b0318bf1e622b1..4462ccd64096f8ed062c589d6e0fe2854f233d56 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: reload.mli 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (* Insert load/stores for pseudoregs that got assigned to stack locations. *)
 
index 9da79587a28eaae294b6c5eed85570fc3d559dd5..6cf83f63b46c0d7428e9330a46c7132c82ba9846 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: reloadgen.ml 12179 2012-02-21 17:41:02Z xleroy $ *)
 
 (* Insert load/stores for pseudoregs that got assigned to stack locations. *)
 
index 9f0b2b4e1d5cda6bb130149ab9e69f7e361ceef7..a98a02bff7fe640dd8036210cf877758720f053d 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: reloadgen.mli 11156 2011-07-27 14:17:02Z doligez $ *)
 
 class reload_generic : object
   method reload_operation :
index 89c031d1b79e3dc0a37f632df656c2b24681aa9c..956531cf5a936751e1337a14668b1c74bc4d2c8b 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: schedgen.ml 12179 2012-02-21 17:41:02Z xleroy $ *)
 
 (* Instruction scheduling *)
 
index e2c046d22964a9b5d54ec256bb938168305e5e73..661451e25bb281d26dcf9e96ad29d5a4a7ed0a9d 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: schedgen.mli 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (* Instruction scheduling *)
 
index a006d1f13f8e301a2e90fa3868a352d0176e8318..5475d011e1f183902b476a6e9e572eb4e32f1619 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: scheduling.mli 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (* Instruction scheduling *)
 
index e2ffd34ac833e20b0e4f2b63e3a79bd8bc9beb80..797cec57714ac62813acde0b8bb2535a8fc75229 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: selectgen.ml 12179 2012-02-21 17:41:02Z xleroy $ *)
 
 (* Selection of pseudo-instructions, assignment of pseudo-registers,
    sequentialization. *)
index 058f9e73e1a5c726fc0956006275c452ea6aa553..3d81f2ae1564f0f1465f31b4085b14230547997e 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: selectgen.mli 12120 2012-02-04 09:43:33Z bmeurer $ *)
 
 (* Selection of pseudo-instructions, assignment of pseudo-registers,
    sequentialization. *)
index a78cb1daec96fc490df490bc3a760f745005c745..9e20b228e0f402969d9b35c6dc56f10b9612cd65 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: selection.mli 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (* Selection of pseudo-instructions, assignment of pseudo-registers,
    sequentialization. *)
index beaf33a91282d4008da73d41488ae53a9a3bb30c..f0dbd0d1152237150baa3cca26274d442157c8fb 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: arch.ml 12187 2012-02-24 10:13:02Z xleroy $ *)
 
 (* Specific operations for the Sparc processor *)
 
index ef3fb9a8e3a6a653d97aca942431c716f4b139c0..e0d1590eae1bd35884905485f0bf6139f527238f 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: emit.mlp 11887 2011-12-18 10:00:56Z xleroy $ *)
 
 (* Emission of Sparc assembly code *)
 
index f7b204db5a337adcf46f49578216a90f3a9c5a06..4493354d6e0a997471df3b85d7daec5eab7a8bc8 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: proc.ml 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (* Description of the Sparc processor *)
 
index 6b1d8aea967ddbc9af18b93b01d657999940fe65..190897835dff4913bf17241b58a5853bbc3773fd 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: reload.ml 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (* Reloading for the Sparc *)
 
index 180af4b1933a332c3130fd91d65221c6324440d5..e89a52034950c3bd1c6a516965a1706f533187b6 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: scheduling.ml 11156 2011-07-27 14:17:02Z doligez $ *)
 
 open Cmm
 open Mach
index e82cc670aef42f686ec6c721ab117f368d5486dd..9de2b22d6bb50de80cf671a510455fade4d72870 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: selection.ml 12120 2012-02-04 09:43:33Z bmeurer $ *)
 
 (* Instruction selection for the Sparc processor *)
 
index 7b055959e8a9935abbf805cf2f9c0dc7910f1b0a..82f57a1b732d8ea3b0c04dc8f68e7ab152f2829e 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: spill.ml 12179 2012-02-21 17:41:02Z xleroy $ *)
 
 (* Insertion of moves to suggest possible spilling / reloading points
    before register allocation. *)
index 4db4222272c09d40c45eae2536fe294dbfb41858..731c88d9ec9015fa8b68d32a6f86f2f063e039d4 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: spill.mli 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (* Insertion of moves to suggest possible spilling / reloading points
    before register allocation. *)
index da5cdf1f5e8e57841565bd10c3922471c9f60f59..3abeab6711c901e2a2fb1f7da613545cd1f2fc8b 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: split.ml 12179 2012-02-21 17:41:02Z xleroy $ *)
 
 (* Renaming of registers at reload points to split live ranges. *)
 
index baf350d50bb239d57ad8c0b130eae506bcf571e2..a87f313e9ace32098b7a9615636f6d02d3d16009 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: split.mli 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (* Renaming of registers at reload points to split live ranges. *)
 
index 1bbfddcdedb70378acd4b42938203c81e4a902b7..92536795dab8735a8b6a40d86244e8ef53bf149a 100644 (file)
 alloc.o: alloc.c ../byterun/alloc.h ../byterun/misc.h ../byterun/config.h \
 ../byterun/../config/m.h ../byterun/../config/s.h ../byterun/mlvalues.h \
 ../byterun/custom.h ../byterun/major_gc.h ../byterun/freelist.h \
 ../byterun/memory.h ../byterun/gc.h ../byterun/major_gc.h \
 ../byterun/minor_gc.h ../byterun/mlvalues.h ../byterun/stacks.h \
 ../byterun/memory.h
+ ../byterun/../config/m.h ../byterun/../config/s.h ../byterun/mlvalues.h \
+ ../byterun/custom.h ../byterun/major_gc.h ../byterun/freelist.h \
+ ../byterun/memory.h ../byterun/gc.h ../byterun/major_gc.h \
+ ../byterun/minor_gc.h ../byterun/mlvalues.h ../byterun/stacks.h \
+ ../byterun/memory.h
 array.o: array.c ../byterun/alloc.h ../byterun/misc.h ../byterun/config.h \
 ../byterun/../config/m.h ../byterun/../config/s.h ../byterun/mlvalues.h \
 ../byterun/fail.h ../byterun/memory.h ../byterun/gc.h \
 ../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h \
 ../byterun/misc.h ../byterun/mlvalues.h
+ ../byterun/../config/m.h ../byterun/../config/s.h ../byterun/mlvalues.h \
+ ../byterun/fail.h ../byterun/memory.h ../byterun/gc.h \
+ ../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h \
+ ../byterun/misc.h ../byterun/mlvalues.h
 backtrace.o: backtrace.c ../byterun/alloc.h ../byterun/misc.h \
 ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
 ../byterun/mlvalues.h ../byterun/backtrace.h ../byterun/memory.h \
 ../byterun/gc.h ../byterun/major_gc.h ../byterun/freelist.h \
 ../byterun/minor_gc.h ../byterun/misc.h ../byterun/mlvalues.h stack.h
+ ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
+ ../byterun/mlvalues.h ../byterun/backtrace.h ../byterun/memory.h \
+ ../byterun/gc.h ../byterun/major_gc.h ../byterun/freelist.h \
+ ../byterun/minor_gc.h ../byterun/misc.h ../byterun/mlvalues.h stack.h
 callback.o: callback.c ../byterun/callback.h ../byterun/mlvalues.h \
 ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
 ../byterun/misc.h ../byterun/fail.h ../byterun/memory.h ../byterun/gc.h \
 ../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h \
 ../byterun/mlvalues.h
+ ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
+ ../byterun/misc.h ../byterun/fail.h ../byterun/memory.h ../byterun/gc.h \
+ ../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h \
+ ../byterun/mlvalues.h
 compact.o: compact.c ../byterun/config.h ../byterun/../config/m.h \
 ../byterun/../config/s.h ../byterun/finalise.h ../byterun/roots.h \
 ../byterun/misc.h ../byterun/config.h ../byterun/memory.h \
 ../byterun/gc.h ../byterun/mlvalues.h ../byterun/major_gc.h \
 ../byterun/freelist.h ../byterun/minor_gc.h ../byterun/freelist.h \
 ../byterun/gc.h ../byterun/gc_ctrl.h ../byterun/major_gc.h \
 ../byterun/memory.h ../byterun/mlvalues.h ../byterun/roots.h \
 ../byterun/weak.h
+ ../byterun/../config/s.h ../byterun/finalise.h ../byterun/roots.h \
+ ../byterun/misc.h ../byterun/config.h ../byterun/memory.h \
+ ../byterun/gc.h ../byterun/mlvalues.h ../byterun/major_gc.h \
+ ../byterun/freelist.h ../byterun/minor_gc.h ../byterun/freelist.h \
+ ../byterun/gc.h ../byterun/gc_ctrl.h ../byterun/major_gc.h \
+ ../byterun/memory.h ../byterun/mlvalues.h ../byterun/roots.h \
+ ../byterun/weak.h
 compare.o: compare.c ../byterun/custom.h ../byterun/mlvalues.h \
 ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
 ../byterun/misc.h ../byterun/fail.h ../byterun/memory.h ../byterun/gc.h \
 ../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h \
 ../byterun/misc.h ../byterun/mlvalues.h
+ ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
+ ../byterun/misc.h ../byterun/fail.h ../byterun/memory.h ../byterun/gc.h \
+ ../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h \
+ ../byterun/misc.h ../byterun/mlvalues.h
 custom.o: custom.c ../byterun/alloc.h ../byterun/misc.h \
 ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
 ../byterun/mlvalues.h ../byterun/custom.h ../byterun/fail.h \
 ../byterun/memory.h ../byterun/gc.h ../byterun/major_gc.h \
 ../byterun/freelist.h ../byterun/minor_gc.h ../byterun/mlvalues.h
+ ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
+ ../byterun/mlvalues.h ../byterun/custom.h ../byterun/fail.h \
+ ../byterun/memory.h ../byterun/gc.h ../byterun/major_gc.h \
+ ../byterun/freelist.h ../byterun/minor_gc.h ../byterun/mlvalues.h
 debugger.o: debugger.c ../byterun/alloc.h ../byterun/misc.h \
 ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
 ../byterun/mlvalues.h ../byterun/config.h ../byterun/debugger.h \
 ../byterun/misc.h
+ ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
+ ../byterun/mlvalues.h ../byterun/config.h ../byterun/debugger.h \
+ ../byterun/misc.h
 dynlink.o: dynlink.c ../byterun/config.h ../byterun/../config/m.h \
 ../byterun/../config/s.h ../byterun/alloc.h ../byterun/misc.h \
 ../byterun/config.h ../byterun/mlvalues.h ../byterun/dynlink.h \
 ../byterun/fail.h ../byterun/mlvalues.h ../byterun/memory.h \
 ../byterun/gc.h ../byterun/major_gc.h ../byterun/freelist.h \
 ../byterun/minor_gc.h ../byterun/misc.h ../byterun/osdeps.h \
 ../byterun/prims.h
+ ../byterun/../config/s.h ../byterun/alloc.h ../byterun/misc.h \
+ ../byterun/config.h ../byterun/mlvalues.h ../byterun/dynlink.h \
+ ../byterun/fail.h ../byterun/mlvalues.h ../byterun/memory.h \
+ ../byterun/gc.h ../byterun/major_gc.h ../byterun/freelist.h \
+ ../byterun/minor_gc.h ../byterun/misc.h ../byterun/osdeps.h \
+ ../byterun/prims.h
 extern.o: extern.c ../byterun/alloc.h ../byterun/misc.h \
 ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
 ../byterun/mlvalues.h ../byterun/custom.h ../byterun/fail.h \
 ../byterun/gc.h ../byterun/intext.h ../byterun/io.h ../byterun/io.h \
 ../byterun/md5.h ../byterun/memory.h ../byterun/gc.h \
 ../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h \
 ../byterun/misc.h ../byterun/mlvalues.h ../byterun/reverse.h
+ ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
+ ../byterun/mlvalues.h ../byterun/custom.h ../byterun/fail.h \
+ ../byterun/gc.h ../byterun/intext.h ../byterun/io.h ../byterun/io.h \
+ ../byterun/md5.h ../byterun/memory.h ../byterun/gc.h \
+ ../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h \
+ ../byterun/misc.h ../byterun/mlvalues.h ../byterun/reverse.h
 fail.o: fail.c ../byterun/alloc.h ../byterun/misc.h ../byterun/config.h \
 ../byterun/../config/m.h ../byterun/../config/s.h ../byterun/mlvalues.h \
 ../byterun/fail.h ../byterun/io.h ../byterun/gc.h ../byterun/memory.h \
 ../byterun/gc.h ../byterun/major_gc.h ../byterun/freelist.h \
 ../byterun/minor_gc.h ../byterun/mlvalues.h ../byterun/printexc.h \
 ../byterun/signals.h stack.h ../byterun/roots.h ../byterun/memory.h
+ ../byterun/../config/m.h ../byterun/../config/s.h ../byterun/mlvalues.h \
+ ../byterun/fail.h ../byterun/io.h ../byterun/gc.h ../byterun/memory.h \
+ ../byterun/gc.h ../byterun/major_gc.h ../byterun/freelist.h \
+ ../byterun/minor_gc.h ../byterun/mlvalues.h ../byterun/printexc.h \
+ ../byterun/signals.h stack.h ../byterun/roots.h ../byterun/memory.h
 finalise.o: finalise.c ../byterun/callback.h ../byterun/mlvalues.h \
 ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
 ../byterun/misc.h ../byterun/fail.h ../byterun/mlvalues.h \
 ../byterun/roots.h ../byterun/memory.h ../byterun/gc.h \
 ../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h \
 ../byterun/signals.h
+ ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
+ ../byterun/misc.h ../byterun/fail.h ../byterun/mlvalues.h \
+ ../byterun/roots.h ../byterun/memory.h ../byterun/gc.h \
+ ../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h \
+ ../byterun/signals.h
 floats.o: floats.c ../byterun/alloc.h ../byterun/misc.h \
 ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
 ../byterun/mlvalues.h ../byterun/fail.h ../byterun/memory.h \
 ../byterun/gc.h ../byterun/major_gc.h ../byterun/freelist.h \
 ../byterun/minor_gc.h ../byterun/mlvalues.h ../byterun/misc.h \
 ../byterun/reverse.h ../byterun/stacks.h ../byterun/memory.h
+ ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
+ ../byterun/mlvalues.h ../byterun/fail.h ../byterun/memory.h \
+ ../byterun/gc.h ../byterun/major_gc.h ../byterun/freelist.h \
+ ../byterun/minor_gc.h ../byterun/mlvalues.h ../byterun/misc.h \
+ ../byterun/reverse.h ../byterun/stacks.h ../byterun/memory.h
 freelist.o: freelist.c ../byterun/config.h ../byterun/../config/m.h \
 ../byterun/../config/s.h ../byterun/freelist.h ../byterun/misc.h \
 ../byterun/config.h ../byterun/mlvalues.h ../byterun/gc.h \
 ../byterun/gc_ctrl.h ../byterun/memory.h ../byterun/gc.h \
 ../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h \
 ../byterun/major_gc.h ../byterun/misc.h ../byterun/mlvalues.h
+ ../byterun/../config/s.h ../byterun/freelist.h ../byterun/misc.h \
+ ../byterun/config.h ../byterun/mlvalues.h ../byterun/gc.h \
+ ../byterun/gc_ctrl.h ../byterun/memory.h ../byterun/gc.h \
+ ../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h \
+ ../byterun/major_gc.h ../byterun/misc.h ../byterun/mlvalues.h
 gc_ctrl.o: gc_ctrl.c ../byterun/alloc.h ../byterun/misc.h \
 ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
 ../byterun/mlvalues.h ../byterun/compact.h ../byterun/custom.h \
 ../byterun/finalise.h ../byterun/roots.h ../byterun/memory.h \
 ../byterun/gc.h ../byterun/major_gc.h ../byterun/freelist.h \
 ../byterun/minor_gc.h ../byterun/freelist.h ../byterun/gc.h \
 ../byterun/gc_ctrl.h ../byterun/major_gc.h ../byterun/minor_gc.h \
 ../byterun/misc.h ../byterun/mlvalues.h stack.h
+ ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
+ ../byterun/mlvalues.h ../byterun/compact.h ../byterun/custom.h \
+ ../byterun/finalise.h ../byterun/roots.h ../byterun/memory.h \
+ ../byterun/gc.h ../byterun/major_gc.h ../byterun/freelist.h \
+ ../byterun/minor_gc.h ../byterun/freelist.h ../byterun/gc.h \
+ ../byterun/gc_ctrl.h ../byterun/major_gc.h ../byterun/minor_gc.h \
+ ../byterun/misc.h ../byterun/mlvalues.h stack.h
 globroots.o: globroots.c ../byterun/memory.h ../byterun/config.h \
 ../byterun/../config/m.h ../byterun/../config/s.h ../byterun/gc.h \
 ../byterun/mlvalues.h ../byterun/misc.h ../byterun/major_gc.h \
 ../byterun/freelist.h ../byterun/minor_gc.h ../byterun/misc.h \
 ../byterun/mlvalues.h ../byterun/roots.h ../byterun/memory.h \
 ../byterun/globroots.h ../byterun/roots.h
+ ../byterun/../config/m.h ../byterun/../config/s.h ../byterun/gc.h \
+ ../byterun/mlvalues.h ../byterun/misc.h ../byterun/major_gc.h \
+ ../byterun/freelist.h ../byterun/minor_gc.h ../byterun/misc.h \
+ ../byterun/mlvalues.h ../byterun/roots.h ../byterun/memory.h \
+ ../byterun/globroots.h ../byterun/roots.h
 hash.o: hash.c ../byterun/mlvalues.h ../byterun/config.h \
 ../byterun/../config/m.h ../byterun/../config/s.h ../byterun/misc.h \
 ../byterun/custom.h ../byterun/mlvalues.h ../byterun/memory.h \
 ../byterun/gc.h ../byterun/major_gc.h ../byterun/freelist.h \
 ../byterun/minor_gc.h ../byterun/hash.h ../byterun/int64_native.h
+ ../byterun/../config/m.h ../byterun/../config/s.h ../byterun/misc.h \
+ ../byterun/custom.h ../byterun/mlvalues.h ../byterun/memory.h \
+ ../byterun/gc.h ../byterun/major_gc.h ../byterun/freelist.h \
+ ../byterun/minor_gc.h ../byterun/hash.h ../byterun/int64_native.h
 intern.o: intern.c ../byterun/alloc.h ../byterun/misc.h \
 ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
 ../byterun/mlvalues.h ../byterun/callback.h ../byterun/custom.h \
 ../byterun/fail.h ../byterun/gc.h ../byterun/intext.h ../byterun/io.h \
 ../byterun/io.h ../byterun/md5.h ../byterun/memory.h ../byterun/gc.h \
 ../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h \
 ../byterun/mlvalues.h ../byterun/misc.h ../byterun/reverse.h
+ ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
+ ../byterun/mlvalues.h ../byterun/callback.h ../byterun/custom.h \
+ ../byterun/fail.h ../byterun/gc.h ../byterun/intext.h ../byterun/io.h \
+ ../byterun/io.h ../byterun/md5.h ../byterun/memory.h ../byterun/gc.h \
+ ../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h \
+ ../byterun/mlvalues.h ../byterun/misc.h ../byterun/reverse.h
 ints.o: ints.c ../byterun/alloc.h ../byterun/misc.h ../byterun/config.h \
 ../byterun/../config/m.h ../byterun/../config/s.h ../byterun/mlvalues.h \
 ../byterun/custom.h ../byterun/fail.h ../byterun/intext.h \
 ../byterun/io.h ../byterun/memory.h ../byterun/gc.h \
 ../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h \
 ../byterun/misc.h ../byterun/mlvalues.h ../byterun/int64_native.h
+ ../byterun/../config/m.h ../byterun/../config/s.h ../byterun/mlvalues.h \
+ ../byterun/custom.h ../byterun/fail.h ../byterun/intext.h \
+ ../byterun/io.h ../byterun/memory.h ../byterun/gc.h \
+ ../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h \
+ ../byterun/misc.h ../byterun/mlvalues.h ../byterun/int64_native.h
 io.o: io.c ../byterun/config.h ../byterun/../config/m.h \
 ../byterun/../config/s.h ../byterun/alloc.h ../byterun/misc.h \
 ../byterun/config.h ../byterun/mlvalues.h ../byterun/custom.h \
 ../byterun/fail.h ../byterun/io.h ../byterun/memory.h ../byterun/gc.h \
 ../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h \
 ../byterun/misc.h ../byterun/mlvalues.h ../byterun/signals.h \
 ../byterun/sys.h
+ ../byterun/../config/s.h ../byterun/alloc.h ../byterun/misc.h \
+ ../byterun/config.h ../byterun/mlvalues.h ../byterun/custom.h \
+ ../byterun/fail.h ../byterun/io.h ../byterun/memory.h ../byterun/gc.h \
+ ../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h \
+ ../byterun/misc.h ../byterun/mlvalues.h ../byterun/signals.h \
+ ../byterun/sys.h
 lexing.o: lexing.c ../byterun/fail.h ../byterun/misc.h \
 ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
 ../byterun/mlvalues.h ../byterun/mlvalues.h ../byterun/stacks.h \
 ../byterun/memory.h ../byterun/gc.h ../byterun/major_gc.h \
 ../byterun/freelist.h ../byterun/minor_gc.h
+ ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
+ ../byterun/mlvalues.h ../byterun/mlvalues.h ../byterun/stacks.h \
+ ../byterun/memory.h ../byterun/gc.h ../byterun/major_gc.h \
+ ../byterun/freelist.h ../byterun/minor_gc.h
 main.o: main.c ../byterun/misc.h ../byterun/config.h \
 ../byterun/../config/m.h ../byterun/../config/s.h ../byterun/mlvalues.h \
 ../byterun/misc.h ../byterun/sys.h
+ ../byterun/../config/m.h ../byterun/../config/s.h ../byterun/mlvalues.h \
+ ../byterun/misc.h ../byterun/sys.h
 major_gc.o: major_gc.c ../byterun/compact.h ../byterun/config.h \
 ../byterun/../config/m.h ../byterun/../config/s.h ../byterun/misc.h \
 ../byterun/custom.h ../byterun/mlvalues.h ../byterun/config.h \
 ../byterun/fail.h ../byterun/finalise.h ../byterun/roots.h \
 ../byterun/memory.h ../byterun/gc.h ../byterun/major_gc.h \
 ../byterun/freelist.h ../byterun/minor_gc.h ../byterun/freelist.h \
 ../byterun/gc.h ../byterun/gc_ctrl.h ../byterun/major_gc.h \
 ../byterun/misc.h ../byterun/mlvalues.h ../byterun/roots.h \
 ../byterun/weak.h
+ ../byterun/../config/m.h ../byterun/../config/s.h ../byterun/misc.h \
+ ../byterun/custom.h ../byterun/mlvalues.h ../byterun/config.h \
+ ../byterun/fail.h ../byterun/finalise.h ../byterun/roots.h \
+ ../byterun/memory.h ../byterun/gc.h ../byterun/major_gc.h \
+ ../byterun/freelist.h ../byterun/minor_gc.h ../byterun/freelist.h \
+ ../byterun/gc.h ../byterun/gc_ctrl.h ../byterun/major_gc.h \
+ ../byterun/misc.h ../byterun/mlvalues.h ../byterun/roots.h \
+ ../byterun/weak.h
 md5.o: md5.c ../byterun/alloc.h ../byterun/misc.h ../byterun/config.h \
 ../byterun/../config/m.h ../byterun/../config/s.h ../byterun/mlvalues.h \
 ../byterun/fail.h ../byterun/md5.h ../byterun/io.h ../byterun/memory.h \
 ../byterun/gc.h ../byterun/major_gc.h ../byterun/freelist.h \
 ../byterun/minor_gc.h ../byterun/mlvalues.h ../byterun/io.h \
 ../byterun/reverse.h
+ ../byterun/../config/m.h ../byterun/../config/s.h ../byterun/mlvalues.h \
+ ../byterun/fail.h ../byterun/md5.h ../byterun/io.h ../byterun/memory.h \
+ ../byterun/gc.h ../byterun/major_gc.h ../byterun/freelist.h \
+ ../byterun/minor_gc.h ../byterun/mlvalues.h ../byterun/io.h \
+ ../byterun/reverse.h
 memory.o: memory.c ../byterun/fail.h ../byterun/misc.h \
 ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
 ../byterun/mlvalues.h ../byterun/freelist.h ../byterun/gc.h \
 ../byterun/gc_ctrl.h ../byterun/major_gc.h ../byterun/freelist.h \
 ../byterun/memory.h ../byterun/gc.h ../byterun/major_gc.h \
 ../byterun/minor_gc.h ../byterun/minor_gc.h ../byterun/misc.h \
 ../byterun/mlvalues.h ../byterun/signals.h
+ ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
+ ../byterun/mlvalues.h ../byterun/freelist.h ../byterun/gc.h \
+ ../byterun/gc_ctrl.h ../byterun/major_gc.h ../byterun/freelist.h \
+ ../byterun/memory.h ../byterun/gc.h ../byterun/major_gc.h \
+ ../byterun/minor_gc.h ../byterun/minor_gc.h ../byterun/misc.h \
+ ../byterun/mlvalues.h ../byterun/signals.h
 meta.o: meta.c ../byterun/alloc.h ../byterun/misc.h ../byterun/config.h \
 ../byterun/../config/m.h ../byterun/../config/s.h ../byterun/mlvalues.h \
 ../byterun/config.h ../byterun/fail.h ../byterun/fix_code.h \
 ../byterun/interp.h ../byterun/intext.h ../byterun/io.h \
 ../byterun/major_gc.h ../byterun/freelist.h ../byterun/memory.h \
 ../byterun/gc.h ../byterun/major_gc.h ../byterun/minor_gc.h \
 ../byterun/minor_gc.h ../byterun/misc.h ../byterun/mlvalues.h \
 ../byterun/prims.h ../byterun/stacks.h ../byterun/memory.h
+ ../byterun/../config/m.h ../byterun/../config/s.h ../byterun/mlvalues.h \
+ ../byterun/config.h ../byterun/fail.h ../byterun/fix_code.h \
+ ../byterun/interp.h ../byterun/intext.h ../byterun/io.h \
+ ../byterun/major_gc.h ../byterun/freelist.h ../byterun/memory.h \
+ ../byterun/gc.h ../byterun/major_gc.h ../byterun/minor_gc.h \
+ ../byterun/minor_gc.h ../byterun/misc.h ../byterun/mlvalues.h \
+ ../byterun/prims.h ../byterun/stacks.h ../byterun/memory.h
 minor_gc.o: minor_gc.c ../byterun/config.h ../byterun/../config/m.h \
 ../byterun/../config/s.h ../byterun/fail.h ../byterun/misc.h \
 ../byterun/config.h ../byterun/mlvalues.h ../byterun/finalise.h \
 ../byterun/roots.h ../byterun/memory.h ../byterun/gc.h \
 ../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h \
 ../byterun/gc.h ../byterun/gc_ctrl.h ../byterun/major_gc.h \
 ../byterun/memory.h ../byterun/minor_gc.h ../byterun/misc.h \
 ../byterun/mlvalues.h ../byterun/roots.h ../byterun/signals.h \
 ../byterun/weak.h
+ ../byterun/../config/s.h ../byterun/fail.h ../byterun/misc.h \
+ ../byterun/config.h ../byterun/mlvalues.h ../byterun/finalise.h \
+ ../byterun/roots.h ../byterun/memory.h ../byterun/gc.h \
+ ../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h \
+ ../byterun/gc.h ../byterun/gc_ctrl.h ../byterun/major_gc.h \
+ ../byterun/memory.h ../byterun/minor_gc.h ../byterun/misc.h \
+ ../byterun/mlvalues.h ../byterun/roots.h ../byterun/signals.h \
+ ../byterun/weak.h
 misc.o: misc.c ../byterun/config.h ../byterun/../config/m.h \
 ../byterun/../config/s.h ../byterun/misc.h ../byterun/config.h \
 ../byterun/memory.h ../byterun/gc.h ../byterun/mlvalues.h \
 ../byterun/misc.h ../byterun/major_gc.h ../byterun/freelist.h \
 ../byterun/minor_gc.h
+ ../byterun/../config/s.h ../byterun/misc.h ../byterun/config.h \
+ ../byterun/memory.h ../byterun/gc.h ../byterun/mlvalues.h \
+ ../byterun/misc.h ../byterun/major_gc.h ../byterun/freelist.h \
+ ../byterun/minor_gc.h
 natdynlink.o: natdynlink.c ../byterun/misc.h ../byterun/config.h \
 ../byterun/../config/m.h ../byterun/../config/s.h ../byterun/mlvalues.h \
 ../byterun/misc.h ../byterun/memory.h ../byterun/gc.h \
 ../byterun/mlvalues.h ../byterun/major_gc.h ../byterun/freelist.h \
 ../byterun/minor_gc.h stack.h ../byterun/callback.h ../byterun/alloc.h \
 ../byterun/intext.h ../byterun/io.h natdynlink.h ../byterun/osdeps.h \
 ../byterun/fail.h
+ ../byterun/../config/m.h ../byterun/../config/s.h ../byterun/mlvalues.h \
+ ../byterun/misc.h ../byterun/memory.h ../byterun/gc.h \
+ ../byterun/mlvalues.h ../byterun/major_gc.h ../byterun/freelist.h \
+ ../byterun/minor_gc.h stack.h ../byterun/callback.h ../byterun/alloc.h \
+ ../byterun/intext.h ../byterun/io.h natdynlink.h ../byterun/osdeps.h \
+ ../byterun/fail.h
 obj.o: obj.c ../byterun/alloc.h ../byterun/misc.h ../byterun/config.h \
 ../byterun/../config/m.h ../byterun/../config/s.h ../byterun/mlvalues.h \
 ../byterun/fail.h ../byterun/gc.h ../byterun/interp.h \
 ../byterun/major_gc.h ../byterun/freelist.h ../byterun/memory.h \
 ../byterun/gc.h ../byterun/major_gc.h ../byterun/minor_gc.h \
 ../byterun/minor_gc.h ../byterun/misc.h ../byterun/mlvalues.h \
 ../byterun/prims.h
+ ../byterun/../config/m.h ../byterun/../config/s.h ../byterun/mlvalues.h \
+ ../byterun/fail.h ../byterun/gc.h ../byterun/interp.h \
+ ../byterun/major_gc.h ../byterun/freelist.h ../byterun/memory.h \
+ ../byterun/gc.h ../byterun/major_gc.h ../byterun/minor_gc.h \
+ ../byterun/minor_gc.h ../byterun/misc.h ../byterun/mlvalues.h \
+ ../byterun/prims.h
 parsing.o: parsing.c ../byterun/config.h ../byterun/../config/m.h \
 ../byterun/../config/s.h ../byterun/mlvalues.h ../byterun/config.h \
 ../byterun/misc.h ../byterun/memory.h ../byterun/gc.h \
 ../byterun/mlvalues.h ../byterun/major_gc.h ../byterun/freelist.h \
 ../byterun/minor_gc.h ../byterun/alloc.h
+ ../byterun/../config/s.h ../byterun/mlvalues.h ../byterun/config.h \
+ ../byterun/misc.h ../byterun/memory.h ../byterun/gc.h \
+ ../byterun/mlvalues.h ../byterun/major_gc.h ../byterun/freelist.h \
+ ../byterun/minor_gc.h ../byterun/alloc.h
 printexc.o: printexc.c ../byterun/backtrace.h ../byterun/mlvalues.h \
 ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
 ../byterun/misc.h ../byterun/callback.h ../byterun/debugger.h \
 ../byterun/fail.h ../byterun/misc.h ../byterun/mlvalues.h \
 ../byterun/printexc.h
+ ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
+ ../byterun/misc.h ../byterun/callback.h ../byterun/debugger.h \
+ ../byterun/fail.h ../byterun/misc.h ../byterun/mlvalues.h \
+ ../byterun/printexc.h
 roots.o: roots.c ../byterun/finalise.h ../byterun/roots.h \
 ../byterun/misc.h ../byterun/config.h ../byterun/../config/m.h \
 ../byterun/../config/s.h ../byterun/memory.h ../byterun/gc.h \
 ../byterun/mlvalues.h ../byterun/major_gc.h ../byterun/freelist.h \
 ../byterun/minor_gc.h ../byterun/globroots.h ../byterun/memory.h \
 ../byterun/major_gc.h ../byterun/minor_gc.h ../byterun/misc.h \
 ../byterun/mlvalues.h stack.h ../byterun/roots.h
+ ../byterun/misc.h ../byterun/config.h ../byterun/../config/m.h \
+ ../byterun/../config/s.h ../byterun/memory.h ../byterun/gc.h \
+ ../byterun/mlvalues.h ../byterun/major_gc.h ../byterun/freelist.h \
+ ../byterun/minor_gc.h ../byterun/globroots.h ../byterun/memory.h \
+ ../byterun/major_gc.h ../byterun/minor_gc.h ../byterun/misc.h \
+ ../byterun/mlvalues.h stack.h ../byterun/roots.h
 signals.o: signals.c ../byterun/alloc.h ../byterun/misc.h \
 ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
 ../byterun/mlvalues.h ../byterun/callback.h ../byterun/config.h \
 ../byterun/fail.h ../byterun/memory.h ../byterun/gc.h \
 ../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h \
 ../byterun/misc.h ../byterun/mlvalues.h ../byterun/roots.h \
 ../byterun/memory.h ../byterun/signals.h ../byterun/signals_machdep.h \
 ../byterun/sys.h
+ ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
+ ../byterun/mlvalues.h ../byterun/callback.h ../byterun/config.h \
+ ../byterun/fail.h ../byterun/memory.h ../byterun/gc.h \
+ ../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h \
+ ../byterun/misc.h ../byterun/mlvalues.h ../byterun/roots.h \
+ ../byterun/memory.h ../byterun/signals.h ../byterun/signals_machdep.h \
+ ../byterun/sys.h
 signals_asm.o: signals_asm.c ../byterun/fail.h ../byterun/misc.h \
 ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
 ../byterun/mlvalues.h ../byterun/memory.h ../byterun/gc.h \
 ../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h \
 ../byterun/osdeps.h ../byterun/signals.h ../byterun/signals_machdep.h \
 signals_osdep.h stack.h
+ ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
+ ../byterun/mlvalues.h ../byterun/memory.h ../byterun/gc.h \
+ ../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h \
+ ../byterun/osdeps.h ../byterun/signals.h ../byterun/signals_machdep.h \
+ signals_osdep.h stack.h
 startup.o: startup.c ../byterun/callback.h ../byterun/mlvalues.h \
 ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
 ../byterun/misc.h ../byterun/backtrace.h ../byterun/custom.h \
 ../byterun/debugger.h ../byterun/fail.h ../byterun/freelist.h \
 ../byterun/gc.h ../byterun/gc_ctrl.h ../byterun/intext.h \
 ../byterun/io.h ../byterun/memory.h ../byterun/gc.h \
 ../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h \
 ../byterun/misc.h ../byterun/mlvalues.h ../byterun/osdeps.h \
 ../byterun/printexc.h stack.h ../byterun/sys.h natdynlink.h
+ ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
+ ../byterun/misc.h ../byterun/backtrace.h ../byterun/custom.h \
+ ../byterun/debugger.h ../byterun/fail.h ../byterun/freelist.h \
../byterun/gc.h ../byterun/gc_ctrl.h ../byterun/intext.h ../byterun/io.h \
../byterun/memory.h ../byterun/gc.h ../byterun/major_gc.h \
../byterun/freelist.h ../byterun/minor_gc.h ../byterun/misc.h \
../byterun/mlvalues.h ../byterun/osdeps.h ../byterun/printexc.h stack.h \
+ ../byterun/sys.h natdynlink.h
 str.o: str.c ../byterun/alloc.h ../byterun/misc.h ../byterun/config.h \
 ../byterun/../config/m.h ../byterun/../config/s.h ../byterun/mlvalues.h \
 ../byterun/fail.h ../byterun/mlvalues.h ../byterun/misc.h
+ ../byterun/../config/m.h ../byterun/../config/s.h ../byterun/mlvalues.h \
+ ../byterun/fail.h ../byterun/mlvalues.h ../byterun/misc.h
 sys.o: sys.c ../byterun/config.h ../byterun/../config/m.h \
 ../byterun/../config/s.h ../byterun/alloc.h ../byterun/misc.h \
 ../byterun/config.h ../byterun/mlvalues.h ../byterun/debugger.h \
 ../byterun/fail.h ../byterun/instruct.h ../byterun/mlvalues.h \
 ../byterun/osdeps.h ../byterun/signals.h ../byterun/stacks.h \
 ../byterun/memory.h ../byterun/gc.h ../byterun/major_gc.h \
 ../byterun/freelist.h ../byterun/minor_gc.h ../byterun/sys.h
+ ../byterun/../config/s.h ../byterun/alloc.h ../byterun/misc.h \
+ ../byterun/config.h ../byterun/mlvalues.h ../byterun/debugger.h \
+ ../byterun/fail.h ../byterun/instruct.h ../byterun/mlvalues.h \
+ ../byterun/osdeps.h ../byterun/signals.h ../byterun/stacks.h \
+ ../byterun/memory.h ../byterun/gc.h ../byterun/major_gc.h \
+ ../byterun/freelist.h ../byterun/minor_gc.h ../byterun/sys.h
 terminfo.o: terminfo.c ../byterun/config.h ../byterun/../config/m.h \
 ../byterun/../config/s.h ../byterun/alloc.h ../byterun/misc.h \
 ../byterun/config.h ../byterun/mlvalues.h ../byterun/fail.h \
 ../byterun/io.h ../byterun/mlvalues.h
+ ../byterun/../config/s.h ../byterun/alloc.h ../byterun/misc.h \
+ ../byterun/config.h ../byterun/mlvalues.h ../byterun/fail.h \
+ ../byterun/io.h ../byterun/mlvalues.h
 unix.o: unix.c ../byterun/config.h ../byterun/../config/m.h \
 ../byterun/../config/s.h ../byterun/memory.h ../byterun/config.h \
 ../byterun/gc.h ../byterun/mlvalues.h ../byterun/misc.h \
 ../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h \
 ../byterun/misc.h ../byterun/osdeps.h
+ ../byterun/../config/s.h ../byterun/memory.h ../byterun/config.h \
+ ../byterun/gc.h ../byterun/mlvalues.h ../byterun/misc.h \
+ ../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h \
+ ../byterun/misc.h ../byterun/osdeps.h
 weak.o: weak.c ../byterun/alloc.h ../byterun/misc.h ../byterun/config.h \
 ../byterun/../config/m.h ../byterun/../config/s.h ../byterun/mlvalues.h \
 ../byterun/fail.h ../byterun/major_gc.h ../byterun/freelist.h \
 ../byterun/memory.h ../byterun/gc.h ../byterun/major_gc.h \
 ../byterun/minor_gc.h ../byterun/mlvalues.h
+ ../byterun/../config/m.h ../byterun/../config/s.h ../byterun/mlvalues.h \
+ ../byterun/fail.h ../byterun/major_gc.h ../byterun/freelist.h \
+ ../byterun/memory.h ../byterun/gc.h ../byterun/major_gc.h \
+ ../byterun/minor_gc.h ../byterun/mlvalues.h
 alloc.d.o: alloc.c ../byterun/alloc.h ../byterun/misc.h ../byterun/config.h \
 ../byterun/../config/m.h ../byterun/../config/s.h ../byterun/mlvalues.h \
 ../byterun/custom.h ../byterun/major_gc.h ../byterun/freelist.h \
 ../byterun/memory.h ../byterun/gc.h ../byterun/major_gc.h \
 ../byterun/minor_gc.h ../byterun/mlvalues.h ../byterun/stacks.h \
 ../byterun/memory.h
+ ../byterun/../config/m.h ../byterun/../config/s.h ../byterun/mlvalues.h \
+ ../byterun/custom.h ../byterun/major_gc.h ../byterun/freelist.h \
+ ../byterun/memory.h ../byterun/gc.h ../byterun/major_gc.h \
+ ../byterun/minor_gc.h ../byterun/mlvalues.h ../byterun/stacks.h \
+ ../byterun/memory.h
 array.d.o: array.c ../byterun/alloc.h ../byterun/misc.h ../byterun/config.h \
 ../byterun/../config/m.h ../byterun/../config/s.h ../byterun/mlvalues.h \
 ../byterun/fail.h ../byterun/memory.h ../byterun/gc.h \
 ../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h \
 ../byterun/misc.h ../byterun/mlvalues.h
+ ../byterun/../config/m.h ../byterun/../config/s.h ../byterun/mlvalues.h \
+ ../byterun/fail.h ../byterun/memory.h ../byterun/gc.h \
+ ../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h \
+ ../byterun/misc.h ../byterun/mlvalues.h
 backtrace.d.o: backtrace.c ../byterun/alloc.h ../byterun/misc.h \
 ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
 ../byterun/mlvalues.h ../byterun/backtrace.h ../byterun/memory.h \
 ../byterun/gc.h ../byterun/major_gc.h ../byterun/freelist.h \
 ../byterun/minor_gc.h ../byterun/misc.h ../byterun/mlvalues.h stack.h
+ ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
+ ../byterun/mlvalues.h ../byterun/backtrace.h ../byterun/memory.h \
+ ../byterun/gc.h ../byterun/major_gc.h ../byterun/freelist.h \
+ ../byterun/minor_gc.h ../byterun/misc.h ../byterun/mlvalues.h stack.h
 callback.d.o: callback.c ../byterun/callback.h ../byterun/mlvalues.h \
 ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
 ../byterun/misc.h ../byterun/fail.h ../byterun/memory.h ../byterun/gc.h \
 ../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h \
 ../byterun/mlvalues.h
+ ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
+ ../byterun/misc.h ../byterun/fail.h ../byterun/memory.h ../byterun/gc.h \
+ ../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h \
+ ../byterun/mlvalues.h
 compact.d.o: compact.c ../byterun/config.h ../byterun/../config/m.h \
 ../byterun/../config/s.h ../byterun/finalise.h ../byterun/roots.h \
 ../byterun/misc.h ../byterun/config.h ../byterun/memory.h \
 ../byterun/gc.h ../byterun/mlvalues.h ../byterun/major_gc.h \
 ../byterun/freelist.h ../byterun/minor_gc.h ../byterun/freelist.h \
 ../byterun/gc.h ../byterun/gc_ctrl.h ../byterun/major_gc.h \
 ../byterun/memory.h ../byterun/mlvalues.h ../byterun/roots.h \
 ../byterun/weak.h
+ ../byterun/../config/s.h ../byterun/finalise.h ../byterun/roots.h \
+ ../byterun/misc.h ../byterun/config.h ../byterun/memory.h \
+ ../byterun/gc.h ../byterun/mlvalues.h ../byterun/major_gc.h \
+ ../byterun/freelist.h ../byterun/minor_gc.h ../byterun/freelist.h \
+ ../byterun/gc.h ../byterun/gc_ctrl.h ../byterun/major_gc.h \
+ ../byterun/memory.h ../byterun/mlvalues.h ../byterun/roots.h \
+ ../byterun/weak.h
 compare.d.o: compare.c ../byterun/custom.h ../byterun/mlvalues.h \
 ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
 ../byterun/misc.h ../byterun/fail.h ../byterun/memory.h ../byterun/gc.h \
 ../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h \
 ../byterun/misc.h ../byterun/mlvalues.h
+ ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
+ ../byterun/misc.h ../byterun/fail.h ../byterun/memory.h ../byterun/gc.h \
+ ../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h \
+ ../byterun/misc.h ../byterun/mlvalues.h
 custom.d.o: custom.c ../byterun/alloc.h ../byterun/misc.h \
 ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
 ../byterun/mlvalues.h ../byterun/custom.h ../byterun/fail.h \
 ../byterun/memory.h ../byterun/gc.h ../byterun/major_gc.h \
 ../byterun/freelist.h ../byterun/minor_gc.h ../byterun/mlvalues.h
+ ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
+ ../byterun/mlvalues.h ../byterun/custom.h ../byterun/fail.h \
+ ../byterun/memory.h ../byterun/gc.h ../byterun/major_gc.h \
+ ../byterun/freelist.h ../byterun/minor_gc.h ../byterun/mlvalues.h
 debugger.d.o: debugger.c ../byterun/alloc.h ../byterun/misc.h \
 ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
 ../byterun/mlvalues.h ../byterun/config.h ../byterun/debugger.h \
 ../byterun/misc.h
+ ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
+ ../byterun/mlvalues.h ../byterun/config.h ../byterun/debugger.h \
+ ../byterun/misc.h
 dynlink.d.o: dynlink.c ../byterun/config.h ../byterun/../config/m.h \
 ../byterun/../config/s.h ../byterun/alloc.h ../byterun/misc.h \
 ../byterun/config.h ../byterun/mlvalues.h ../byterun/dynlink.h \
 ../byterun/fail.h ../byterun/mlvalues.h ../byterun/memory.h \
 ../byterun/gc.h ../byterun/major_gc.h ../byterun/freelist.h \
 ../byterun/minor_gc.h ../byterun/misc.h ../byterun/osdeps.h \
 ../byterun/prims.h
+ ../byterun/../config/s.h ../byterun/alloc.h ../byterun/misc.h \
+ ../byterun/config.h ../byterun/mlvalues.h ../byterun/dynlink.h \
+ ../byterun/fail.h ../byterun/mlvalues.h ../byterun/memory.h \
+ ../byterun/gc.h ../byterun/major_gc.h ../byterun/freelist.h \
+ ../byterun/minor_gc.h ../byterun/misc.h ../byterun/osdeps.h \
+ ../byterun/prims.h
 extern.d.o: extern.c ../byterun/alloc.h ../byterun/misc.h \
 ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
 ../byterun/mlvalues.h ../byterun/custom.h ../byterun/fail.h \
 ../byterun/gc.h ../byterun/intext.h ../byterun/io.h ../byterun/io.h \
 ../byterun/md5.h ../byterun/memory.h ../byterun/gc.h \
 ../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h \
 ../byterun/misc.h ../byterun/mlvalues.h ../byterun/reverse.h
+ ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
+ ../byterun/mlvalues.h ../byterun/custom.h ../byterun/fail.h \
+ ../byterun/gc.h ../byterun/intext.h ../byterun/io.h ../byterun/io.h \
+ ../byterun/md5.h ../byterun/memory.h ../byterun/gc.h \
+ ../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h \
+ ../byterun/misc.h ../byterun/mlvalues.h ../byterun/reverse.h
 fail.d.o: fail.c ../byterun/alloc.h ../byterun/misc.h ../byterun/config.h \
 ../byterun/../config/m.h ../byterun/../config/s.h ../byterun/mlvalues.h \
 ../byterun/fail.h ../byterun/io.h ../byterun/gc.h ../byterun/memory.h \
 ../byterun/gc.h ../byterun/major_gc.h ../byterun/freelist.h \
 ../byterun/minor_gc.h ../byterun/mlvalues.h ../byterun/printexc.h \
 ../byterun/signals.h stack.h ../byterun/roots.h ../byterun/memory.h
+ ../byterun/../config/m.h ../byterun/../config/s.h ../byterun/mlvalues.h \
+ ../byterun/fail.h ../byterun/io.h ../byterun/gc.h ../byterun/memory.h \
+ ../byterun/gc.h ../byterun/major_gc.h ../byterun/freelist.h \
+ ../byterun/minor_gc.h ../byterun/mlvalues.h ../byterun/printexc.h \
+ ../byterun/signals.h stack.h ../byterun/roots.h ../byterun/memory.h
 finalise.d.o: finalise.c ../byterun/callback.h ../byterun/mlvalues.h \
 ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
 ../byterun/misc.h ../byterun/fail.h ../byterun/mlvalues.h \
 ../byterun/roots.h ../byterun/memory.h ../byterun/gc.h \
 ../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h \
 ../byterun/signals.h
+ ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
+ ../byterun/misc.h ../byterun/fail.h ../byterun/mlvalues.h \
+ ../byterun/roots.h ../byterun/memory.h ../byterun/gc.h \
+ ../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h \
+ ../byterun/signals.h
 floats.d.o: floats.c ../byterun/alloc.h ../byterun/misc.h \
 ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
 ../byterun/mlvalues.h ../byterun/fail.h ../byterun/memory.h \
 ../byterun/gc.h ../byterun/major_gc.h ../byterun/freelist.h \
 ../byterun/minor_gc.h ../byterun/mlvalues.h ../byterun/misc.h \
 ../byterun/reverse.h ../byterun/stacks.h ../byterun/memory.h
+ ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
+ ../byterun/mlvalues.h ../byterun/fail.h ../byterun/memory.h \
+ ../byterun/gc.h ../byterun/major_gc.h ../byterun/freelist.h \
+ ../byterun/minor_gc.h ../byterun/mlvalues.h ../byterun/misc.h \
+ ../byterun/reverse.h ../byterun/stacks.h ../byterun/memory.h
 freelist.d.o: freelist.c ../byterun/config.h ../byterun/../config/m.h \
 ../byterun/../config/s.h ../byterun/freelist.h ../byterun/misc.h \
 ../byterun/config.h ../byterun/mlvalues.h ../byterun/gc.h \
 ../byterun/gc_ctrl.h ../byterun/memory.h ../byterun/gc.h \
 ../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h \
 ../byterun/major_gc.h ../byterun/misc.h ../byterun/mlvalues.h
+ ../byterun/../config/s.h ../byterun/freelist.h ../byterun/misc.h \
+ ../byterun/config.h ../byterun/mlvalues.h ../byterun/gc.h \
+ ../byterun/gc_ctrl.h ../byterun/memory.h ../byterun/gc.h \
+ ../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h \
+ ../byterun/major_gc.h ../byterun/misc.h ../byterun/mlvalues.h
 gc_ctrl.d.o: gc_ctrl.c ../byterun/alloc.h ../byterun/misc.h \
 ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
 ../byterun/mlvalues.h ../byterun/compact.h ../byterun/custom.h \
 ../byterun/finalise.h ../byterun/roots.h ../byterun/memory.h \
 ../byterun/gc.h ../byterun/major_gc.h ../byterun/freelist.h \
 ../byterun/minor_gc.h ../byterun/freelist.h ../byterun/gc.h \
 ../byterun/gc_ctrl.h ../byterun/major_gc.h ../byterun/minor_gc.h \
 ../byterun/misc.h ../byterun/mlvalues.h stack.h
+ ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
+ ../byterun/mlvalues.h ../byterun/compact.h ../byterun/custom.h \
+ ../byterun/finalise.h ../byterun/roots.h ../byterun/memory.h \
+ ../byterun/gc.h ../byterun/major_gc.h ../byterun/freelist.h \
+ ../byterun/minor_gc.h ../byterun/freelist.h ../byterun/gc.h \
+ ../byterun/gc_ctrl.h ../byterun/major_gc.h ../byterun/minor_gc.h \
+ ../byterun/misc.h ../byterun/mlvalues.h stack.h
 globroots.d.o: globroots.c ../byterun/memory.h ../byterun/config.h \
 ../byterun/../config/m.h ../byterun/../config/s.h ../byterun/gc.h \
 ../byterun/mlvalues.h ../byterun/misc.h ../byterun/major_gc.h \
 ../byterun/freelist.h ../byterun/minor_gc.h ../byterun/misc.h \
 ../byterun/mlvalues.h ../byterun/roots.h ../byterun/memory.h \
 ../byterun/globroots.h ../byterun/roots.h
+ ../byterun/../config/m.h ../byterun/../config/s.h ../byterun/gc.h \
+ ../byterun/mlvalues.h ../byterun/misc.h ../byterun/major_gc.h \
+ ../byterun/freelist.h ../byterun/minor_gc.h ../byterun/misc.h \
+ ../byterun/mlvalues.h ../byterun/roots.h ../byterun/memory.h \
+ ../byterun/globroots.h ../byterun/roots.h
 hash.d.o: hash.c ../byterun/mlvalues.h ../byterun/config.h \
 ../byterun/../config/m.h ../byterun/../config/s.h ../byterun/misc.h \
 ../byterun/custom.h ../byterun/mlvalues.h ../byterun/memory.h \
 ../byterun/gc.h ../byterun/major_gc.h ../byterun/freelist.h \
 ../byterun/minor_gc.h ../byterun/hash.h ../byterun/int64_native.h
+ ../byterun/../config/m.h ../byterun/../config/s.h ../byterun/misc.h \
+ ../byterun/custom.h ../byterun/mlvalues.h ../byterun/memory.h \
+ ../byterun/gc.h ../byterun/major_gc.h ../byterun/freelist.h \
+ ../byterun/minor_gc.h ../byterun/hash.h ../byterun/int64_native.h
 intern.d.o: intern.c ../byterun/alloc.h ../byterun/misc.h \
 ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
 ../byterun/mlvalues.h ../byterun/callback.h ../byterun/custom.h \
 ../byterun/fail.h ../byterun/gc.h ../byterun/intext.h ../byterun/io.h \
 ../byterun/io.h ../byterun/md5.h ../byterun/memory.h ../byterun/gc.h \
 ../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h \
 ../byterun/mlvalues.h ../byterun/misc.h ../byterun/reverse.h
+ ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
+ ../byterun/mlvalues.h ../byterun/callback.h ../byterun/custom.h \
+ ../byterun/fail.h ../byterun/gc.h ../byterun/intext.h ../byterun/io.h \
+ ../byterun/io.h ../byterun/md5.h ../byterun/memory.h ../byterun/gc.h \
+ ../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h \
+ ../byterun/mlvalues.h ../byterun/misc.h ../byterun/reverse.h
 ints.d.o: ints.c ../byterun/alloc.h ../byterun/misc.h ../byterun/config.h \
 ../byterun/../config/m.h ../byterun/../config/s.h ../byterun/mlvalues.h \
 ../byterun/custom.h ../byterun/fail.h ../byterun/intext.h \
 ../byterun/io.h ../byterun/memory.h ../byterun/gc.h \
 ../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h \
 ../byterun/misc.h ../byterun/mlvalues.h ../byterun/int64_native.h
+ ../byterun/../config/m.h ../byterun/../config/s.h ../byterun/mlvalues.h \
+ ../byterun/custom.h ../byterun/fail.h ../byterun/intext.h \
+ ../byterun/io.h ../byterun/memory.h ../byterun/gc.h \
+ ../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h \
+ ../byterun/misc.h ../byterun/mlvalues.h ../byterun/int64_native.h
 io.d.o: io.c ../byterun/config.h ../byterun/../config/m.h \
 ../byterun/../config/s.h ../byterun/alloc.h ../byterun/misc.h \
 ../byterun/config.h ../byterun/mlvalues.h ../byterun/custom.h \
 ../byterun/fail.h ../byterun/io.h ../byterun/memory.h ../byterun/gc.h \
 ../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h \
 ../byterun/misc.h ../byterun/mlvalues.h ../byterun/signals.h \
 ../byterun/sys.h
+ ../byterun/../config/s.h ../byterun/alloc.h ../byterun/misc.h \
+ ../byterun/config.h ../byterun/mlvalues.h ../byterun/custom.h \
+ ../byterun/fail.h ../byterun/io.h ../byterun/memory.h ../byterun/gc.h \
+ ../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h \
+ ../byterun/misc.h ../byterun/mlvalues.h ../byterun/signals.h \
+ ../byterun/sys.h
 lexing.d.o: lexing.c ../byterun/fail.h ../byterun/misc.h \
 ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
 ../byterun/mlvalues.h ../byterun/mlvalues.h ../byterun/stacks.h \
 ../byterun/memory.h ../byterun/gc.h ../byterun/major_gc.h \
 ../byterun/freelist.h ../byterun/minor_gc.h
+ ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
+ ../byterun/mlvalues.h ../byterun/mlvalues.h ../byterun/stacks.h \
+ ../byterun/memory.h ../byterun/gc.h ../byterun/major_gc.h \
+ ../byterun/freelist.h ../byterun/minor_gc.h
 main.d.o: main.c ../byterun/misc.h ../byterun/config.h \
 ../byterun/../config/m.h ../byterun/../config/s.h ../byterun/mlvalues.h \
 ../byterun/misc.h ../byterun/sys.h
+ ../byterun/../config/m.h ../byterun/../config/s.h ../byterun/mlvalues.h \
+ ../byterun/misc.h ../byterun/sys.h
 major_gc.d.o: major_gc.c ../byterun/compact.h ../byterun/config.h \
 ../byterun/../config/m.h ../byterun/../config/s.h ../byterun/misc.h \
 ../byterun/custom.h ../byterun/mlvalues.h ../byterun/config.h \
 ../byterun/fail.h ../byterun/finalise.h ../byterun/roots.h \
 ../byterun/memory.h ../byterun/gc.h ../byterun/major_gc.h \
 ../byterun/freelist.h ../byterun/minor_gc.h ../byterun/freelist.h \
 ../byterun/gc.h ../byterun/gc_ctrl.h ../byterun/major_gc.h \
 ../byterun/misc.h ../byterun/mlvalues.h ../byterun/roots.h \
 ../byterun/weak.h
+ ../byterun/../config/m.h ../byterun/../config/s.h ../byterun/misc.h \
+ ../byterun/custom.h ../byterun/mlvalues.h ../byterun/config.h \
+ ../byterun/fail.h ../byterun/finalise.h ../byterun/roots.h \
+ ../byterun/memory.h ../byterun/gc.h ../byterun/major_gc.h \
+ ../byterun/freelist.h ../byterun/minor_gc.h ../byterun/freelist.h \
+ ../byterun/gc.h ../byterun/gc_ctrl.h ../byterun/major_gc.h \
+ ../byterun/misc.h ../byterun/mlvalues.h ../byterun/roots.h \
+ ../byterun/weak.h
 md5.d.o: md5.c ../byterun/alloc.h ../byterun/misc.h ../byterun/config.h \
 ../byterun/../config/m.h ../byterun/../config/s.h ../byterun/mlvalues.h \
 ../byterun/fail.h ../byterun/md5.h ../byterun/io.h ../byterun/memory.h \
 ../byterun/gc.h ../byterun/major_gc.h ../byterun/freelist.h \
 ../byterun/minor_gc.h ../byterun/mlvalues.h ../byterun/io.h \
 ../byterun/reverse.h
+ ../byterun/../config/m.h ../byterun/../config/s.h ../byterun/mlvalues.h \
+ ../byterun/fail.h ../byterun/md5.h ../byterun/io.h ../byterun/memory.h \
+ ../byterun/gc.h ../byterun/major_gc.h ../byterun/freelist.h \
+ ../byterun/minor_gc.h ../byterun/mlvalues.h ../byterun/io.h \
+ ../byterun/reverse.h
 memory.d.o: memory.c ../byterun/fail.h ../byterun/misc.h \
 ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
 ../byterun/mlvalues.h ../byterun/freelist.h ../byterun/gc.h \
 ../byterun/gc_ctrl.h ../byterun/major_gc.h ../byterun/freelist.h \
 ../byterun/memory.h ../byterun/gc.h ../byterun/major_gc.h \
 ../byterun/minor_gc.h ../byterun/minor_gc.h ../byterun/misc.h \
 ../byterun/mlvalues.h ../byterun/signals.h
+ ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
+ ../byterun/mlvalues.h ../byterun/freelist.h ../byterun/gc.h \
+ ../byterun/gc_ctrl.h ../byterun/major_gc.h ../byterun/freelist.h \
+ ../byterun/memory.h ../byterun/gc.h ../byterun/major_gc.h \
+ ../byterun/minor_gc.h ../byterun/minor_gc.h ../byterun/misc.h \
+ ../byterun/mlvalues.h ../byterun/signals.h
 meta.d.o: meta.c ../byterun/alloc.h ../byterun/misc.h ../byterun/config.h \
 ../byterun/../config/m.h ../byterun/../config/s.h ../byterun/mlvalues.h \
 ../byterun/config.h ../byterun/fail.h ../byterun/fix_code.h \
 ../byterun/interp.h ../byterun/intext.h ../byterun/io.h \
 ../byterun/major_gc.h ../byterun/freelist.h ../byterun/memory.h \
 ../byterun/gc.h ../byterun/major_gc.h ../byterun/minor_gc.h \
 ../byterun/minor_gc.h ../byterun/misc.h ../byterun/mlvalues.h \
 ../byterun/prims.h ../byterun/stacks.h ../byterun/memory.h
+ ../byterun/../config/m.h ../byterun/../config/s.h ../byterun/mlvalues.h \
+ ../byterun/config.h ../byterun/fail.h ../byterun/fix_code.h \
+ ../byterun/interp.h ../byterun/intext.h ../byterun/io.h \
+ ../byterun/major_gc.h ../byterun/freelist.h ../byterun/memory.h \
+ ../byterun/gc.h ../byterun/major_gc.h ../byterun/minor_gc.h \
+ ../byterun/minor_gc.h ../byterun/misc.h ../byterun/mlvalues.h \
+ ../byterun/prims.h ../byterun/stacks.h ../byterun/memory.h
 minor_gc.d.o: minor_gc.c ../byterun/config.h ../byterun/../config/m.h \
 ../byterun/../config/s.h ../byterun/fail.h ../byterun/misc.h \
 ../byterun/config.h ../byterun/mlvalues.h ../byterun/finalise.h \
 ../byterun/roots.h ../byterun/memory.h ../byterun/gc.h \
 ../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h \
 ../byterun/gc.h ../byterun/gc_ctrl.h ../byterun/major_gc.h \
 ../byterun/memory.h ../byterun/minor_gc.h ../byterun/misc.h \
 ../byterun/mlvalues.h ../byterun/roots.h ../byterun/signals.h \
 ../byterun/weak.h
+ ../byterun/../config/s.h ../byterun/fail.h ../byterun/misc.h \
+ ../byterun/config.h ../byterun/mlvalues.h ../byterun/finalise.h \
+ ../byterun/roots.h ../byterun/memory.h ../byterun/gc.h \
+ ../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h \
+ ../byterun/gc.h ../byterun/gc_ctrl.h ../byterun/major_gc.h \
+ ../byterun/memory.h ../byterun/minor_gc.h ../byterun/misc.h \
+ ../byterun/mlvalues.h ../byterun/roots.h ../byterun/signals.h \
+ ../byterun/weak.h
 misc.d.o: misc.c ../byterun/config.h ../byterun/../config/m.h \
 ../byterun/../config/s.h ../byterun/misc.h ../byterun/config.h \
 ../byterun/memory.h ../byterun/gc.h ../byterun/mlvalues.h \
 ../byterun/misc.h ../byterun/major_gc.h ../byterun/freelist.h \
 ../byterun/minor_gc.h
+ ../byterun/../config/s.h ../byterun/misc.h ../byterun/config.h \
+ ../byterun/memory.h ../byterun/gc.h ../byterun/mlvalues.h \
+ ../byterun/misc.h ../byterun/major_gc.h ../byterun/freelist.h \
+ ../byterun/minor_gc.h
 natdynlink.d.o: natdynlink.c ../byterun/misc.h ../byterun/config.h \
 ../byterun/../config/m.h ../byterun/../config/s.h ../byterun/mlvalues.h \
 ../byterun/misc.h ../byterun/memory.h ../byterun/gc.h \
 ../byterun/mlvalues.h ../byterun/major_gc.h ../byterun/freelist.h \
 ../byterun/minor_gc.h stack.h ../byterun/callback.h ../byterun/alloc.h \
 ../byterun/intext.h ../byterun/io.h natdynlink.h ../byterun/osdeps.h \
 ../byterun/fail.h
+ ../byterun/../config/m.h ../byterun/../config/s.h ../byterun/mlvalues.h \
+ ../byterun/misc.h ../byterun/memory.h ../byterun/gc.h \
+ ../byterun/mlvalues.h ../byterun/major_gc.h ../byterun/freelist.h \
+ ../byterun/minor_gc.h stack.h ../byterun/callback.h ../byterun/alloc.h \
+ ../byterun/intext.h ../byterun/io.h natdynlink.h ../byterun/osdeps.h \
+ ../byterun/fail.h
 obj.d.o: obj.c ../byterun/alloc.h ../byterun/misc.h ../byterun/config.h \
 ../byterun/../config/m.h ../byterun/../config/s.h ../byterun/mlvalues.h \
 ../byterun/fail.h ../byterun/gc.h ../byterun/interp.h \
 ../byterun/major_gc.h ../byterun/freelist.h ../byterun/memory.h \
 ../byterun/gc.h ../byterun/major_gc.h ../byterun/minor_gc.h \
 ../byterun/minor_gc.h ../byterun/misc.h ../byterun/mlvalues.h \
 ../byterun/prims.h
+ ../byterun/../config/m.h ../byterun/../config/s.h ../byterun/mlvalues.h \
+ ../byterun/fail.h ../byterun/gc.h ../byterun/interp.h \
+ ../byterun/major_gc.h ../byterun/freelist.h ../byterun/memory.h \
+ ../byterun/gc.h ../byterun/major_gc.h ../byterun/minor_gc.h \
+ ../byterun/minor_gc.h ../byterun/misc.h ../byterun/mlvalues.h \
+ ../byterun/prims.h
 parsing.d.o: parsing.c ../byterun/config.h ../byterun/../config/m.h \
 ../byterun/../config/s.h ../byterun/mlvalues.h ../byterun/config.h \
 ../byterun/misc.h ../byterun/memory.h ../byterun/gc.h \
 ../byterun/mlvalues.h ../byterun/major_gc.h ../byterun/freelist.h \
 ../byterun/minor_gc.h ../byterun/alloc.h
+ ../byterun/../config/s.h ../byterun/mlvalues.h ../byterun/config.h \
+ ../byterun/misc.h ../byterun/memory.h ../byterun/gc.h \
+ ../byterun/mlvalues.h ../byterun/major_gc.h ../byterun/freelist.h \
+ ../byterun/minor_gc.h ../byterun/alloc.h
 printexc.d.o: printexc.c ../byterun/backtrace.h ../byterun/mlvalues.h \
 ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
 ../byterun/misc.h ../byterun/callback.h ../byterun/debugger.h \
 ../byterun/fail.h ../byterun/misc.h ../byterun/mlvalues.h \
 ../byterun/printexc.h
+ ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
+ ../byterun/misc.h ../byterun/callback.h ../byterun/debugger.h \
+ ../byterun/fail.h ../byterun/misc.h ../byterun/mlvalues.h \
+ ../byterun/printexc.h
 roots.d.o: roots.c ../byterun/finalise.h ../byterun/roots.h \
 ../byterun/misc.h ../byterun/config.h ../byterun/../config/m.h \
 ../byterun/../config/s.h ../byterun/memory.h ../byterun/gc.h \
 ../byterun/mlvalues.h ../byterun/major_gc.h ../byterun/freelist.h \
 ../byterun/minor_gc.h ../byterun/globroots.h ../byterun/memory.h \
 ../byterun/major_gc.h ../byterun/minor_gc.h ../byterun/misc.h \
 ../byterun/mlvalues.h stack.h ../byterun/roots.h
+ ../byterun/misc.h ../byterun/config.h ../byterun/../config/m.h \
+ ../byterun/../config/s.h ../byterun/memory.h ../byterun/gc.h \
+ ../byterun/mlvalues.h ../byterun/major_gc.h ../byterun/freelist.h \
+ ../byterun/minor_gc.h ../byterun/globroots.h ../byterun/memory.h \
+ ../byterun/major_gc.h ../byterun/minor_gc.h ../byterun/misc.h \
+ ../byterun/mlvalues.h stack.h ../byterun/roots.h
 signals.d.o: signals.c ../byterun/alloc.h ../byterun/misc.h \
 ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
 ../byterun/mlvalues.h ../byterun/callback.h ../byterun/config.h \
 ../byterun/fail.h ../byterun/memory.h ../byterun/gc.h \
 ../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h \
 ../byterun/misc.h ../byterun/mlvalues.h ../byterun/roots.h \
 ../byterun/memory.h ../byterun/signals.h ../byterun/signals_machdep.h \
 ../byterun/sys.h
+ ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
+ ../byterun/mlvalues.h ../byterun/callback.h ../byterun/config.h \
+ ../byterun/fail.h ../byterun/memory.h ../byterun/gc.h \
+ ../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h \
+ ../byterun/misc.h ../byterun/mlvalues.h ../byterun/roots.h \
+ ../byterun/memory.h ../byterun/signals.h ../byterun/signals_machdep.h \
+ ../byterun/sys.h
 signals_asm.d.o: signals_asm.c ../byterun/fail.h ../byterun/misc.h \
 ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
 ../byterun/mlvalues.h ../byterun/memory.h ../byterun/gc.h \
 ../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h \
 ../byterun/osdeps.h ../byterun/signals.h ../byterun/signals_machdep.h \
 signals_osdep.h stack.h
+ ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
+ ../byterun/mlvalues.h ../byterun/memory.h ../byterun/gc.h \
+ ../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h \
+ ../byterun/osdeps.h ../byterun/signals.h ../byterun/signals_machdep.h \
+ signals_osdep.h stack.h
 startup.d.o: startup.c ../byterun/callback.h ../byterun/mlvalues.h \
 ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
 ../byterun/misc.h ../byterun/backtrace.h ../byterun/custom.h \
 ../byterun/debugger.h ../byterun/fail.h ../byterun/freelist.h \
 ../byterun/gc.h ../byterun/gc_ctrl.h ../byterun/intext.h \
 ../byterun/io.h ../byterun/memory.h ../byterun/gc.h \
 ../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h \
 ../byterun/misc.h ../byterun/mlvalues.h ../byterun/osdeps.h \
 ../byterun/printexc.h stack.h ../byterun/sys.h natdynlink.h
+ ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
+ ../byterun/misc.h ../byterun/backtrace.h ../byterun/custom.h \
+ ../byterun/debugger.h ../byterun/fail.h ../byterun/freelist.h \
../byterun/gc.h ../byterun/gc_ctrl.h ../byterun/intext.h ../byterun/io.h \
../byterun/memory.h ../byterun/gc.h ../byterun/major_gc.h \
../byterun/freelist.h ../byterun/minor_gc.h ../byterun/misc.h \
../byterun/mlvalues.h ../byterun/osdeps.h ../byterun/printexc.h stack.h \
+ ../byterun/sys.h natdynlink.h
 str.d.o: str.c ../byterun/alloc.h ../byterun/misc.h ../byterun/config.h \
 ../byterun/../config/m.h ../byterun/../config/s.h ../byterun/mlvalues.h \
 ../byterun/fail.h ../byterun/mlvalues.h ../byterun/misc.h
+ ../byterun/../config/m.h ../byterun/../config/s.h ../byterun/mlvalues.h \
+ ../byterun/fail.h ../byterun/mlvalues.h ../byterun/misc.h
 sys.d.o: sys.c ../byterun/config.h ../byterun/../config/m.h \
 ../byterun/../config/s.h ../byterun/alloc.h ../byterun/misc.h \
 ../byterun/config.h ../byterun/mlvalues.h ../byterun/debugger.h \
 ../byterun/fail.h ../byterun/instruct.h ../byterun/mlvalues.h \
 ../byterun/osdeps.h ../byterun/signals.h ../byterun/stacks.h \
 ../byterun/memory.h ../byterun/gc.h ../byterun/major_gc.h \
 ../byterun/freelist.h ../byterun/minor_gc.h ../byterun/sys.h
+ ../byterun/../config/s.h ../byterun/alloc.h ../byterun/misc.h \
+ ../byterun/config.h ../byterun/mlvalues.h ../byterun/debugger.h \
+ ../byterun/fail.h ../byterun/instruct.h ../byterun/mlvalues.h \
+ ../byterun/osdeps.h ../byterun/signals.h ../byterun/stacks.h \
+ ../byterun/memory.h ../byterun/gc.h ../byterun/major_gc.h \
+ ../byterun/freelist.h ../byterun/minor_gc.h ../byterun/sys.h
 terminfo.d.o: terminfo.c ../byterun/config.h ../byterun/../config/m.h \
 ../byterun/../config/s.h ../byterun/alloc.h ../byterun/misc.h \
 ../byterun/config.h ../byterun/mlvalues.h ../byterun/fail.h \
 ../byterun/io.h ../byterun/mlvalues.h
+ ../byterun/../config/s.h ../byterun/alloc.h ../byterun/misc.h \
+ ../byterun/config.h ../byterun/mlvalues.h ../byterun/fail.h \
+ ../byterun/io.h ../byterun/mlvalues.h
 unix.d.o: unix.c ../byterun/config.h ../byterun/../config/m.h \
 ../byterun/../config/s.h ../byterun/memory.h ../byterun/config.h \
 ../byterun/gc.h ../byterun/mlvalues.h ../byterun/misc.h \
 ../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h \
 ../byterun/misc.h ../byterun/osdeps.h
+ ../byterun/../config/s.h ../byterun/memory.h ../byterun/config.h \
+ ../byterun/gc.h ../byterun/mlvalues.h ../byterun/misc.h \
+ ../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h \
+ ../byterun/misc.h ../byterun/osdeps.h
 weak.d.o: weak.c ../byterun/alloc.h ../byterun/misc.h ../byterun/config.h \
 ../byterun/../config/m.h ../byterun/../config/s.h ../byterun/mlvalues.h \
 ../byterun/fail.h ../byterun/major_gc.h ../byterun/freelist.h \
 ../byterun/memory.h ../byterun/gc.h ../byterun/major_gc.h \
 ../byterun/minor_gc.h ../byterun/mlvalues.h
+ ../byterun/../config/m.h ../byterun/../config/s.h ../byterun/mlvalues.h \
+ ../byterun/fail.h ../byterun/major_gc.h ../byterun/freelist.h \
+ ../byterun/memory.h ../byterun/gc.h ../byterun/major_gc.h \
+ ../byterun/minor_gc.h ../byterun/mlvalues.h
 alloc.p.o: alloc.c ../byterun/alloc.h ../byterun/misc.h ../byterun/config.h \
 ../byterun/../config/m.h ../byterun/../config/s.h ../byterun/mlvalues.h \
 ../byterun/custom.h ../byterun/major_gc.h ../byterun/freelist.h \
 ../byterun/memory.h ../byterun/gc.h ../byterun/major_gc.h \
 ../byterun/minor_gc.h ../byterun/mlvalues.h ../byterun/stacks.h \
 ../byterun/memory.h
+ ../byterun/../config/m.h ../byterun/../config/s.h ../byterun/mlvalues.h \
+ ../byterun/custom.h ../byterun/major_gc.h ../byterun/freelist.h \
+ ../byterun/memory.h ../byterun/gc.h ../byterun/major_gc.h \
+ ../byterun/minor_gc.h ../byterun/mlvalues.h ../byterun/stacks.h \
+ ../byterun/memory.h
 array.p.o: array.c ../byterun/alloc.h ../byterun/misc.h ../byterun/config.h \
 ../byterun/../config/m.h ../byterun/../config/s.h ../byterun/mlvalues.h \
 ../byterun/fail.h ../byterun/memory.h ../byterun/gc.h \
 ../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h \
 ../byterun/misc.h ../byterun/mlvalues.h
+ ../byterun/../config/m.h ../byterun/../config/s.h ../byterun/mlvalues.h \
+ ../byterun/fail.h ../byterun/memory.h ../byterun/gc.h \
+ ../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h \
+ ../byterun/misc.h ../byterun/mlvalues.h
 backtrace.p.o: backtrace.c ../byterun/alloc.h ../byterun/misc.h \
 ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
 ../byterun/mlvalues.h ../byterun/backtrace.h ../byterun/memory.h \
 ../byterun/gc.h ../byterun/major_gc.h ../byterun/freelist.h \
 ../byterun/minor_gc.h ../byterun/misc.h ../byterun/mlvalues.h stack.h
+ ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
+ ../byterun/mlvalues.h ../byterun/backtrace.h ../byterun/memory.h \
+ ../byterun/gc.h ../byterun/major_gc.h ../byterun/freelist.h \
+ ../byterun/minor_gc.h ../byterun/misc.h ../byterun/mlvalues.h stack.h
 callback.p.o: callback.c ../byterun/callback.h ../byterun/mlvalues.h \
 ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
 ../byterun/misc.h ../byterun/fail.h ../byterun/memory.h ../byterun/gc.h \
 ../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h \
 ../byterun/mlvalues.h
+ ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
+ ../byterun/misc.h ../byterun/fail.h ../byterun/memory.h ../byterun/gc.h \
+ ../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h \
+ ../byterun/mlvalues.h
 compact.p.o: compact.c ../byterun/config.h ../byterun/../config/m.h \
 ../byterun/../config/s.h ../byterun/finalise.h ../byterun/roots.h \
 ../byterun/misc.h ../byterun/config.h ../byterun/memory.h \
 ../byterun/gc.h ../byterun/mlvalues.h ../byterun/major_gc.h \
 ../byterun/freelist.h ../byterun/minor_gc.h ../byterun/freelist.h \
 ../byterun/gc.h ../byterun/gc_ctrl.h ../byterun/major_gc.h \
 ../byterun/memory.h ../byterun/mlvalues.h ../byterun/roots.h \
 ../byterun/weak.h
+ ../byterun/../config/s.h ../byterun/finalise.h ../byterun/roots.h \
+ ../byterun/misc.h ../byterun/config.h ../byterun/memory.h \
+ ../byterun/gc.h ../byterun/mlvalues.h ../byterun/major_gc.h \
+ ../byterun/freelist.h ../byterun/minor_gc.h ../byterun/freelist.h \
+ ../byterun/gc.h ../byterun/gc_ctrl.h ../byterun/major_gc.h \
+ ../byterun/memory.h ../byterun/mlvalues.h ../byterun/roots.h \
+ ../byterun/weak.h
 compare.p.o: compare.c ../byterun/custom.h ../byterun/mlvalues.h \
 ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
 ../byterun/misc.h ../byterun/fail.h ../byterun/memory.h ../byterun/gc.h \
 ../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h \
 ../byterun/misc.h ../byterun/mlvalues.h
+ ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
+ ../byterun/misc.h ../byterun/fail.h ../byterun/memory.h ../byterun/gc.h \
+ ../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h \
+ ../byterun/misc.h ../byterun/mlvalues.h
 custom.p.o: custom.c ../byterun/alloc.h ../byterun/misc.h \
 ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
 ../byterun/mlvalues.h ../byterun/custom.h ../byterun/fail.h \
 ../byterun/memory.h ../byterun/gc.h ../byterun/major_gc.h \
 ../byterun/freelist.h ../byterun/minor_gc.h ../byterun/mlvalues.h
+ ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
+ ../byterun/mlvalues.h ../byterun/custom.h ../byterun/fail.h \
+ ../byterun/memory.h ../byterun/gc.h ../byterun/major_gc.h \
+ ../byterun/freelist.h ../byterun/minor_gc.h ../byterun/mlvalues.h
 debugger.p.o: debugger.c ../byterun/alloc.h ../byterun/misc.h \
 ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
 ../byterun/mlvalues.h ../byterun/config.h ../byterun/debugger.h \
 ../byterun/misc.h
+ ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
+ ../byterun/mlvalues.h ../byterun/config.h ../byterun/debugger.h \
+ ../byterun/misc.h
 dynlink.p.o: dynlink.c ../byterun/config.h ../byterun/../config/m.h \
 ../byterun/../config/s.h ../byterun/alloc.h ../byterun/misc.h \
 ../byterun/config.h ../byterun/mlvalues.h ../byterun/dynlink.h \
 ../byterun/fail.h ../byterun/mlvalues.h ../byterun/memory.h \
 ../byterun/gc.h ../byterun/major_gc.h ../byterun/freelist.h \
 ../byterun/minor_gc.h ../byterun/misc.h ../byterun/osdeps.h \
 ../byterun/prims.h
+ ../byterun/../config/s.h ../byterun/alloc.h ../byterun/misc.h \
+ ../byterun/config.h ../byterun/mlvalues.h ../byterun/dynlink.h \
+ ../byterun/fail.h ../byterun/mlvalues.h ../byterun/memory.h \
+ ../byterun/gc.h ../byterun/major_gc.h ../byterun/freelist.h \
+ ../byterun/minor_gc.h ../byterun/misc.h ../byterun/osdeps.h \
+ ../byterun/prims.h
 extern.p.o: extern.c ../byterun/alloc.h ../byterun/misc.h \
 ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
 ../byterun/mlvalues.h ../byterun/custom.h ../byterun/fail.h \
 ../byterun/gc.h ../byterun/intext.h ../byterun/io.h ../byterun/io.h \
 ../byterun/md5.h ../byterun/memory.h ../byterun/gc.h \
 ../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h \
 ../byterun/misc.h ../byterun/mlvalues.h ../byterun/reverse.h
+ ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
+ ../byterun/mlvalues.h ../byterun/custom.h ../byterun/fail.h \
+ ../byterun/gc.h ../byterun/intext.h ../byterun/io.h ../byterun/io.h \
+ ../byterun/md5.h ../byterun/memory.h ../byterun/gc.h \
+ ../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h \
+ ../byterun/misc.h ../byterun/mlvalues.h ../byterun/reverse.h
 fail.p.o: fail.c ../byterun/alloc.h ../byterun/misc.h ../byterun/config.h \
 ../byterun/../config/m.h ../byterun/../config/s.h ../byterun/mlvalues.h \
 ../byterun/fail.h ../byterun/io.h ../byterun/gc.h ../byterun/memory.h \
 ../byterun/gc.h ../byterun/major_gc.h ../byterun/freelist.h \
 ../byterun/minor_gc.h ../byterun/mlvalues.h ../byterun/printexc.h \
 ../byterun/signals.h stack.h ../byterun/roots.h ../byterun/memory.h
+ ../byterun/../config/m.h ../byterun/../config/s.h ../byterun/mlvalues.h \
+ ../byterun/fail.h ../byterun/io.h ../byterun/gc.h ../byterun/memory.h \
+ ../byterun/gc.h ../byterun/major_gc.h ../byterun/freelist.h \
+ ../byterun/minor_gc.h ../byterun/mlvalues.h ../byterun/printexc.h \
+ ../byterun/signals.h stack.h ../byterun/roots.h ../byterun/memory.h
 finalise.p.o: finalise.c ../byterun/callback.h ../byterun/mlvalues.h \
 ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
 ../byterun/misc.h ../byterun/fail.h ../byterun/mlvalues.h \
 ../byterun/roots.h ../byterun/memory.h ../byterun/gc.h \
 ../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h \
 ../byterun/signals.h
+ ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
+ ../byterun/misc.h ../byterun/fail.h ../byterun/mlvalues.h \
+ ../byterun/roots.h ../byterun/memory.h ../byterun/gc.h \
+ ../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h \
+ ../byterun/signals.h
 floats.p.o: floats.c ../byterun/alloc.h ../byterun/misc.h \
 ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
 ../byterun/mlvalues.h ../byterun/fail.h ../byterun/memory.h \
 ../byterun/gc.h ../byterun/major_gc.h ../byterun/freelist.h \
 ../byterun/minor_gc.h ../byterun/mlvalues.h ../byterun/misc.h \
 ../byterun/reverse.h ../byterun/stacks.h ../byterun/memory.h
+ ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
+ ../byterun/mlvalues.h ../byterun/fail.h ../byterun/memory.h \
+ ../byterun/gc.h ../byterun/major_gc.h ../byterun/freelist.h \
+ ../byterun/minor_gc.h ../byterun/mlvalues.h ../byterun/misc.h \
+ ../byterun/reverse.h ../byterun/stacks.h ../byterun/memory.h
 freelist.p.o: freelist.c ../byterun/config.h ../byterun/../config/m.h \
 ../byterun/../config/s.h ../byterun/freelist.h ../byterun/misc.h \
 ../byterun/config.h ../byterun/mlvalues.h ../byterun/gc.h \
 ../byterun/gc_ctrl.h ../byterun/memory.h ../byterun/gc.h \
 ../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h \
 ../byterun/major_gc.h ../byterun/misc.h ../byterun/mlvalues.h
+ ../byterun/../config/s.h ../byterun/freelist.h ../byterun/misc.h \
+ ../byterun/config.h ../byterun/mlvalues.h ../byterun/gc.h \
+ ../byterun/gc_ctrl.h ../byterun/memory.h ../byterun/gc.h \
+ ../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h \
+ ../byterun/major_gc.h ../byterun/misc.h ../byterun/mlvalues.h
 gc_ctrl.p.o: gc_ctrl.c ../byterun/alloc.h ../byterun/misc.h \
 ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
 ../byterun/mlvalues.h ../byterun/compact.h ../byterun/custom.h \
 ../byterun/finalise.h ../byterun/roots.h ../byterun/memory.h \
 ../byterun/gc.h ../byterun/major_gc.h ../byterun/freelist.h \
 ../byterun/minor_gc.h ../byterun/freelist.h ../byterun/gc.h \
 ../byterun/gc_ctrl.h ../byterun/major_gc.h ../byterun/minor_gc.h \
 ../byterun/misc.h ../byterun/mlvalues.h stack.h
+ ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
+ ../byterun/mlvalues.h ../byterun/compact.h ../byterun/custom.h \
+ ../byterun/finalise.h ../byterun/roots.h ../byterun/memory.h \
+ ../byterun/gc.h ../byterun/major_gc.h ../byterun/freelist.h \
+ ../byterun/minor_gc.h ../byterun/freelist.h ../byterun/gc.h \
+ ../byterun/gc_ctrl.h ../byterun/major_gc.h ../byterun/minor_gc.h \
+ ../byterun/misc.h ../byterun/mlvalues.h stack.h
 globroots.p.o: globroots.c ../byterun/memory.h ../byterun/config.h \
 ../byterun/../config/m.h ../byterun/../config/s.h ../byterun/gc.h \
 ../byterun/mlvalues.h ../byterun/misc.h ../byterun/major_gc.h \
 ../byterun/freelist.h ../byterun/minor_gc.h ../byterun/misc.h \
 ../byterun/mlvalues.h ../byterun/roots.h ../byterun/memory.h \
 ../byterun/globroots.h ../byterun/roots.h
+ ../byterun/../config/m.h ../byterun/../config/s.h ../byterun/gc.h \
+ ../byterun/mlvalues.h ../byterun/misc.h ../byterun/major_gc.h \
+ ../byterun/freelist.h ../byterun/minor_gc.h ../byterun/misc.h \
+ ../byterun/mlvalues.h ../byterun/roots.h ../byterun/memory.h \
+ ../byterun/globroots.h ../byterun/roots.h
 hash.p.o: hash.c ../byterun/mlvalues.h ../byterun/config.h \
 ../byterun/../config/m.h ../byterun/../config/s.h ../byterun/misc.h \
 ../byterun/custom.h ../byterun/mlvalues.h ../byterun/memory.h \
 ../byterun/gc.h ../byterun/major_gc.h ../byterun/freelist.h \
 ../byterun/minor_gc.h ../byterun/hash.h ../byterun/int64_native.h
+ ../byterun/../config/m.h ../byterun/../config/s.h ../byterun/misc.h \
+ ../byterun/custom.h ../byterun/mlvalues.h ../byterun/memory.h \
+ ../byterun/gc.h ../byterun/major_gc.h ../byterun/freelist.h \
+ ../byterun/minor_gc.h ../byterun/hash.h ../byterun/int64_native.h
 intern.p.o: intern.c ../byterun/alloc.h ../byterun/misc.h \
 ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
 ../byterun/mlvalues.h ../byterun/callback.h ../byterun/custom.h \
 ../byterun/fail.h ../byterun/gc.h ../byterun/intext.h ../byterun/io.h \
 ../byterun/io.h ../byterun/md5.h ../byterun/memory.h ../byterun/gc.h \
 ../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h \
 ../byterun/mlvalues.h ../byterun/misc.h ../byterun/reverse.h
+ ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
+ ../byterun/mlvalues.h ../byterun/callback.h ../byterun/custom.h \
+ ../byterun/fail.h ../byterun/gc.h ../byterun/intext.h ../byterun/io.h \
+ ../byterun/io.h ../byterun/md5.h ../byterun/memory.h ../byterun/gc.h \
+ ../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h \
+ ../byterun/mlvalues.h ../byterun/misc.h ../byterun/reverse.h
 ints.p.o: ints.c ../byterun/alloc.h ../byterun/misc.h ../byterun/config.h \
 ../byterun/../config/m.h ../byterun/../config/s.h ../byterun/mlvalues.h \
 ../byterun/custom.h ../byterun/fail.h ../byterun/intext.h \
 ../byterun/io.h ../byterun/memory.h ../byterun/gc.h \
 ../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h \
 ../byterun/misc.h ../byterun/mlvalues.h ../byterun/int64_native.h
+ ../byterun/../config/m.h ../byterun/../config/s.h ../byterun/mlvalues.h \
+ ../byterun/custom.h ../byterun/fail.h ../byterun/intext.h \
+ ../byterun/io.h ../byterun/memory.h ../byterun/gc.h \
+ ../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h \
+ ../byterun/misc.h ../byterun/mlvalues.h ../byterun/int64_native.h
 io.p.o: io.c ../byterun/config.h ../byterun/../config/m.h \
 ../byterun/../config/s.h ../byterun/alloc.h ../byterun/misc.h \
 ../byterun/config.h ../byterun/mlvalues.h ../byterun/custom.h \
 ../byterun/fail.h ../byterun/io.h ../byterun/memory.h ../byterun/gc.h \
 ../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h \
 ../byterun/misc.h ../byterun/mlvalues.h ../byterun/signals.h \
 ../byterun/sys.h
+ ../byterun/../config/s.h ../byterun/alloc.h ../byterun/misc.h \
+ ../byterun/config.h ../byterun/mlvalues.h ../byterun/custom.h \
+ ../byterun/fail.h ../byterun/io.h ../byterun/memory.h ../byterun/gc.h \
+ ../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h \
+ ../byterun/misc.h ../byterun/mlvalues.h ../byterun/signals.h \
+ ../byterun/sys.h
 lexing.p.o: lexing.c ../byterun/fail.h ../byterun/misc.h \
 ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
 ../byterun/mlvalues.h ../byterun/mlvalues.h ../byterun/stacks.h \
 ../byterun/memory.h ../byterun/gc.h ../byterun/major_gc.h \
 ../byterun/freelist.h ../byterun/minor_gc.h
+ ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
+ ../byterun/mlvalues.h ../byterun/mlvalues.h ../byterun/stacks.h \
+ ../byterun/memory.h ../byterun/gc.h ../byterun/major_gc.h \
+ ../byterun/freelist.h ../byterun/minor_gc.h
 main.p.o: main.c ../byterun/misc.h ../byterun/config.h \
 ../byterun/../config/m.h ../byterun/../config/s.h ../byterun/mlvalues.h \
 ../byterun/misc.h ../byterun/sys.h
+ ../byterun/../config/m.h ../byterun/../config/s.h ../byterun/mlvalues.h \
+ ../byterun/misc.h ../byterun/sys.h
 major_gc.p.o: major_gc.c ../byterun/compact.h ../byterun/config.h \
 ../byterun/../config/m.h ../byterun/../config/s.h ../byterun/misc.h \
 ../byterun/custom.h ../byterun/mlvalues.h ../byterun/config.h \
 ../byterun/fail.h ../byterun/finalise.h ../byterun/roots.h \
 ../byterun/memory.h ../byterun/gc.h ../byterun/major_gc.h \
 ../byterun/freelist.h ../byterun/minor_gc.h ../byterun/freelist.h \
 ../byterun/gc.h ../byterun/gc_ctrl.h ../byterun/major_gc.h \
 ../byterun/misc.h ../byterun/mlvalues.h ../byterun/roots.h \
 ../byterun/weak.h
+ ../byterun/../config/m.h ../byterun/../config/s.h ../byterun/misc.h \
+ ../byterun/custom.h ../byterun/mlvalues.h ../byterun/config.h \
+ ../byterun/fail.h ../byterun/finalise.h ../byterun/roots.h \
+ ../byterun/memory.h ../byterun/gc.h ../byterun/major_gc.h \
+ ../byterun/freelist.h ../byterun/minor_gc.h ../byterun/freelist.h \
+ ../byterun/gc.h ../byterun/gc_ctrl.h ../byterun/major_gc.h \
+ ../byterun/misc.h ../byterun/mlvalues.h ../byterun/roots.h \
+ ../byterun/weak.h
 md5.p.o: md5.c ../byterun/alloc.h ../byterun/misc.h ../byterun/config.h \
 ../byterun/../config/m.h ../byterun/../config/s.h ../byterun/mlvalues.h \
 ../byterun/fail.h ../byterun/md5.h ../byterun/io.h ../byterun/memory.h \
 ../byterun/gc.h ../byterun/major_gc.h ../byterun/freelist.h \
 ../byterun/minor_gc.h ../byterun/mlvalues.h ../byterun/io.h \
 ../byterun/reverse.h
+ ../byterun/../config/m.h ../byterun/../config/s.h ../byterun/mlvalues.h \
+ ../byterun/fail.h ../byterun/md5.h ../byterun/io.h ../byterun/memory.h \
+ ../byterun/gc.h ../byterun/major_gc.h ../byterun/freelist.h \
+ ../byterun/minor_gc.h ../byterun/mlvalues.h ../byterun/io.h \
+ ../byterun/reverse.h
 memory.p.o: memory.c ../byterun/fail.h ../byterun/misc.h \
 ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
 ../byterun/mlvalues.h ../byterun/freelist.h ../byterun/gc.h \
 ../byterun/gc_ctrl.h ../byterun/major_gc.h ../byterun/freelist.h \
 ../byterun/memory.h ../byterun/gc.h ../byterun/major_gc.h \
 ../byterun/minor_gc.h ../byterun/minor_gc.h ../byterun/misc.h \
 ../byterun/mlvalues.h ../byterun/signals.h
+ ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
+ ../byterun/mlvalues.h ../byterun/freelist.h ../byterun/gc.h \
+ ../byterun/gc_ctrl.h ../byterun/major_gc.h ../byterun/freelist.h \
+ ../byterun/memory.h ../byterun/gc.h ../byterun/major_gc.h \
+ ../byterun/minor_gc.h ../byterun/minor_gc.h ../byterun/misc.h \
+ ../byterun/mlvalues.h ../byterun/signals.h
 meta.p.o: meta.c ../byterun/alloc.h ../byterun/misc.h ../byterun/config.h \
 ../byterun/../config/m.h ../byterun/../config/s.h ../byterun/mlvalues.h \
 ../byterun/config.h ../byterun/fail.h ../byterun/fix_code.h \
 ../byterun/interp.h ../byterun/intext.h ../byterun/io.h \
 ../byterun/major_gc.h ../byterun/freelist.h ../byterun/memory.h \
 ../byterun/gc.h ../byterun/major_gc.h ../byterun/minor_gc.h \
 ../byterun/minor_gc.h ../byterun/misc.h ../byterun/mlvalues.h \
 ../byterun/prims.h ../byterun/stacks.h ../byterun/memory.h
+ ../byterun/../config/m.h ../byterun/../config/s.h ../byterun/mlvalues.h \
+ ../byterun/config.h ../byterun/fail.h ../byterun/fix_code.h \
+ ../byterun/interp.h ../byterun/intext.h ../byterun/io.h \
+ ../byterun/major_gc.h ../byterun/freelist.h ../byterun/memory.h \
+ ../byterun/gc.h ../byterun/major_gc.h ../byterun/minor_gc.h \
+ ../byterun/minor_gc.h ../byterun/misc.h ../byterun/mlvalues.h \
+ ../byterun/prims.h ../byterun/stacks.h ../byterun/memory.h
 minor_gc.p.o: minor_gc.c ../byterun/config.h ../byterun/../config/m.h \
 ../byterun/../config/s.h ../byterun/fail.h ../byterun/misc.h \
 ../byterun/config.h ../byterun/mlvalues.h ../byterun/finalise.h \
 ../byterun/roots.h ../byterun/memory.h ../byterun/gc.h \
 ../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h \
 ../byterun/gc.h ../byterun/gc_ctrl.h ../byterun/major_gc.h \
 ../byterun/memory.h ../byterun/minor_gc.h ../byterun/misc.h \
 ../byterun/mlvalues.h ../byterun/roots.h ../byterun/signals.h \
 ../byterun/weak.h
+ ../byterun/../config/s.h ../byterun/fail.h ../byterun/misc.h \
+ ../byterun/config.h ../byterun/mlvalues.h ../byterun/finalise.h \
+ ../byterun/roots.h ../byterun/memory.h ../byterun/gc.h \
+ ../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h \
+ ../byterun/gc.h ../byterun/gc_ctrl.h ../byterun/major_gc.h \
+ ../byterun/memory.h ../byterun/minor_gc.h ../byterun/misc.h \
+ ../byterun/mlvalues.h ../byterun/roots.h ../byterun/signals.h \
+ ../byterun/weak.h
 misc.p.o: misc.c ../byterun/config.h ../byterun/../config/m.h \
 ../byterun/../config/s.h ../byterun/misc.h ../byterun/config.h \
 ../byterun/memory.h ../byterun/gc.h ../byterun/mlvalues.h \
 ../byterun/misc.h ../byterun/major_gc.h ../byterun/freelist.h \
 ../byterun/minor_gc.h
+ ../byterun/../config/s.h ../byterun/misc.h ../byterun/config.h \
+ ../byterun/memory.h ../byterun/gc.h ../byterun/mlvalues.h \
+ ../byterun/misc.h ../byterun/major_gc.h ../byterun/freelist.h \
+ ../byterun/minor_gc.h
 natdynlink.p.o: natdynlink.c ../byterun/misc.h ../byterun/config.h \
 ../byterun/../config/m.h ../byterun/../config/s.h ../byterun/mlvalues.h \
 ../byterun/misc.h ../byterun/memory.h ../byterun/gc.h \
 ../byterun/mlvalues.h ../byterun/major_gc.h ../byterun/freelist.h \
 ../byterun/minor_gc.h stack.h ../byterun/callback.h ../byterun/alloc.h \
 ../byterun/intext.h ../byterun/io.h natdynlink.h ../byterun/osdeps.h \
 ../byterun/fail.h
+ ../byterun/../config/m.h ../byterun/../config/s.h ../byterun/mlvalues.h \
+ ../byterun/misc.h ../byterun/memory.h ../byterun/gc.h \
+ ../byterun/mlvalues.h ../byterun/major_gc.h ../byterun/freelist.h \
+ ../byterun/minor_gc.h stack.h ../byterun/callback.h ../byterun/alloc.h \
+ ../byterun/intext.h ../byterun/io.h natdynlink.h ../byterun/osdeps.h \
+ ../byterun/fail.h
 obj.p.o: obj.c ../byterun/alloc.h ../byterun/misc.h ../byterun/config.h \
 ../byterun/../config/m.h ../byterun/../config/s.h ../byterun/mlvalues.h \
 ../byterun/fail.h ../byterun/gc.h ../byterun/interp.h \
 ../byterun/major_gc.h ../byterun/freelist.h ../byterun/memory.h \
 ../byterun/gc.h ../byterun/major_gc.h ../byterun/minor_gc.h \
 ../byterun/minor_gc.h ../byterun/misc.h ../byterun/mlvalues.h \
 ../byterun/prims.h
+ ../byterun/../config/m.h ../byterun/../config/s.h ../byterun/mlvalues.h \
+ ../byterun/fail.h ../byterun/gc.h ../byterun/interp.h \
+ ../byterun/major_gc.h ../byterun/freelist.h ../byterun/memory.h \
+ ../byterun/gc.h ../byterun/major_gc.h ../byterun/minor_gc.h \
+ ../byterun/minor_gc.h ../byterun/misc.h ../byterun/mlvalues.h \
+ ../byterun/prims.h
 parsing.p.o: parsing.c ../byterun/config.h ../byterun/../config/m.h \
 ../byterun/../config/s.h ../byterun/mlvalues.h ../byterun/config.h \
 ../byterun/misc.h ../byterun/memory.h ../byterun/gc.h \
 ../byterun/mlvalues.h ../byterun/major_gc.h ../byterun/freelist.h \
 ../byterun/minor_gc.h ../byterun/alloc.h
+ ../byterun/../config/s.h ../byterun/mlvalues.h ../byterun/config.h \
+ ../byterun/misc.h ../byterun/memory.h ../byterun/gc.h \
+ ../byterun/mlvalues.h ../byterun/major_gc.h ../byterun/freelist.h \
+ ../byterun/minor_gc.h ../byterun/alloc.h
 printexc.p.o: printexc.c ../byterun/backtrace.h ../byterun/mlvalues.h \
 ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
 ../byterun/misc.h ../byterun/callback.h ../byterun/debugger.h \
 ../byterun/fail.h ../byterun/misc.h ../byterun/mlvalues.h \
 ../byterun/printexc.h
+ ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
+ ../byterun/misc.h ../byterun/callback.h ../byterun/debugger.h \
+ ../byterun/fail.h ../byterun/misc.h ../byterun/mlvalues.h \
+ ../byterun/printexc.h
 roots.p.o: roots.c ../byterun/finalise.h ../byterun/roots.h \
 ../byterun/misc.h ../byterun/config.h ../byterun/../config/m.h \
 ../byterun/../config/s.h ../byterun/memory.h ../byterun/gc.h \
 ../byterun/mlvalues.h ../byterun/major_gc.h ../byterun/freelist.h \
 ../byterun/minor_gc.h ../byterun/globroots.h ../byterun/memory.h \
 ../byterun/major_gc.h ../byterun/minor_gc.h ../byterun/misc.h \
 ../byterun/mlvalues.h stack.h ../byterun/roots.h
+ ../byterun/misc.h ../byterun/config.h ../byterun/../config/m.h \
+ ../byterun/../config/s.h ../byterun/memory.h ../byterun/gc.h \
+ ../byterun/mlvalues.h ../byterun/major_gc.h ../byterun/freelist.h \
+ ../byterun/minor_gc.h ../byterun/globroots.h ../byterun/memory.h \
+ ../byterun/major_gc.h ../byterun/minor_gc.h ../byterun/misc.h \
+ ../byterun/mlvalues.h stack.h ../byterun/roots.h
 signals.p.o: signals.c ../byterun/alloc.h ../byterun/misc.h \
 ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
 ../byterun/mlvalues.h ../byterun/callback.h ../byterun/config.h \
 ../byterun/fail.h ../byterun/memory.h ../byterun/gc.h \
 ../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h \
 ../byterun/misc.h ../byterun/mlvalues.h ../byterun/roots.h \
 ../byterun/memory.h ../byterun/signals.h ../byterun/signals_machdep.h \
 ../byterun/sys.h
+ ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
+ ../byterun/mlvalues.h ../byterun/callback.h ../byterun/config.h \
+ ../byterun/fail.h ../byterun/memory.h ../byterun/gc.h \
+ ../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h \
+ ../byterun/misc.h ../byterun/mlvalues.h ../byterun/roots.h \
+ ../byterun/memory.h ../byterun/signals.h ../byterun/signals_machdep.h \
+ ../byterun/sys.h
 signals_asm.p.o: signals_asm.c ../byterun/fail.h ../byterun/misc.h \
 ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
 ../byterun/mlvalues.h ../byterun/memory.h ../byterun/gc.h \
 ../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h \
 ../byterun/osdeps.h ../byterun/signals.h ../byterun/signals_machdep.h \
 signals_osdep.h stack.h
+ ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
+ ../byterun/mlvalues.h ../byterun/memory.h ../byterun/gc.h \
+ ../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h \
+ ../byterun/osdeps.h ../byterun/signals.h ../byterun/signals_machdep.h \
+ signals_osdep.h stack.h
 startup.p.o: startup.c ../byterun/callback.h ../byterun/mlvalues.h \
 ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
 ../byterun/misc.h ../byterun/backtrace.h ../byterun/custom.h \
 ../byterun/debugger.h ../byterun/fail.h ../byterun/freelist.h \
 ../byterun/gc.h ../byterun/gc_ctrl.h ../byterun/intext.h \
 ../byterun/io.h ../byterun/memory.h ../byterun/gc.h \
 ../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h \
 ../byterun/misc.h ../byterun/mlvalues.h ../byterun/osdeps.h \
 ../byterun/printexc.h stack.h ../byterun/sys.h natdynlink.h
+ ../byterun/config.h ../byterun/../config/m.h ../byterun/../config/s.h \
+ ../byterun/misc.h ../byterun/backtrace.h ../byterun/custom.h \
+ ../byterun/debugger.h ../byterun/fail.h ../byterun/freelist.h \
../byterun/gc.h ../byterun/gc_ctrl.h ../byterun/intext.h ../byterun/io.h \
../byterun/memory.h ../byterun/gc.h ../byterun/major_gc.h \
../byterun/freelist.h ../byterun/minor_gc.h ../byterun/misc.h \
../byterun/mlvalues.h ../byterun/osdeps.h ../byterun/printexc.h stack.h \
+ ../byterun/sys.h natdynlink.h
 str.p.o: str.c ../byterun/alloc.h ../byterun/misc.h ../byterun/config.h \
 ../byterun/../config/m.h ../byterun/../config/s.h ../byterun/mlvalues.h \
 ../byterun/fail.h ../byterun/mlvalues.h ../byterun/misc.h
+ ../byterun/../config/m.h ../byterun/../config/s.h ../byterun/mlvalues.h \
+ ../byterun/fail.h ../byterun/mlvalues.h ../byterun/misc.h
 sys.p.o: sys.c ../byterun/config.h ../byterun/../config/m.h \
 ../byterun/../config/s.h ../byterun/alloc.h ../byterun/misc.h \
 ../byterun/config.h ../byterun/mlvalues.h ../byterun/debugger.h \
 ../byterun/fail.h ../byterun/instruct.h ../byterun/mlvalues.h \
 ../byterun/osdeps.h ../byterun/signals.h ../byterun/stacks.h \
 ../byterun/memory.h ../byterun/gc.h ../byterun/major_gc.h \
 ../byterun/freelist.h ../byterun/minor_gc.h ../byterun/sys.h
+ ../byterun/../config/s.h ../byterun/alloc.h ../byterun/misc.h \
+ ../byterun/config.h ../byterun/mlvalues.h ../byterun/debugger.h \
+ ../byterun/fail.h ../byterun/instruct.h ../byterun/mlvalues.h \
+ ../byterun/osdeps.h ../byterun/signals.h ../byterun/stacks.h \
+ ../byterun/memory.h ../byterun/gc.h ../byterun/major_gc.h \
+ ../byterun/freelist.h ../byterun/minor_gc.h ../byterun/sys.h
 terminfo.p.o: terminfo.c ../byterun/config.h ../byterun/../config/m.h \
 ../byterun/../config/s.h ../byterun/alloc.h ../byterun/misc.h \
 ../byterun/config.h ../byterun/mlvalues.h ../byterun/fail.h \
 ../byterun/io.h ../byterun/mlvalues.h
+ ../byterun/../config/s.h ../byterun/alloc.h ../byterun/misc.h \
+ ../byterun/config.h ../byterun/mlvalues.h ../byterun/fail.h \
+ ../byterun/io.h ../byterun/mlvalues.h
 unix.p.o: unix.c ../byterun/config.h ../byterun/../config/m.h \
 ../byterun/../config/s.h ../byterun/memory.h ../byterun/config.h \
 ../byterun/gc.h ../byterun/mlvalues.h ../byterun/misc.h \
 ../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h \
 ../byterun/misc.h ../byterun/osdeps.h
+ ../byterun/../config/s.h ../byterun/memory.h ../byterun/config.h \
+ ../byterun/gc.h ../byterun/mlvalues.h ../byterun/misc.h \
+ ../byterun/major_gc.h ../byterun/freelist.h ../byterun/minor_gc.h \
+ ../byterun/misc.h ../byterun/osdeps.h
 weak.p.o: weak.c ../byterun/alloc.h ../byterun/misc.h ../byterun/config.h \
 ../byterun/../config/m.h ../byterun/../config/s.h ../byterun/mlvalues.h \
 ../byterun/fail.h ../byterun/major_gc.h ../byterun/freelist.h \
 ../byterun/memory.h ../byterun/gc.h ../byterun/major_gc.h \
 ../byterun/minor_gc.h ../byterun/mlvalues.h
+ ../byterun/../config/m.h ../byterun/../config/s.h ../byterun/mlvalues.h \
+ ../byterun/fail.h ../byterun/major_gc.h ../byterun/freelist.h \
+ ../byterun/memory.h ../byterun/gc.h ../byterun/major_gc.h \
+ ../byterun/minor_gc.h ../byterun/mlvalues.h
index 2ccfa880dc6e65a9a9044f128b60433ba29c55a0..d4f0c56e334e6579bf40bdac5361f85cfdd2e0e1 100644 (file)
@@ -11,7 +11,7 @@
 #                                                                       #
 #########################################################################
 
-# $Id$
+# $Id: Makefile 12477 2012-05-24 16:17:19Z xleroy $
 
 include ../config/Makefile
 
@@ -26,7 +26,8 @@ COBJS=startup.o main.o fail.o roots.o globroots.o signals.o signals_asm.o \
   misc.o freelist.o major_gc.o minor_gc.o memory.o alloc.o compare.o ints.o \
   floats.o str.o array.o io.o extern.o intern.o hash.o sys.o parsing.o \
   gc_ctrl.o terminfo.o md5.o obj.o lexing.o printexc.o callback.o weak.o \
-  compact.o finalise.o custom.o unix.o backtrace.o natdynlink.o debugger.o
+  compact.o finalise.o custom.o unix.o backtrace.o natdynlink.o debugger.o \
+  meta.o dynlink.o
 
 ASMOBJS=$(ARCH).o
 
index 81e289014381e30785a830492843a876b033d2c8..79a85d82ebff0a415f332cd7d18006f181b1962d 100644 (file)
@@ -11,7 +11,7 @@
 #                                                                       #
 #########################################################################
 
-# $Id$
+# $Id: Makefile.nt 12495 2012-05-29 10:41:01Z lefessan $
 
 include ../config/Makefile
 
@@ -24,7 +24,7 @@ COBJS=startup.$(O) main.$(O) fail.$(O) roots.$(O) signals.$(O) signals_asm.$(O)
   intern.$(O) hash.$(O) sys.$(O) parsing.$(O) gc_ctrl.$(O) terminfo.$(O) \
   md5.$(O) obj.$(O) lexing.$(O) win32.$(O) printexc.$(O) callback.$(O) \
   weak.$(O) compact.$(O) finalise.$(O) custom.$(O) globroots.$(O) \
-  backtrace.$(O) natdynlink.$(O) debugger.$(O)
+  backtrace.$(O) natdynlink.$(O) debugger.$(O) meta.$(O) dynlink.$(O)
 
 LINKEDFILES=misc.c freelist.c major_gc.c minor_gc.c memory.c alloc.c array.c \
   compare.c ints.c floats.c str.c io.c extern.c intern.c hash.c sys.c \
index 715e796bcbe030d0218919de3b549947022c328c..45bddd1c1e8e2dce080a5d2f070aff93b4c91478 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: amd64.S 12179 2012-02-21 17:41:02Z xleroy $ */
 
 /* Asm part of the runtime system, AMD64 processor */
 /* Must be preprocessed by cpp */
index 7dfb31437c06ec30615441efc9eac0003e813dc0..76a4732bc15ffc17cc1056ffed5028745b457d69 100644 (file)
@@ -11,7 +11,7 @@
 ;*                                                                     *
 ;***********************************************************************
 
-; $Id$
+; $Id: amd64nt.asm 12149 2012-02-10 16:15:24Z doligez $
 
 ; Asm part of the runtime system, AMD64 processor, Intel syntax
 
index 64829566e00dcb8c5d09434c7bc38138fba0fe9a..d6f59a20d4b4f63bc86071903774b59436cff3af 100644 (file)
@@ -12,7 +12,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: arm.S 12210 2012-03-08 19:52:03Z doligez $ */
 
 /* Asm part of the runtime system, ARM processor */
 /* Must be preprocessed by cpp */
index 7b47c0bfc946564e908e39135192c3203e971046..bb714858228f14b038ae4f0d1f5607799c1082e8 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: backtrace.c 12149 2012-02-10 16:15:24Z doligez $ */
 
 /* Stack backtrace for uncaught exceptions */
 
index 77cf4246cb31baf953f6406aac3095dae944a6c2..b84f34988ce84325a7e3a47d389690552daa8078 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: fail.c 12128 2012-02-05 09:56:23Z bmeurer $ */
 
 /* Raising exceptions from C. */
 
index e9b8a93bb740ec9d301127e39137c744b424636f..e8e00a44cf82d118cfe45a2c2bd54cbe96b4bec9 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: i386.S 12179 2012-02-21 17:41:02Z xleroy $ */
 
 /* Asm part of the runtime system, Intel 386 processor */
 /* Must be preprocessed by cpp */
index 7649a8a41f87a2ad1ff56afe1abde2959583c549..41d77bc53dd33d2124924e512bc16b4a431c5ad6 100644 (file)
@@ -11,7 +11,7 @@
 ;*                                                                     *
 ;***********************************************************************
 
-; $Id$
+; $Id: i386nt.asm 12149 2012-02-10 16:15:24Z doligez $
 
 ; Asm part of the runtime system, Intel 386 processor, Intel syntax
 
index 8618b50a151d5cf97fd2a66fd4fccb86d4cbf489..9183fc7f0bd7afd45d2f7e75b18cb99b4dfc20d2 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: power-elf.S 12160 2012-02-17 10:43:50Z xleroy $ */
 
 #define Addrglobal(reg,glob) \
         addis   reg, 0, glob@ha; \
index 843e056af288e2b0bd68e756cfea72e7b660db35..a42652b688688f81c6280f5905c5941b174775fc 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: power-rhapsody.S 12159 2012-02-17 10:12:09Z xleroy $ */
 
 #ifdef __ppc64__
 #define X(a,b) b
index edb7429d7d0757bc24b6a0fef7bc464bc15b98b4..720bcae4324c368ebc23942253d126aaea063807 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: roots.c 12149 2012-02-10 16:15:24Z doligez $ */
 
 /* To walk the memory roots for garbage collection */
 
index 9d42718b8fb90ed260de5f6c86b7826fb9b25b92..4065826e676b29f26715852dcc753431c2e3fffe 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: signals_asm.c 12159 2012-02-17 10:12:09Z xleroy $ */
 
 /* Signal handling, code specific to the native-code compiler */
 
index 830c43b386d7617fef15083dc35e5d1d99a9b302..f0d1f3bb956b3a09fdfabb1da766590464a7a514 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: signals_osdep.h 12124 2012-02-04 10:15:24Z bmeurer $ */
 
 /* Processor- and OS-dependent signal interface */
 
index 261743159b4c79702200d85122a55f190f210916..918a02a72f4581621b817ccd6ad238b17f828def 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: sparc.S 12159 2012-02-17 10:12:09Z xleroy $ */
 
 /* Asm part of the runtime system for the Sparc processor.  */
 /* Must be preprocessed by cpp */
index 9b575cb70cca6e5438cb2bef381e5979942cb44e..a801405ec62d3e89dab6b060fb599cdd5627cf00 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: stack.h 12159 2012-02-17 10:12:09Z xleroy $ */
 
 /* Machine-dependent interface with the asm code */
 
index a04fa84fcb24f0e564ca8224fc68ee317e3c7ed8..fc7f464c9fbe0fb329bbb96baf60885d10dca0b4 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: startup.c 12227 2012-03-13 14:44:48Z xleroy $ */
 
 /* Start-up code */
 
index a0a2356c9a04f866df6a87ee910f0701218afecc..8165156d9a2588c673d267620fb6fe6516d0ed43 100644 (file)
@@ -1,6 +1,8 @@
 Saved
 ocamlrun
+ocamlrun.exe
 ocamlyacc
+ocamlyacc.exe
 camlheader
 myocamlbuild
 myocamlbuild.native
index 0db6ddb845daec14508bc1761ec1086e39683db4..cbb279dd100a2ae1743d579767500f54b275972c 100755 (executable)
Binary files a/boot/myocamlbuild.boot and b/boot/myocamlbuild.boot differ
index 691e46b01d1da8cb0c820b3dec639b3afa626fac..97d88e42fe37b847c0305c3e5a87004c2f046616 100755 (executable)
Binary files a/boot/ocamlc and b/boot/ocamlc differ
index 6a0417d8037e014756b209b4e6c5b2b713a3c189..e54c57cd36d1e0126ad0a276e338209dd3f0514c 100755 (executable)
Binary files a/boot/ocamldep and b/boot/ocamldep differ
index ded272a4dd6e5acf77b53f2a77a174b8518211ce..6ae4967c61304be9f0263b2c9e3fa9382dc288f9 100755 (executable)
Binary files a/boot/ocamllex and b/boot/ocamllex differ
index 79d5d20ba956bf9291933b6e2c12640dca3284d9..3aaf231f9861bfc4a13e2baf6255ab8b383892ed 100755 (executable)
@@ -12,7 +12,7 @@
 #                                                                       #
 #########################################################################
 
-# $Id$
+# $Id: boot.sh 11156 2011-07-27 14:17:02Z doligez $
 cd `dirname $0`/..
 set -ex
 TAG_LINE='true: -use_stdlib'
index 264d63551e39ec16eb2fe3df1bf5bfd21dc8140f..120603801061a35c8f926b9703daf41efc49d09f 100644 (file)
@@ -2,6 +2,7 @@
   make clean
   ./build/distclean.sh
   ./configure -prefix `pwd`/_install
+  (cd otherlibs/labltk/browser; make help.ml)
   ./build/fastworld.sh
   # Go to "Bootstrap camlp4"
 
 
  In Camlp4/Printers/OCaml.ml:
    | <:expr< let open $i$ in $e$ >> ->
-       pp f "@[<2>let open %a@]@ @[<2>in@ %a@]" 
+       pp f "@[<2>let open %a@]@ @[<2>in@ %a@]"
              o#ident i o#reset_semi#expr e
  And at the end of #simple_expr:
    <:expr< let open $_$ in $_$ >>
index 442284d9d5f65dec15bbeb928c7e03da70658c7d..663cd1e4e64448f43893a2c4c33e317958bdec70 100755 (executable)
@@ -12,7 +12,7 @@
 #                                                                       #
 #########################################################################
 
-# $Id$
+# $Id: camlp4-byte-only.sh 11156 2011-07-27 14:17:02Z doligez $
 
 set -e
 cd `dirname $0`/..
index 45311065c92f8287fa6a10fa27c2728b3be58cb8..b39556b225b98fac560b9c247df48bdadd9aa5a2 100755 (executable)
@@ -12,7 +12,7 @@
 #                                                                       #
 #########################################################################
 
-# $Id$
+# $Id: camlp4-mkCamlp4Ast.sh 11156 2011-07-27 14:17:02Z doligez $
 set -e
 cd `dirname $0`/..
 
index d05932e2a6e62f1c6bdf4eecb7f5a0d84419ce7b..b80fbca0ef724a58686f671efcf575ffac54510d 100755 (executable)
@@ -12,7 +12,7 @@
 #                                                                       #
 #########################################################################
 
-# $Id$
+# $Id: camlp4-native-only.sh 11156 2011-07-27 14:17:02Z doligez $
 
 set -e
 cd `dirname $0`/..
index 4f4f51979e834d1e4440b10b51b5d31658e2feb2..e20eb5bf7674d5a79b0b7590c712acab0e45bef3 100644 (file)
@@ -12,7 +12,7 @@
 #                                                                       #
 #########################################################################
 
-# $Id$
+# $Id: camlp4-targets.sh 11156 2011-07-27 14:17:02Z doligez $
 CAMLP4_COMMON="\
   camlp4/Camlp4/Camlp4Ast.partial.ml \
   camlp4/boot/camlp4boot.byte"
index b336f9bb4b110e652e55a6402982bb124a4b979d..fa0a96a1fe2989d5b98ed15b1d3ba8cb0d43eba6 100755 (executable)
@@ -12,7 +12,7 @@
 #                                                                       #
 #########################################################################
 
-# $Id$
+# $Id: distclean.sh 11156 2011-07-27 14:17:02Z doligez $
 
 cd `dirname $0`/..
 set -ex
index bbe42870ab242516b46fdbac09e0332003332778..a91af9c7471eb48acdf220b46e5d35f128d47a04 100755 (executable)
@@ -12,7 +12,7 @@
 #                                                                       #
 #########################################################################
 
-# $Id$
+# $Id: fastworld.sh 11156 2011-07-27 14:17:02Z doligez $
 
 cd `dirname $0`
 set -e
index c0ad62f8ba10a67510c8b8ae6e6207657521282c..df01db420035822956f0b8670040e1711246eb0a 100755 (executable)
@@ -12,7 +12,7 @@
 #                                                                       #
 #########################################################################
 
-# $Id$
+# $Id: install.sh 11156 2011-07-27 14:17:02Z doligez $
 
 set -e
 
index 600878d8a847e8d766e568a8dfed6593087cd070..86532e66ec0d1e607935c86fdb69016b0cb77a67 100755 (executable)
@@ -12,7 +12,7 @@
 #                                                                       #
 #########################################################################
 
-# $Id$
+# $Id: mkmyocamlbuild_config.sh 11156 2011-07-27 14:17:02Z doligez $
 
 cd `dirname $0`/..
 
index 6cfd0749ce0b57b5fd69756bd8880bd7a6d7ee59..46e3e01173f9c9ab8154cd7926333bcea8c21e91 100755 (executable)
@@ -12,7 +12,7 @@
 #                                                                       #
 #########################################################################
 
-# $Id$
+# $Id: mkruntimedef.sh 11156 2011-07-27 14:17:02Z doligez $
 echo 'let builtin_exceptions = [|'; \
 sed -n -e 's|.*/\* \("[A-Za-z_]*"\) \*/$|  \1;|p' byterun/fail.h | \
 sed -e '$s/;$//'; \
index 7a029a6a1255205b270d7a0826c760c1c5085dd0..05f821011a67b03db37965905f25c1bca6e62ff8 100755 (executable)
@@ -12,7 +12,7 @@
 #                                                                       #
 #########################################################################
 
-# $Id$
+# $Id: myocamlbuild.sh 11156 2011-07-27 14:17:02Z doligez $
 
 cd `dirname $0`/..
 set -xe
index f669e8e685a04d14497eb099f4375ce44fa3eca7..a2eb184a86ad38a73a590e6a1ebdfe0de4a403d4 100755 (executable)
@@ -12,7 +12,7 @@
 #                                                                       #
 #########################################################################
 
-# $Id$
+# $Id: ocamlbuild-byte-only.sh 11156 2011-07-27 14:17:02Z doligez $
 
 set -e
 cd `dirname $0`/..
index f092a7892824a42110dc2574da8e799990822d68..fcb384d953972a33c8fc8314e69621cb0cfd2a3a 100755 (executable)
@@ -12,7 +12,7 @@
 #                                                                       #
 #########################################################################
 
-# $Id$
+# $Id: ocamlbuild-native-only.sh 11156 2011-07-27 14:17:02Z doligez $
 
 set -e
 cd `dirname $0`/..
index 9d6660803d8c702b0c2b4bf33ad83b3d104d8031..de620ff9d1d1f628bde1f0508b2804aeb6de7acc 100755 (executable)
@@ -12,7 +12,7 @@
 #                                                                       #
 #########################################################################
 
-# $Id$
+# $Id: ocamlbuildlib-native-only.sh 11156 2011-07-27 14:17:02Z doligez $
 
 set -e
 cd `dirname $0`/..
index a3890d038afe1a01edd3ce67da513480bb1b4a4d..0d1b53ab14ddf9bfdcc982d7a820b2bca94e8b72 100644 (file)
@@ -12,7 +12,7 @@
 #                                                                       #
 #########################################################################
 
-# $Id$
+# $Id: otherlibs-targets.sh 11156 2011-07-27 14:17:02Z doligez $
 
 OTHERLIBS_BYTE=""
 OTHERLIBS_NATIVE=""
index 81c0e116d73cd087aaccb8edeeda57e1b3407a69..a8113c9b1c7d69823b6d3a4c36b498ebf1d77c4d 100755 (executable)
@@ -12,7 +12,7 @@
 #                                                                       #
 #########################################################################
 
-# $Id$
+# $Id: partial-install.sh 12113 2012-02-03 12:03:04Z bmeurer $
 
 ######################################
 ######### Copied from build/install.sh
index d4e5a6a9392400d4f18d463906ecfd23e1684fa8..b4ae57eab2d19797a74cc173cbfcac1c892ae1ed 100644 (file)
@@ -10,7 +10,7 @@
 #                                                                       #
 #########################################################################
 
-# $Id$
+# $Id: targets.sh 11156 2011-07-27 14:17:02Z doligez $
 
 . config/config.sh
 . build/otherlibs-targets.sh
index bf456fc278d183a820d8e489d10cbc879ec3f4b5..cf14cef19ce79fcd1da89822b80915f5abb9d508 100755 (executable)
@@ -12,7 +12,7 @@
 #                                                                       #
 #########################################################################
 
-# $Id$
+# $Id: world.all.sh 11156 2011-07-27 14:17:02Z doligez $
 set -e
 cd `dirname $0`/..
 . build/targets.sh
index a30cda2ffee25f48245bfedd64e7416f4819cd7b..db2ef7d22963e607025e7cd647c2cec8e5b466c7 100755 (executable)
@@ -12,7 +12,7 @@
 #                                                                       #
 #########################################################################
 
-# $Id$
+# $Id: world.byte.sh 11156 2011-07-27 14:17:02Z doligez $
 set -e
 cd `dirname $0`/..
 . build/targets.sh
index 19526805e0ae358bfca443a189575f8c2d27985e..7f1aa75b46d64bc6cc2a6fb49b75da05fc201c19 100755 (executable)
@@ -12,7 +12,7 @@
 #                                                                       #
 #########################################################################
 
-# $Id$
+# $Id: world.native.sh 11156 2011-07-27 14:17:02Z doligez $
 set -e
 cd `dirname $0`/..
 . build/targets.sh
index 105be62d128c633b831aad3eab4958068f932ae8..044d3371cec807faa24b83baa8ac6945d000b360 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: bytegen.ml 12167 2012-02-18 17:21:42Z xleroy $ *)
 
 (*  bytegen.ml : translation of lambda terms to lists of instructions. *)
 
index e0cd5f6179ff7057231fb94251d96e85676a4e2f..bfa7a7a55aef05eccac60399aaf7853488b13a29 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: bytegen.mli 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (* Generation of bytecode from lambda terms *)
 
index 21427c84405ee6d7a0851f4526bcb53a6411c0e2..35c5e8fbfd55faf957e60dc120c0920449481a5d 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: bytelibrarian.ml 12202 2012-03-07 17:50:17Z frisch $ *)
 
 (* Build libraries of .cmo files *)
 
index 24201115932dddd82803c05b31191e85076da463..7f65246df351eaf7ecb636e6a8254da34ed8adef 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: bytelibrarian.mli 12058 2012-01-20 14:23:34Z frisch $ *)
 
 (* Build libraries of .cmo files *)
 
index 4f93f0c2b532f78367aa793db2aa2a60d6c77dde..f40e42539568c0b37207ac3c2c657718ebedd90a 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: bytelink.ml 12357 2012-04-16 15:27:42Z frisch $ *)
 
 (* Link a set of .cmo files and produce a bytecode executable. *)
 
index 1366a1686f93422079927a1bfe910440596f57d2..b33dbdfcd00754beda02006dc2f773f0f05a0c49 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: bytelink.mli 12058 2012-01-20 14:23:34Z frisch $ *)
 
 (* Link .cmo files and produce a bytecode executable. *)
 
index 089c5f6dc0a54803a1ef9215898a8fd54b28b2a3..459dce029355e864cb4416a5034f5827088a3cea 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: bytepackager.ml 12202 2012-03-07 17:50:17Z frisch $ *)
 
 (* "Package" a set of .cmo files into one .cmo file having the
    original compilation units as sub-modules. *)
index 696b12aa096f0886f901b2ec8fcdea68d7eefc1a..01d0a6fedd225e7b2cface98e11af47b24481647 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: bytepackager.mli 12058 2012-01-20 14:23:34Z frisch $ *)
 
 (* "Package" a set of .cmo files into one .cmo file having the
    original compilation units as sub-modules. *)
index 518e2254fbdcb1a1a026f6c9c34105884f74c5e5..73e8964d7b6b081b853656c255425c8a1a88a0f5 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: bytesections.ml 12184 2012-02-23 19:54:44Z doligez $ *)
 
 (* Handling of sections in bytecode executable files *)
 
index c9264ad8998bac50bf03f3a21325740a17b61f4d..0b825d1d8e29e0a734a993dbaba01f87fd51d73e 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: bytesections.mli 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (* Handling of sections in bytecode executable files *)
 
index b0cd05d67c32b0b97935f9648feaca9e91b0b3b7..f234eacafbdd39fe4745fe7fb23181da9651bebf 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: cmo_format.mli 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (* Symbol table information for .cmo and .cma files *)
 
index 6109028fc59e9e0054fab5869548ad84a6ed0336..67f3881972c986cf746c93330237d98dc95280f0 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: dll.ml 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (* Handling of dynamically-linked libraries *)
 
index a4841d3d31a67bfbad1cf4216cbe5df8628b1c05..2b1dec0c399875aead358eff784d08b2f5d3bdbc 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: dll.mli 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (* Handling of dynamically-linked libraries *)
 
index f9a33db731eaa126880fe295ba68fbb82fd1594d..3be75e3444a4a647646422481cf7232db0de875f 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: emitcode.ml 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (* Generation of bytecode + relocation information *)
 
index 55f3dff11d08b91e6e8ca71753dfc3c9ede0c8d8..fdcca2611e59fc2766c326e9eba73b94ca00e713 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: emitcode.mli 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (* Generation of bytecode for .cmo files *)
 
index 7757c7d4842986c2423915cd9318117a5522a217..3fe1f4fed19f4fcf7fae206eb7dd7166c2c8212b 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: instruct.ml 12149 2012-02-10 16:15:24Z doligez $ *)
 
 open Lambda
 
index 0fdccd298c3bca5eabc19bb518b95043d37e6505..3d3473697de473dd0aad7380826a9f1a18fdecb5 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: instruct.mli 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (* The type of the instructions of the abstract machine *)
 
index 2e2875d82bdb5815e681592cfed18d680daae2ef..eb586ce9b0d08b2ce0dd25aa91ac9bd2074bddad 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: lambda.ml 12070 2012-01-23 14:49:39Z lefessan $ *)
 
 open Misc
 open Path
index c228d36d41e55cf01a9dee0669b4fc155bfce8a8..c4623b6693b375d4d5d8871deba726496b66a44d 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: lambda.mli 12070 2012-01-23 14:49:39Z lefessan $ *)
 
 (* The "lambda" intermediate code *)
 
index f0b2237474097518cff4b1a7ef914cd0d07e29a1..3ff157a3507ed8f101292e5535192ab26aa9e9aa 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: matching.ml 12511 2012-05-30 13:29:48Z lefessan $ *)
 
 (* Compilation of pattern matching *)
 
@@ -124,7 +124,7 @@ let filter_matrix matcher pss =
   let rec filter_rec = function
     | (p::ps)::rem ->
         begin match p.pat_desc with
-        | Tpat_alias (p,_) ->
+        | Tpat_alias (p,_,_) ->
             filter_rec ((p::ps)::rem)
         | Tpat_var _ ->
             filter_rec ((omega::ps)::rem)
@@ -162,9 +162,9 @@ let make_default matcher env =
 let ctx_matcher p =
   let p = normalize_pat p in
   match p.pat_desc with
-  | Tpat_construct (cstr,omegas) ->
+  | Tpat_construct (_, _, cstr,omegas,_) ->
       (fun q rem -> match q.pat_desc with
-      | Tpat_construct (cstr',args) when cstr.cstr_tag=cstr'.cstr_tag ->
+      | Tpat_construct (_, _, cstr',args,_) when cstr.cstr_tag=cstr'.cstr_tag ->
           p,args @ rem
       | Tpat_any -> p,omegas @ rem
       | _ -> raise NoMatch)
@@ -197,12 +197,12 @@ let ctx_matcher p =
       (fun q rem -> match q.pat_desc with
       | Tpat_tuple args -> p,args @ rem
       | _          -> p, omegas @ rem)
-  | Tpat_record l -> (* Records are normalized *)
+  | Tpat_record (l,_) -> (* Records are normalized *)
       (fun q rem -> match q.pat_desc with
-      | Tpat_record l' ->
+      | Tpat_record (l',_) ->
           let l' = all_record_args l' in
-          p, List.fold_right (fun (_,p) r -> p::r) l' rem
-      | _ -> p,List.fold_right (fun (_,p) r -> p::r) l rem)
+          p, List.fold_right (fun (_, _, _,p) r -> p::r) l' rem
+      | _ -> p,List.fold_right (fun (_, _, _,p) r -> p::r) l rem)
   | Tpat_lazy omega ->
       (fun q rem -> match q.pat_desc with
       | Tpat_lazy arg -> p, (arg::rem)
@@ -221,7 +221,7 @@ let filter_ctx q ctx =
         begin match p.pat_desc with
         | Tpat_or (p1,p2,_) ->
             filter_rec ({l with right=p1::ps}::{l with right=p2::ps}::rem)
-        | Tpat_alias (p,_) ->
+        | Tpat_alias (p,_,_) ->
             filter_rec ({l with right=p::ps}::rem)
         | Tpat_var _ ->
             filter_rec ({l with right=omega::ps}::rem)
@@ -507,11 +507,11 @@ exception Var of pattern
 let simplify_or p =
   let rec simpl_rec p = match p with
     | {pat_desc = Tpat_any|Tpat_var _} -> raise (Var p)
-    | {pat_desc = Tpat_alias (q,id)} ->
+    | {pat_desc = Tpat_alias (q,id,s)} ->
         begin try
-          {p with pat_desc = Tpat_alias (simpl_rec q,id)}
+          {p with pat_desc = Tpat_alias (simpl_rec q,id,s)}
         with
-        | Var q -> raise (Var {p with pat_desc = Tpat_alias (q,id)})
+        | Var q -> raise (Var {p with pat_desc = Tpat_alias (q,id,s)})
         end
     | {pat_desc = Tpat_or (p1,p2,o)} ->
         let q1 = simpl_rec p1 in
@@ -521,9 +521,9 @@ let simplify_or p =
         with
         | Var q2 -> raise (Var {p with pat_desc = Tpat_or (q1, q2, o)})
         end
-    | {pat_desc = Tpat_record lbls} ->
+    | {pat_desc = Tpat_record (lbls,closed)} ->
         let all_lbls = all_record_args lbls in
-        {p with pat_desc=Tpat_record all_lbls}
+        {p with pat_desc=Tpat_record (all_lbls, closed)}
     | _ -> p in
   try
     simpl_rec p
@@ -537,19 +537,19 @@ let rec simplify_cases args cls = match args with
       | [] -> []
       | ((pat :: patl, action) as cl) :: rem ->
           begin match pat.pat_desc with
-          | Tpat_var id ->
+          | Tpat_var (id, _) ->
               (omega :: patl, bind Alias id arg action) ::
               simplify rem
           | Tpat_any ->
               cl :: simplify rem
-          | Tpat_alias(p, id) ->
+          | Tpat_alias(p, id,_) ->
               simplify ((p :: patl, bind Alias id arg action) :: rem)
-          | Tpat_record [] ->
+          | Tpat_record ([],_) ->
               (omega :: patl, action)::
               simplify rem
-          | Tpat_record lbls ->
+          | Tpat_record (lbls, closed) ->
               let all_lbls = all_record_args lbls in
-              let full_pat = {pat with pat_desc=Tpat_record all_lbls} in
+              let full_pat = {pat with pat_desc=Tpat_record (all_lbls, closed)} in
               (full_pat::patl,action)::
               simplify rem
           | Tpat_or _ ->
@@ -574,7 +574,7 @@ let rec simplify_cases args cls = match args with
 
 let rec what_is_cases cases = match cases with
 | ({pat_desc=Tpat_any} :: _, _) :: rem -> what_is_cases rem
-| (({pat_desc=(Tpat_var _|Tpat_or (_,_,_)|Tpat_alias (_,_))}::_),_)::_
+| (({pat_desc=(Tpat_var _|Tpat_or (_,_,_)|Tpat_alias (_,_,_))}::_),_)::_
   -> assert false (* applies to simplified matchings only *)
 | (p::_,_)::_ -> p
 | [] -> omega
@@ -606,16 +606,16 @@ let default_compat p def =
 
 (* Or-pattern expansion, variables are a complication w.r.t. the article *)
 let rec extract_vars r p = match p.pat_desc with
-| Tpat_var id -> IdentSet.add id r
-| Tpat_alias (p, id) ->
+| Tpat_var (id, _) -> IdentSet.add id r
+| Tpat_alias (p, id,_ ) ->
     extract_vars (IdentSet.add id r) p
 | Tpat_tuple pats ->
     List.fold_left extract_vars r pats
-| Tpat_record lpats ->
+| Tpat_record (lpats,_) ->
     List.fold_left
-      (fun r (_,p) -> extract_vars r p)
+      (fun r (_, _, _, p) -> extract_vars r p)
       r lpats
-| Tpat_construct (_,pats) ->
+| Tpat_construct (_, _, _, pats,_) ->
     List.fold_left extract_vars r pats
 | Tpat_array pats ->
     List.fold_left extract_vars r pats
@@ -643,9 +643,9 @@ let rec explode_or_pat arg patl mk_action rem vars aliases = function
         arg patl mk_action
         (explode_or_pat arg patl mk_action rem vars aliases p2)
         vars aliases p1
-  | {pat_desc = Tpat_alias (p,id)} ->
+  | {pat_desc = Tpat_alias (p,id, _)} ->
       explode_or_pat arg patl mk_action rem vars (id::aliases) p
-  | {pat_desc = Tpat_var x} ->
+  | {pat_desc = Tpat_var (x, _)} ->
       let env = mk_alpha_env arg (x::aliases) vars in
       (omega::patl,mk_action (List.map snd env))::rem
   | p ->
@@ -665,7 +665,7 @@ let group_constant = function
   | _                           -> false
 
 and group_constructor = function
-  | {pat_desc = Tpat_construct (_, _)} -> true
+  | {pat_desc = Tpat_construct (_, _, _, _,_)} -> true
   | _ -> false
 
 and group_variant = function
@@ -695,7 +695,7 @@ and group_lazy = function
 let get_group p = match p.pat_desc with
 | Tpat_any -> group_var
 | Tpat_constant _ -> group_constant
-| Tpat_construct (_, _) -> group_constructor
+| Tpat_construct (_, _, _, _, _) -> group_constructor
 | Tpat_tuple _ -> group_tuple
 | Tpat_record _ -> group_record
 | Tpat_array _ -> group_array
@@ -1129,15 +1129,15 @@ let make_field_args binding_kind arg first_pos last_pos argl =
   in make_args first_pos
 
 let get_key_constr = function
-  | {pat_desc=Tpat_construct (cstr,_)} -> cstr.cstr_tag
+  | {pat_desc=Tpat_construct (_, _, cstr,_,_)} -> cstr.cstr_tag
   | _ -> assert false
 
 let get_args_constr p rem = match p with
-| {pat_desc=Tpat_construct (_,args)} -> args @ rem
+| {pat_desc=Tpat_construct (_, _, _, args, _)} -> args @ rem
 | _ -> assert false
 
 let pat_as_constr = function
-  | {pat_desc=Tpat_construct (cstr,_)} -> cstr
+  | {pat_desc=Tpat_construct (_, _, cstr,_,_)} -> cstr
   | _ -> fatal_error "Matching.pat_as_constr"
 
 
@@ -1151,7 +1151,7 @@ let matcher_constr cstr = match cstr.cstr_arity with
           with
           | NoMatch -> matcher_rec p2 rem
         end
-    | Tpat_construct (cstr1, []) when cstr.cstr_tag = cstr1.cstr_tag ->
+    | Tpat_construct (_, _, cstr1, [],_) when cstr.cstr_tag = cstr1.cstr_tag ->
         rem
     | Tpat_any -> rem
     | _ -> raise NoMatch in
@@ -1172,7 +1172,7 @@ pat_desc = Tpat_or (a1, a2, None)}::
             rem
         | _, _ -> assert false
         end
-    | Tpat_construct (cstr1, [arg]) when cstr.cstr_tag = cstr1.cstr_tag ->
+    | Tpat_construct (_, _, cstr1, [arg],_) when cstr.cstr_tag = cstr1.cstr_tag ->
         arg::rem
     | Tpat_any -> omega::rem
     | _ -> raise NoMatch in
@@ -1180,7 +1180,7 @@ pat_desc = Tpat_or (a1, a2, None)}::
 | _ ->
     fun q rem -> match q.pat_desc with
     | Tpat_or (_,_,_) -> raise OrPat
-    | Tpat_construct (cstr1, args)
+    | Tpat_construct (_, _, cstr1, args,_)
         when cstr.cstr_tag = cstr1.cstr_tag -> args @ rem
     | Tpat_any -> Parmatch.omegas cstr.cstr_arity @ rem
     | _        -> raise NoMatch
@@ -1446,13 +1446,13 @@ let divide_tuple arity p ctx pm =
 
 let record_matching_line num_fields lbl_pat_list =
   let patv = Array.create num_fields omega in
-  List.iter (fun (lbl, pat) -> patv.(lbl.lbl_pos) <- pat) lbl_pat_list;
+  List.iter (fun (_, _, lbl, pat) -> patv.(lbl.lbl_pos) <- pat) lbl_pat_list;
   Array.to_list patv
 
 let get_args_record num_fields p rem = match p with
 | {pat_desc=Tpat_any} ->
     record_matching_line num_fields [] @ rem
-| {pat_desc=Tpat_record lbl_pat_list} ->
+| {pat_desc=Tpat_record (lbl_pat_list,_)} ->
     record_matching_line num_fields lbl_pat_list @ rem
 | _ -> assert false
 
@@ -1846,7 +1846,7 @@ let rec extract_pat seen k p = match p.pat_desc with
 | Tpat_or (p1,p2,_) ->
     let k1,seen1 = extract_pat seen k p1 in
     extract_pat seen1 k1 p2
-| Tpat_alias (p,_) ->
+| Tpat_alias (p,_,_) ->
     extract_pat  seen k p
 | Tpat_var _|Tpat_any ->
     raise All
@@ -2367,8 +2367,8 @@ let rec comp_match_handlers comp_fun partial ctx arg first_match next_matchs = m
 let rec name_pattern default = function
     (pat :: patl, action) :: rem ->
       begin match pat.pat_desc with
-        Tpat_var id -> id
-      | Tpat_alias(p, id) -> id
+        Tpat_var (id, _) -> id
+      | Tpat_alias(p, id, _) -> id
       | _ -> name_pattern default rem
       end
   | _ -> Ident.create default
@@ -2438,7 +2438,7 @@ and do_compile_matching repr partial ctx arg pmh = match pmh with
       compile_no_test
         (divide_tuple (List.length patl) (normalize_pat pat)) ctx_combine
         repr partial ctx pm
-  | Tpat_record ((lbl,_)::_) ->
+  | Tpat_record ((_, _, lbl,_)::_,_) ->
       compile_no_test
         (divide_record lbl.lbl_all (normalize_pat pat))
         ctx_combine repr partial ctx pm
@@ -2448,7 +2448,7 @@ and do_compile_matching repr partial ctx arg pmh = match pmh with
         divide_constant
         (combine_constant arg cst partial)
         ctx pm
-  | Tpat_construct (cstr, _) ->
+  | Tpat_construct (_, _, cstr, _, _) ->
       compile_test
         (compile_match repr partial) partial
         divide_constructor (combine_constructor arg pat cstr partial)
@@ -2591,7 +2591,7 @@ let rec flatten_pat_line size p k = match p.pat_desc with
 | Tpat_any ->  omegas size::k
 | Tpat_tuple args -> args::k
 | Tpat_or (p1,p2,_) ->  flatten_pat_line size p1 (flatten_pat_line size p2 k)
-| Tpat_alias (p,_) -> (* Note: if this 'as' pat is here, then this is a useless
+| Tpat_alias (p,_,_) -> (* Note: if this 'as' pat is here, then this is a useless
                          binding, solves PR #3780 *)
     flatten_pat_line size p k
 | _ -> fatal_error "Matching.flatten_pat_line"
index d8ea791084071714384afe1da1d7cb5738f5bbe6..06faf06a96daad36c6a842a3987041da8b8cf0da 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: matching.mli 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (* Compilation of pattern-matching *)
 
index 732bcc8a1a30ab25431c40d9986d064f9cf6a177..b04adaf34f7a14fe5b7b412b13634f31bb1cdea9 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: meta.ml 11156 2011-07-27 14:17:02Z doligez $ *)
 
 external global_data : unit -> Obj.t array = "caml_get_global_data"
 external realloc_global_data : int -> unit = "caml_realloc_global"
index 93be656ad5e98553fc1167b5a0231f1a4b94fe3b..70425d26e663b59172c04555b98b057fcd680573 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: meta.mli 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (* To control the runtime system and bytecode interpreter *)
 
index f2aa87dc37be33ff2fda4ed950f187c4db3147d8..842ab78445aac8d5f649f254868af195cbc479dc 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: printinstr.ml 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (* Pretty-print lists of instructions *)
 
index 57cea578b5ba473abf6a1d9ba2b62e846271fcae..f15985d02a1a0d4e15822a5c1655510ee844268c 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: printinstr.mli 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (* Pretty-print lists of instructions *)
 
index cb99003b2901481234cd4d691be2df71725905bc..8c5b784ae533dfefddc287911cc797fffa89c04c 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: printlambda.ml 12179 2012-02-21 17:41:02Z xleroy $ *)
 
 open Format
 open Asttypes
index 0cbd59ed60f66663e8771d284b8280cf10e39904..98c7ed0d0838c4a05d0aed231fa0f940a888de4d 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: printlambda.mli 12179 2012-02-21 17:41:02Z xleroy $ *)
 
 open Lambda
 
index 4892000947d310c67d1e20d71f82495ced940342..44116c8344d89fbb405f64370160f64f84a10c25 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: runtimedef.mli 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (* Values and functions known and/or provided by the runtime system *)
 
index 1883f71518695f694a4af33f1f26e92028f7814f..a6e045cde6cc968f11de281bf30fefecf14d4cad 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: simplif.ml 12174 2012-02-20 17:45:10Z xleroy $ *)
 
 (* Elimination of useless Llet(Alias) bindings.
    Also transform let-bound references into variables. *)
index 816c44b847ddd8debcd77db00dc07922e95b9541..a25bfea1253c73629dc9c969e2165d2ef77434c1 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: simplif.mli 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (* Elimination of useless Llet(Alias) bindings.
    Transformation of let-bound references into variables.
index 4e5f1475c90f751fd9231026df928381ae1e38a9..872a4bbf33f8a907bba359ab7eb8f4f1c162ecbe 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: symtable.ml 11306 2011-12-13 17:50:08Z frisch $ *)
 
 (* To assign numbers to globals and primitives *)
 
index d9a2be353144c6065cd7b500c9eb78bc5cb4e216..b4268f4f0e11e3559f84424faed03626707be8ac 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: symtable.mli 11306 2011-12-13 17:50:08Z frisch $ *)
 
 (* Assign locations and numbers to globals and primitives *)
 
index 843ef5a90a6ec5f53f75be1bc6df183e3c4c4e9a..7030513de5b4a72024930446f0a2b65bbcfb9513 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: translclass.ml 12518 2012-05-30 15:55:22Z lefessan $ *)
 
 open Misc
 open Asttypes
@@ -114,7 +114,7 @@ let create_object cl obj init =
 
 let rec build_object_init cl_table obj params inh_init obj_init cl =
   match cl.cl_desc with
-    Tclass_ident path ->
+    Tcl_ident ( path, _, _) ->
       let obj_init = Ident.create "obj_init" in
       let envs, inh_init = inh_init in
       let env =
@@ -123,27 +123,27 @@ let rec build_object_init cl_table obj params inh_init obj_init cl =
       in
       ((envs, (obj_init, path)::inh_init),
        mkappl(Lvar obj_init, env @ [obj]))
-  | Tclass_structure str ->
+  | Tcl_structure str ->
       create_object cl_table obj (fun obj ->
         let (inh_init, obj_init, has_init) =
           List.fold_right
             (fun field (inh_init, obj_init, has_init) ->
-               match field with
-                 Cf_inher (cl, _, _) ->
+               match field.cf_desc with
+                 Tcf_inher (_, cl, _, _, _) ->
                    let (inh_init, obj_init') =
                      build_object_init cl_table (Lvar obj) [] inh_init
                        (fun _ -> lambda_unit) cl
                    in
                    (inh_init, lsequence obj_init' obj_init, true)
-               | Cf_val (_, id, Some exp, _) ->
+               | Tcf_val (_, _, _, id, Tcfk_concrete exp, _) ->
                    (inh_init, lsequence (set_inst_var obj id exp) obj_init,
                     has_init)
-               | Cf_meth _ | Cf_val _ ->
+               | Tcf_meth _ | Tcf_val _ | Tcf_constr _ ->
                    (inh_init, obj_init, has_init)
-               | Cf_init _ ->
+               | Tcf_init _ ->
                    (inh_init, obj_init, true)
             )
-            str.cl_field
+            str.cstr_fields
             (inh_init, obj_init obj, false)
         in
         (inh_init,
@@ -152,7 +152,8 @@ let rec build_object_init cl_table obj params inh_init obj_init cl =
               lsequence (Lifused (id, set_inst_var obj id expr)) rem)
            params obj_init,
          has_init))
-  | Tclass_fun (pat, vals, cl, partial) ->
+  | Tcl_fun (_, pat, vals, cl, partial) ->
+      let vals = List.map (fun (id, _, e) -> id,e) vals in
       let (inh_init, obj_init) =
         build_object_init cl_table obj (vals @ params) inh_init obj_init cl
       in
@@ -167,22 +168,24 @@ let rec build_object_init cl_table obj params inh_init obj_init cl =
          Lfunction (Curried, params, rem) -> build params rem
        | rem                              -> build [] rem
        end)
-  | Tclass_apply (cl, oexprs) ->
+  | Tcl_apply (cl, oexprs) ->
       let (inh_init, obj_init) =
         build_object_init cl_table obj params inh_init obj_init cl
       in
       (inh_init, transl_apply obj_init oexprs Location.none)
-  | Tclass_let (rec_flag, defs, vals, cl) ->
+  | Tcl_let (rec_flag, defs, vals, cl) ->
+      let vals = List.map (fun (id, _, e) -> id,e) vals in
       let (inh_init, obj_init) =
         build_object_init cl_table obj (vals @ params) inh_init obj_init cl
       in
       (inh_init, Translcore.transl_let rec_flag defs obj_init)
-  | Tclass_constraint (cl, vals, pub_meths, concr_meths) ->
+  | Tcl_constraint (cl, _, vals, pub_meths, concr_meths) ->
       build_object_init cl_table obj params inh_init obj_init cl
 
 let rec build_object_init_0 cl_table params cl copy_env subst_env top ids =
   match cl.cl_desc with
-    Tclass_let (rec_flag, defs, vals, cl) ->
+    Tcl_let (rec_flag, defs, vals, cl) ->
+      let vals = List.map (fun (id, _, e) -> id,e) vals in
       build_object_init_0 cl_table (vals@params) cl copy_env subst_env top ids
   | _ ->
       let self = Ident.create "self" in
@@ -231,8 +234,8 @@ let output_methods tbl methods lam =
 
 let rec ignore_cstrs cl =
   match cl.cl_desc with
-    Tclass_constraint (cl, _, _, _) -> ignore_cstrs cl
-  | Tclass_apply (cl, _) -> ignore_cstrs cl
+    Tcl_constraint (cl, _, _, _, _) -> ignore_cstrs cl
+  | Tcl_apply (cl, _) -> ignore_cstrs cl
   | _ -> cl
 
 let rec index a = function
@@ -240,11 +243,11 @@ let rec index a = function
   | b :: l ->
       if b = a then 0 else 1 + index a l
 
-let bind_id_as_val (id, _) = ("", id)
+let bind_id_as_val (id, _, _) = ("", id)
 
 let rec build_class_init cla cstr super inh_init cl_init msubst top cl =
   match cl.cl_desc with
-    Tclass_ident path ->
+    Tcl_ident ( path, _, _) ->
       begin match inh_init with
         (obj_init, path')::inh_init ->
           let lpath = transl_path path in
@@ -256,23 +259,27 @@ let rec build_class_init cla cstr super inh_init cl_init msubst top cl =
       | _ ->
           assert false
       end
-  | Tclass_structure str ->
+  | Tcl_structure str ->
       let cl_init = bind_super cla super cl_init in
       let (inh_init, cl_init, methods, values) =
         List.fold_right
           (fun field (inh_init, cl_init, methods, values) ->
-            match field with
-              Cf_inher (cl, vals, meths) ->
+            match field.cf_desc with
+              Tcf_inher (_, cl, _, vals, meths) ->
                 let cl_init = output_methods cla methods cl_init in
                 let inh_init, cl_init =
                   build_class_init cla false
-                    (vals, meths_super cla str.cl_meths meths)
+                    (vals, meths_super cla str.cstr_meths meths)
                     inh_init cl_init msubst top cl in
                 (inh_init, cl_init, [], values)
-            | Cf_val (name, id, exp, over) ->
+            | Tcf_val (name, _, _, id, exp, over) ->
                 let values = if over then values else (name, id) :: values in
                 (inh_init, cl_init, methods, values)
-            | Cf_meth (name, exp) ->
+            | Tcf_meth (_, _, _, Tcfk_virtual _, _)
+            | Tcf_constr _
+              ->
+                (inh_init, cl_init, methods, values)
+            | Tcf_meth (name, _, _, Tcfk_concrete exp, over) ->
                 let met_code = msubst true (transl_exp exp) in
                 let met_code =
                   if !Clflags.native_code && List.length met_code = 1 then
@@ -282,34 +289,34 @@ let rec build_class_init cla cstr super inh_init cl_init msubst top cl =
                   else met_code
                 in
                 (inh_init, cl_init,
-                 Lvar (Meths.find name str.cl_meths) :: met_code @ methods,
+                 Lvar (Meths.find name str.cstr_meths) :: met_code @ methods,
                  values)
-            | Cf_init exp ->
+            | Tcf_init exp ->
                 (inh_init,
                  Lsequence(mkappl (oo_prim "add_initializer",
                                    Lvar cla :: msubst false (transl_exp exp)),
                            cl_init),
                  methods, values))
-          str.cl_field
+          str.cstr_fields
           (inh_init, cl_init, [], [])
       in
       let cl_init = output_methods cla methods cl_init in
-      (inh_init, bind_methods cla str.cl_meths values cl_init)
-  | Tclass_fun (pat, vals, cl, _) ->
+      (inh_init, bind_methods cla str.cstr_meths values cl_init)
+  | Tcl_fun (_, pat, vals, cl, _) ->
       let (inh_init, cl_init) =
         build_class_init cla cstr super inh_init cl_init msubst top cl
       in
       let vals = List.map bind_id_as_val vals in
       (inh_init, transl_vals cla true StrictOpt vals cl_init)
-  | Tclass_apply (cl, exprs) ->
+  | Tcl_apply (cl, exprs) ->
       build_class_init cla cstr super inh_init cl_init msubst top cl
-  | Tclass_let (rec_flag, defs, vals, cl) ->
+  | Tcl_let (rec_flag, defs, vals, cl) ->
       let (inh_init, cl_init) =
         build_class_init cla cstr super inh_init cl_init msubst top cl
       in
       let vals = List.map bind_id_as_val vals in
       (inh_init, transl_vals cla true StrictOpt vals cl_init)
-  | Tclass_constraint (cl, vals, meths, concr_meths) ->
+  | Tcl_constraint (cl, _, vals, meths, concr_meths) ->
       let virt_meths =
         List.filter (fun lab -> not (Concr.mem lab concr_meths)) meths in
       let concr_meths = Concr.elements concr_meths in
@@ -320,7 +327,7 @@ let rec build_class_init cla cstr super inh_init cl_init msubst top cl =
          transl_meth_list concr_meths] in
       let cl = ignore_cstrs cl in
       begin match cl.cl_desc, inh_init with
-        Tclass_ident path, (obj_init, path')::inh_init ->
+        Tcl_ident (path, _, _), (obj_init, path')::inh_init ->
           assert (Path.same path path');
           let lpath = transl_path path in
           let inh = Ident.create "inh"
@@ -357,7 +364,7 @@ let rec build_class_init cla cstr super inh_init cl_init msubst top cl =
 
 let rec build_class_lets cl =
   match cl.cl_desc with
-    Tclass_let (rec_flag, defs, vals, cl) ->
+    Tcl_let (rec_flag, defs, vals, cl) ->
       let env, wrap = build_class_lets cl in
       (env, fun x -> Translcore.transl_let rec_flag defs (wrap x))
   | _ ->
@@ -365,13 +372,13 @@ let rec build_class_lets cl =
 
 let rec get_class_meths cl =
   match cl.cl_desc with
-    Tclass_structure cl ->
-      Meths.fold (fun _ -> IdentSet.add) cl.cl_meths IdentSet.empty
-  | Tclass_ident _ -> IdentSet.empty
-  | Tclass_fun (_, _, cl, _)
-  | Tclass_let (_, _, _, cl)
-  | Tclass_apply (cl, _)
-  | Tclass_constraint (cl, _, _, _) -> get_class_meths cl
+    Tcl_structure cl ->
+      Meths.fold (fun _ -> IdentSet.add) cl.cstr_meths IdentSet.empty
+  | Tcl_ident _ -> IdentSet.empty
+  | Tcl_fun (_, _, _, cl, _)
+  | Tcl_let (_, _, _, cl)
+  | Tcl_apply (cl, _)
+  | Tcl_constraint (cl, _, _, _, _) -> get_class_meths cl
 
 (*
    XXX Il devrait etre peu couteux d'ecrire des classes :
@@ -379,13 +386,13 @@ let rec get_class_meths cl =
 *)
 let rec transl_class_rebind obj_init cl vf =
   match cl.cl_desc with
-    Tclass_ident path ->
+    Tcl_ident (path, _, _) ->
       if vf = Concrete then begin
         try if (Env.find_class path cl.cl_env).cty_new = None then raise Exit
         with Not_found -> raise Exit
       end;
       (path, obj_init)
-  | Tclass_fun (pat, _, cl, partial) ->
+  | Tcl_fun (_, pat, _, cl, partial) ->
       let path, obj_init = transl_class_rebind obj_init cl vf in
       let build params rem =
         let param = name_pattern "param" [pat, ()] in
@@ -397,18 +404,18 @@ let rec transl_class_rebind obj_init cl vf =
        match obj_init with
          Lfunction (Curried, params, rem) -> build params rem
        | rem                              -> build [] rem)
-  | Tclass_apply (cl, oexprs) ->
+  | Tcl_apply (cl, oexprs) ->
       let path, obj_init = transl_class_rebind obj_init cl vf in
       (path, transl_apply obj_init oexprs Location.none)
-  | Tclass_let (rec_flag, defs, vals, cl) ->
+  | Tcl_let (rec_flag, defs, vals, cl) ->
       let path, obj_init = transl_class_rebind obj_init cl vf in
       (path, Translcore.transl_let rec_flag defs obj_init)
-  | Tclass_structure _ -> raise Exit
-  | Tclass_constraint (cl', _, _, _) ->
+  | Tcl_structure _ -> raise Exit
+  | Tcl_constraint (cl', _, _, _, _) ->
       let path, obj_init = transl_class_rebind obj_init cl' vf in
       let rec check_constraint = function
-          Tcty_constr(path', _, _) when Path.same path path' -> ()
-        | Tcty_fun (_, _, cty) -> check_constraint cty
+          Cty_constr(path', _, _) when Path.same path path' -> ()
+        | Cty_fun (_, _, cty) -> check_constraint cty
         | _ -> raise Exit
       in
       check_constraint cl.cl_type;
@@ -416,7 +423,7 @@ let rec transl_class_rebind obj_init cl vf =
 
 let rec transl_class_rebind_0 self obj_init cl vf =
   match cl.cl_desc with
-    Tclass_let (rec_flag, defs, vals, cl) ->
+    Tcl_let (rec_flag, defs, vals, cl) ->
       let path, obj_init = transl_class_rebind_0 self obj_init cl vf in
       (path, Translcore.transl_let rec_flag defs obj_init)
   | _ ->
@@ -579,7 +586,7 @@ let prerr_ids msg ids =
   let names = List.map Ident.unique_toplevel_name ids in
   prerr_endline (String.concat " " (msg :: names))
 
-let transl_class ids cl_id arity pub_meths cl vflag =
+let transl_class ids cl_id pub_meths cl vflag =
   (* First check if it is not only a rebind *)
   let rebind = transl_class_rebind ids cl vflag in
   if rebind <> lambda_unit then rebind else
@@ -789,12 +796,20 @@ let transl_class ids cl_id arity pub_meths cl vflag =
        )))))
 
 (* Wrapper for class compilation *)
+(*
+    let cl_id = ci.ci_id_class in
+(* TODO: cl_id is used somewhere else as typesharp ? *)
+  let _arity = List.length (fst ci.ci_params) in
+  let pub_meths = m in
+  let cl = ci.ci_expr in
+  let vflag = vf in
+*)
 
-let transl_class ids cl_id arity pub_meths cl vf =
-  oo_wrap cl.cl_env false (transl_class ids cl_id arity pub_meths cl) vf
+let transl_class ids id pub_meths cl vf =
+  oo_wrap cl.cl_env false (transl_class ids id pub_meths cl) vf
 
 let () =
-  transl_object := (fun id meths cl -> transl_class [] id meths cl Concrete)
+  transl_object := (fun id meths cl -> transl_class [] id meths cl Concrete)
 
 (* Error report *)
 
index 7a5d6d1437ff29934c7becc5a06c5b19b90721e2..c856e85b81e7ca38ef1fd18f283373037a44a6d4 100644 (file)
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: translclass.mli 12511 2012-05-30 13:29:48Z lefessan $ *)
 
 open Typedtree
 open Lambda
 
 val transl_class :
   Ident.t list -> Ident.t ->
-  int -> string list -> class_expr -> Asttypes.virtual_flag -> lambda;;
+  string list -> class_expr -> Asttypes.virtual_flag -> lambda;;
 
 type error = Illegal_class_expr | Tags of string * string
 
index 77468a58f863e4338ba6ea4486ed94ccdf69428c..a6f531e071b39261ceeaf34ea49f5eb08fe0a1e2 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: translcore.ml 12511 2012-05-30 13:29:48Z lefessan $ *)
 
 (* Translation from typed abstract syntax to lambda terms,
    for the core language *)
@@ -294,10 +294,10 @@ let transl_prim loc prim args =
          simplify_constant_constructor) =
       Hashtbl.find comparisons_table prim_name in
     begin match args with
-      [arg1; {exp_desc = Texp_construct({cstr_tag = Cstr_constant _}, _)}]
+      [arg1; {exp_desc = Texp_construct(_, _, {cstr_tag = Cstr_constant _}, _, _)}]
       when simplify_constant_constructor ->
         intcomp
-    | [{exp_desc = Texp_construct({cstr_tag = Cstr_constant _}, _)}; arg2]
+    | [{exp_desc = Texp_construct(_, _, {cstr_tag = Cstr_constant _}, _, _)}; arg2]
       when simplify_constant_constructor ->
         intcomp
     | [arg1; {exp_desc = Texp_variant(_, None)}]
@@ -460,17 +460,17 @@ let rec name_pattern default = function
     [] -> Ident.create default
   | (p, e) :: rem ->
       match p.pat_desc with
-        Tpat_var id -> id
-      | Tpat_alias(p, id) -> id
+        Tpat_var (id, _) -> id
+      | Tpat_alias(p, id, _) -> id
       | _ -> name_pattern default rem
 
 (* Push the default values under the functional abstractions *)
 
 let rec push_defaults loc bindings pat_expr_list partial =
   match pat_expr_list with
-    [pat, ({exp_desc = Texp_function(pl,partial)} as exp)] ->
+    [pat, ({exp_desc = Texp_function(l, pl,partial)} as exp)] ->
       let pl = push_defaults exp.exp_loc bindings pl partial in
-      [pat, {exp with exp_desc = Texp_function(pl, partial)}]
+      [pat, {exp with exp_desc = Texp_function(l, pl, partial)}]
   | [pat, {exp_desc = Texp_let
              (Default, cases, ({exp_desc = Texp_function _} as e2))}] ->
       push_defaults loc (cases :: bindings) [pat, e2] partial
@@ -488,14 +488,14 @@ let rec push_defaults loc bindings pat_expr_list partial =
         { exp with exp_loc = loc; exp_desc =
           Texp_match
             ({exp with exp_type = pat.pat_type; exp_desc =
-              Texp_ident (Path.Pident param,
+              Texp_ident (Path.Pident param, mknoloc (Longident.Lident "param"),
                           {val_type = pat.pat_type; val_kind = Val_reg;
-                           val_loc = Location.none;
+                           Types.val_loc = Location.none;
                           })},
              pat_expr_list, partial) }
       in
       push_defaults loc bindings
-        [{pat with pat_desc = Tpat_var param}, exp] Total
+        [{pat with pat_desc = Tpat_var (param, mknoloc "param")}, exp] Total
   | _ ->
       pat_expr_list
 
@@ -571,7 +571,7 @@ let rec transl_exp e =
 
 and transl_exp0 e =
   match e.exp_desc with
-    Texp_ident(path, {val_kind = Val_prim p}) ->
+    Texp_ident(path, _, {val_kind = Val_prim p}) ->
       let public_send = p.prim_name = "%send" in
       if public_send || p.prim_name = "%sendself" then
         let kind = if public_send then Public else Self in
@@ -584,16 +584,16 @@ and transl_exp0 e =
                   Lsend(Cached, Lvar meth, Lvar obj, [Lvar cache; Lvar pos], e.exp_loc))
       else
         transl_primitive p
-  | Texp_ident(path, {val_kind = Val_anc _}) ->
+  | Texp_ident(path, _, {val_kind = Val_anc _}) ->
       raise(Error(e.exp_loc, Free_super_var))
-  | Texp_ident(path, {val_kind = Val_reg | Val_self _}) ->
+  | Texp_ident(path, _, {val_kind = Val_reg | Val_self _}) ->
       transl_path path
   | Texp_ident _ -> fatal_error "Translcore.transl_exp: bad Texp_ident"
   | Texp_constant cst ->
       Lconst(Const_base cst)
   | Texp_let(rec_flag, pat_expr_list, body) ->
       transl_let rec_flag pat_expr_list (event_before body (transl_exp body))
-  | Texp_function (pat_expr_list, partial) ->
+  | Texp_function (_, pat_expr_list, partial) ->
       let ((kind, params), body) =
         event_function e
           (function repr ->
@@ -601,9 +601,9 @@ and transl_exp0 e =
             transl_function e.exp_loc !Clflags.native_code repr partial pl)
       in
       Lfunction(kind, params, body)
-  | Texp_apply({exp_desc = Texp_ident(path, {val_kind = Val_prim p})}, oargs)
+  | Texp_apply({exp_desc = Texp_ident(path, _, {val_kind = Val_prim p})}, oargs)
     when List.length oargs >= p.prim_arity
-    && List.for_all (fun (arg,_) -> arg <> None) oargs ->
+    && List.for_all (fun (_, arg,_) -> arg <> None) oargs ->
       let args, args' = cut p.prim_arity oargs in
       let wrap f =
         if args' = []
@@ -612,7 +612,7 @@ and transl_exp0 e =
       in
       let wrap0 f =
         if args' = [] then f else wrap f in
-      let args = List.map (function Some x, _ -> x | _ -> assert false) args in
+      let args = List.map (function _, Some x, _ -> x | _ -> assert false) args in
       let argl = transl_list args in
       let public_send = p.prim_name = "%send"
         || not !Clflags.native_code && p.prim_name = "%sendcache"in
@@ -657,7 +657,7 @@ and transl_exp0 e =
       with Not_constant ->
         Lprim(Pmakeblock(0, Immutable), ll)
       end
-  | Texp_construct(cstr, args) ->
+  | Texp_construct(_, _, cstr, args, _) ->
       let ll = transl_list args in
       begin match cstr.cstr_tag with
         Cstr_constant n ->
@@ -684,17 +684,17 @@ and transl_exp0 e =
             Lprim(Pmakeblock(0, Immutable),
                   [Lconst(Const_base(Const_int tag)); lam])
       end
-  | Texp_record ((lbl1, _) :: _ as lbl_expr_list, opt_init_expr) ->
+  | Texp_record ((_, _, lbl1, _) :: _ as lbl_expr_list, opt_init_expr) ->
       transl_record lbl1.lbl_all lbl1.lbl_repres lbl_expr_list opt_init_expr
   | Texp_record ([], _) ->
       fatal_error "Translcore.transl_exp: bad Texp_record"
-  | Texp_field(arg, lbl) ->
+  | Texp_field(arg, _, _, lbl) ->
       let access =
         match lbl.lbl_repres with
           Record_regular -> Pfield lbl.lbl_pos
         | Record_float -> Pfloatfield lbl.lbl_pos in
       Lprim(access, [transl_exp arg])
-  | Texp_setfield(arg, lbl, newval) ->
+  | Texp_setfield(arg, _, _, lbl, newval) ->
       let access =
         match lbl.lbl_repres with
           Record_regular -> Psetfield(lbl.lbl_pos, maybe_pointer newval)
@@ -731,14 +731,15 @@ and transl_exp0 e =
       Lsequence(transl_exp expr1, event_before expr2 (transl_exp expr2))
   | Texp_while(cond, body) ->
       Lwhile(transl_exp cond, event_before body (transl_exp body))
-  | Texp_for(param, low, high, dir, body) ->
+  | Texp_for(param, _, low, high, dir, body) ->
       Lfor(param, transl_exp low, transl_exp high, dir,
            event_before body (transl_exp body))
   | Texp_when(cond, body) ->
       event_before cond
         (Lifthenelse(transl_exp cond, event_before body (transl_exp body),
                      staticfail))
-  | Texp_send(expr, met) ->
+  | Texp_send(_, _, Some exp) -> transl_exp exp
+  | Texp_send(expr, met, None) ->
       let obj = transl_exp expr in
       let lam =
         match met with
@@ -749,11 +750,11 @@ and transl_exp0 e =
             Lsend (kind, tag, obj, cache, e.exp_loc)
       in
       event_after e lam
-  | Texp_new (cl, _) ->
+  | Texp_new (cl, _, _) ->
       Lapply(Lprim(Pfield 0, [transl_path cl]), [lambda_unit], Location.none)
-  | Texp_instvar(path_self, path) ->
+  | Texp_instvar(path_self, path, _) ->
       Lprim(Parrayrefu Paddrarray, [transl_path path_self; transl_path path])
-  | Texp_setinstvar(path_self, path, expr) ->
+  | Texp_setinstvar(path_self, path, _, expr) ->
       transl_setinstvar (transl_path path_self) path expr
   | Texp_override(path_self, modifs) ->
       let cpy = Ident.create "copy" in
@@ -761,11 +762,11 @@ and transl_exp0 e =
            Lapply(Translobj.oo_prim "copy", [transl_path path_self],
                   Location.none),
            List.fold_right
-             (fun (path, expr) rem ->
+             (fun (path, _, expr) rem ->
                 Lsequence(transl_setinstvar (Lvar cpy) path expr, rem))
              modifs
              (Lvar cpy))
-  | Texp_letmodule(id, modl, body) ->
+  | Texp_letmodule(id, _, modl, body) ->
       Llet(Strict, id, !transl_module Tcoerce_none None modl, transl_exp body)
   | Texp_pack modl ->
       !transl_module Tcoerce_none None modl
@@ -783,12 +784,12 @@ and transl_exp0 e =
       | Texp_constant
           ( Const_int _ | Const_char _ | Const_string _
           | Const_int32 _ | Const_int64 _ | Const_nativeint _ )
-      | Texp_function(_, _)
-      | Texp_construct ({cstr_arity = 0}, _)
+      | Texp_function(_, _, _)
+      | Texp_construct (_, _, {cstr_arity = 0}, _, _)
         -> transl_exp e
       | Texp_constant(Const_float _) ->
           Lprim(Pmakeblock(Obj.forward_tag, Immutable), [transl_exp e])
-      | Texp_ident(_, _) -> (* according to the type *)
+      | Texp_ident(_, _, _) -> (* according to the type *)
           begin match e.exp_type.desc with
           (* the following may represent a float/forward/lazy: need a
              forward_tag *)
@@ -824,13 +825,17 @@ and transl_exp0 e =
           let fn = Lfunction (Curried, [Ident.create "param"], transl_exp e) in
           Lprim(Pmakeblock(Config.lazy_tag, Immutable), [fn])
       end
-  | Texp_object (cs, cty, meths) ->
+  | Texp_object (cs, meths) ->
+      let cty = cs.cstr_type in
       let cl = Ident.create "class" in
       !transl_object cl meths
-        { cl_desc = Tclass_structure cs;
+        { cl_desc = Tcl_structure cs;
           cl_loc = e.exp_loc;
-          cl_type = Tcty_signature cty;
+          cl_type = Cty_signature cty;
           cl_env = e.exp_env }
+  | Texp_poly (exp, _ )
+  | Texp_newtype (_, exp)
+    -> transl_exp exp
 
 and transl_list expr_list =
   List.map transl_exp expr_list
@@ -891,11 +896,11 @@ and transl_apply lam sargs loc =
     | [] ->
         lapply lam (List.rev_map fst args)
   in
-  build_apply lam [] (List.map (fun (x,o) -> may_map transl_exp x, o) sargs)
+  build_apply lam [] (List.map (fun (l, x,o) -> may_map transl_exp x, o) sargs)
 
 and transl_function loc untuplify_fn repr partial pat_expr_list =
   match pat_expr_list with
-    [pat, ({exp_desc = Texp_function(pl,partial')} as exp)]
+    [pat, ({exp_desc = Texp_function(_, pl,partial')} as exp)]
     when Parmatch.fluid pat ->
       let param = name_pattern "param" pat_expr_list in
       let ((_, params), body) =
@@ -937,10 +942,9 @@ and transl_let rec_flag pat_expr_list body =
   | Recursive ->
       let idlist =
         List.map
-          (fun (pat, expr) ->
-            match pat.pat_desc with
-              Tpat_var id -> id
-            | Tpat_alias ({pat_desc=Tpat_any}, id) -> id
+          (fun (pat, expr) -> match pat.pat_desc with
+              Tpat_var (id,_) -> id
+            | Tpat_alias ({pat_desc=Tpat_any}, id,_) -> id
             | _ -> raise(Error(pat.pat_loc, Illegal_letrec_pat)))
         pat_expr_list in
       let transl_case (pat, expr) id =
@@ -975,11 +979,11 @@ and transl_record all_labels repres lbl_expr_list opt_init_expr =
         done
     end;
     List.iter
-      (fun (lbl, expr) -> lv.(lbl.lbl_pos) <- transl_exp expr)
+      (fun (_, _, lbl, expr) -> lv.(lbl.lbl_pos) <- transl_exp expr)
       lbl_expr_list;
     let ll = Array.to_list lv in
     let mut =
-      if List.exists (fun (lbl, expr) -> lbl.lbl_mut = Mutable) lbl_expr_list
+      if List.exists (fun (_, _, lbl, expr) -> lbl.lbl_mut = Mutable) lbl_expr_list
       then Mutable
       else Immutable in
     let lam =
@@ -1004,7 +1008,7 @@ and transl_record all_labels repres lbl_expr_list opt_init_expr =
     (* If you change anything here, you will likely have to change
        [check_recursive_recordwith] in this file. *)
     let copy_id = Ident.create "newrecord" in
-    let rec update_field (lbl, expr) cont =
+    let rec update_field (_, _, lbl, expr) cont =
       let upd =
         match lbl.lbl_repres with
           Record_regular -> Psetfield(lbl.lbl_pos, maybe_pointer expr)
index 5cb22775bfb2a644e1fe0f9c6813ba4736de0854..5914b4dd9a73ec86b7727482a2f192441e30720e 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: translcore.mli 12511 2012-05-30 13:29:48Z lefessan $ *)
 
 (* Translation from typed abstract syntax to lambda terms,
    for the core language *)
@@ -23,7 +23,7 @@ open Lambda
 val name_pattern: string -> (pattern * 'a) list -> Ident.t
 
 val transl_exp: expression -> lambda
-val transl_apply: lambda -> (expression option * optional) list
+val transl_apply: lambda -> (label * expression option * optional) list
                   -> Location.t -> lambda
 val transl_let:
       rec_flag -> (pattern * expression) list -> lambda -> lambda
index 38eab85431e2f3a971c176e673d50554c32a6de5..a39c117895d684b9148768643ab07d8a4a81ff33 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: translmod.ml 12511 2012-05-30 13:29:48Z lefessan $ *)
 
 (* Translation from typed abstract syntax to lambda terms,
    for the module language *)
@@ -118,16 +118,16 @@ let undefined_location loc =
 let init_shape modl =
   let rec init_shape_mod env mty =
     match Mtype.scrape env mty with
-      Tmty_ident _ ->
+      Mty_ident _ ->
         raise Not_found
-    | Tmty_signature sg ->
+    | Mty_signature sg ->
         Const_block(0, [Const_block(0, init_shape_struct env sg)])
-    | Tmty_functor(id, arg, res) ->
+    | Mty_functor(id, arg, res) ->
         raise Not_found (* can we do better? *)
   and init_shape_struct env sg =
     match sg with
       [] -> []
-    | Tsig_value(id, vdesc) :: rem ->
+    | Sig_value(id, vdesc) :: rem ->
         let init_v =
           match Ctype.expand_head env vdesc.val_type with
             {desc = Tarrow(_,_,_,_)} ->
@@ -136,19 +136,19 @@ let init_shape modl =
               Const_pointer 1 (* camlinternalMod.Lazy *)
           | _ -> raise Not_found in
         init_v :: init_shape_struct env rem
-    | Tsig_type(id, tdecl, _) :: rem ->
+    | Sig_type(id, tdecl, _) :: rem ->
         init_shape_struct (Env.add_type id tdecl env) rem
-    | Tsig_exception(id, edecl) :: rem ->
+    | Sig_exception(id, edecl) :: rem ->
         raise Not_found
-    | Tsig_module(id, mty, _) :: rem ->
+    | Sig_module(id, mty, _) :: rem ->
         init_shape_mod env mty ::
         init_shape_struct (Env.add_module id mty env) rem
-    | Tsig_modtype(id, minfo) :: rem ->
+    | Sig_modtype(id, minfo) :: rem ->
         init_shape_struct (Env.add_modtype id minfo env) rem
-    | Tsig_class(id, cdecl, _) :: rem ->
+    | Sig_class(id, cdecl, _) :: rem ->
         Const_pointer 2 (* camlinternalMod.Class *)
         :: init_shape_struct env rem
-    | Tsig_cltype(id, ctyp, _) :: rem ->
+    | Sig_class_type(id, ctyp, _) :: rem ->
         init_shape_struct env rem
   in
   try
@@ -225,20 +225,21 @@ let compile_recmodule compile_rhs bindings cont =
   eval_rec_bindings
     (reorder_rec_bindings
       (List.map
-        (fun (id, modl) ->
+        (fun ( id, _, _, modl) ->
                   (id, modl.mod_loc, init_shape modl, compile_rhs id modl))
         bindings))
     cont
 
+
 (* Compile a module expression *)
 
 let rec transl_module cc rootpath mexp =
   match mexp.mod_desc with
-    Tmod_ident path ->
+    Tmod_ident (path,_) ->
       apply_coercion cc (transl_path path)
   | Tmod_structure str ->
-      transl_structure [] cc rootpath str
-  | Tmod_functor(param, mty, body) ->
+      transl_struct [] cc rootpath str
+  | Tmod_functor( param, _, mty, body) ->
       let bodypath = functor_path rootpath param in
       oo_wrap mexp.mod_env true
         (function
@@ -258,11 +259,14 @@ let rec transl_module cc rootpath mexp =
         (apply_coercion cc)
         (Lapply(transl_module Tcoerce_none None funct,
                 [transl_module ccarg None arg], mexp.mod_loc))
-  | Tmod_constraint(arg, mty, ccarg) ->
+  | Tmod_constraint(arg, mty, _, ccarg) ->
       transl_module (compose_coercions cc ccarg) rootpath arg
   | Tmod_unpack(arg, _) ->
       apply_coercion cc (Translcore.transl_exp arg)
 
+and transl_struct fields cc rootpath str =
+  transl_structure fields cc rootpath str.str_items
+
 and transl_structure fields cc rootpath = function
     [] ->
       begin match cc with
@@ -281,48 +285,52 @@ and transl_structure fields cc rootpath = function
       | _ ->
           fatal_error "Translmod.transl_structure"
       end
-  | Tstr_eval expr :: rem ->
+  | item :: rem ->
+      match item.str_desc with
+      | Tstr_eval expr ->
       Lsequence(transl_exp expr, transl_structure fields cc rootpath rem)
-  | Tstr_value(rec_flag, pat_expr_list) :: rem ->
+  | Tstr_value(rec_flag, pat_expr_list) ->
       let ext_fields = rev_let_bound_idents pat_expr_list @ fields in
       transl_let rec_flag pat_expr_list
                  (transl_structure ext_fields cc rootpath rem)
-  | Tstr_primitive(id, descr) :: rem ->
-      record_primitive descr;
+  | Tstr_primitive(id, _, descr) ->
+      record_primitive descr.val_val;
       transl_structure fields cc rootpath rem
-  | Tstr_type(decls) :: rem ->
+  | Tstr_type(decls) ->
       transl_structure fields cc rootpath rem
-  | Tstr_exception(id, decl) :: rem ->
+  | Tstr_exception( id, _, decl) ->
       Llet(Strict, id, transl_exception id (field_path rootpath id) decl,
            transl_structure (id :: fields) cc rootpath rem)
-  | Tstr_exn_rebind(id, path) :: rem ->
+  | Tstr_exn_rebind( id, _, path, _) ->
       Llet(Strict, id, transl_path path,
            transl_structure (id :: fields) cc rootpath rem)
-  | Tstr_module(id, modl) :: rem ->
+  | Tstr_module( id, _, modl) ->
       Llet(Strict, id,
            transl_module Tcoerce_none (field_path rootpath id) modl,
            transl_structure (id :: fields) cc rootpath rem)
-  | Tstr_recmodule bindings :: rem ->
-      let ext_fields = List.rev_append (List.map fst bindings) fields in
+  | Tstr_recmodule bindings ->
+      let ext_fields = List.rev_append (List.map (fun (id, _,_,_) -> id) bindings) fields in
       compile_recmodule
         (fun id modl ->
           transl_module Tcoerce_none (field_path rootpath id) modl)
         bindings
         (transl_structure ext_fields cc rootpath rem)
-  | Tstr_modtype(id, decl) :: rem ->
+  | Tstr_modtype(id, _, decl) ->
       transl_structure fields cc rootpath rem
-  | Tstr_open path :: rem ->
+  | Tstr_open (path, _) ->
       transl_structure fields cc rootpath rem
-  | Tstr_class cl_list :: rem ->
-      let ids = List.map (fun (i, _, _, _, _) -> i) cl_list in
+  | Tstr_class cl_list ->
+      let ids = List.map (fun (ci,_,_) -> ci.ci_id_class) cl_list in
       Lletrec(List.map
-                (fun (id, arity, meths, cl, vf) ->
-                  (id, transl_class ids id arity meths cl vf))
+              (fun (ci, meths, vf) ->
+                let id = ci.ci_id_class in
+                let cl = ci.ci_expr in
+                  (id, transl_class ids id meths cl vf ))
                 cl_list,
               transl_structure (List.rev ids @ fields) cc rootpath rem)
-  | Tstr_cltype cl_list :: rem ->
+  | Tstr_class_type cl_list ->
       transl_structure fields cc rootpath rem
-  | Tstr_include(modl, ids) :: rem ->
+  | Tstr_include(modl, ids) ->
       let mid = Ident.create "include" in
       let rec rebind_idents pos newfields = function
         [] ->
@@ -345,7 +353,7 @@ let transl_implementation module_name (str, cc) =
   let module_id = Ident.create_persistent module_name in
   Lprim(Psetglobal module_id,
         [transl_label_init
-            (transl_structure [] cc (global_path module_id) str)])
+            (transl_struct [] cc (global_path module_id) str)])
 
 (* A variant of transl_structure used to compile toplevel structure definitions
    for the native-code compiler. Store the defined values in the fields
@@ -371,29 +379,31 @@ let transl_store_structure glob map prims str =
   let rec transl_store subst = function
     [] ->
       transl_store_subst := subst;
-      lambda_unit
-  | Tstr_eval expr :: rem ->
+        lambda_unit
+    | item :: rem ->
+        match item.str_desc with
+  | Tstr_eval expr ->
       Lsequence(subst_lambda subst (transl_exp expr),
                 transl_store subst rem)
-  | Tstr_value(rec_flag, pat_expr_list) :: rem ->
+  | Tstr_value(rec_flag, pat_expr_list) ->
       let ids = let_bound_idents pat_expr_list in
       let lam = transl_let rec_flag pat_expr_list (store_idents ids) in
       Lsequence(subst_lambda subst lam,
                 transl_store (add_idents false ids subst) rem)
-  | Tstr_primitive(id, descr) :: rem ->
-      record_primitive descr;
+  | Tstr_primitive(id, _, descr) ->
+      record_primitive descr.val_val;
       transl_store subst rem
-  | Tstr_type(decls) :: rem ->
+  | Tstr_type(decls) ->
       transl_store subst rem
-  | Tstr_exception(id, decl) :: rem ->
+  | Tstr_exception( id, _, decl) ->
       let lam = transl_exception id (field_path (global_path glob) id) decl in
       Lsequence(Llet(Strict, id, lam, store_ident id),
                 transl_store (add_ident false id subst) rem)
-  | Tstr_exn_rebind(id, path) :: rem ->
+  | Tstr_exn_rebind( id, _, path, _) ->
       let lam = subst_lambda subst (transl_path path) in
       Lsequence(Llet(Strict, id, lam, store_ident id),
                 transl_store (add_ident false id subst) rem)
-  | Tstr_module(id, modl) :: rem ->
+  | Tstr_module( id, _, modl) ->
       let lam =
         transl_module Tcoerce_none (field_path (global_path glob) id) modl in
       (* Careful: the module value stored in the global may be different
@@ -404,8 +414,8 @@ let transl_store_structure glob map prims str =
          (add_ident true adds id -> Pgetglobal... to subst). *)
       Llet(Strict, id, subst_lambda subst lam,
         Lsequence(store_ident id, transl_store(add_ident true id subst) rem))
-  | Tstr_recmodule bindings :: rem ->
-      let ids = List.map fst bindings in
+  | Tstr_recmodule bindings ->
+      let ids = List.map fst4 bindings in
       compile_recmodule
         (fun id modl ->
           subst_lambda subst
@@ -414,23 +424,25 @@ let transl_store_structure glob map prims str =
         bindings
         (Lsequence(store_idents ids,
                    transl_store (add_idents true ids subst) rem))
-  | Tstr_modtype(id, decl) :: rem ->
+  | Tstr_modtype(id, _, decl) ->
       transl_store subst rem
-  | Tstr_open path :: rem ->
+  | Tstr_open (path, _) ->
       transl_store subst rem
-  | Tstr_class cl_list :: rem ->
-      let ids = List.map (fun (i, _, _, _, _) -> i) cl_list in
+  | Tstr_class cl_list ->
+      let ids = List.map (fun (ci, _, _) -> ci.ci_id_class) cl_list in
       let lam =
         Lletrec(List.map
-                  (fun (id, arity, meths, cl, vf) ->
-                     (id, transl_class ids id arity meths cl vf))
+              (fun (ci, meths, vf) ->
+                let id = ci.ci_id_class in
+                let cl = ci.ci_expr in
+                     (id, transl_class ids id meths cl vf))
                   cl_list,
                 store_idents ids) in
       Lsequence(subst_lambda subst lam,
                 transl_store (add_idents false ids subst) rem)
-  | Tstr_cltype cl_list :: rem ->
+  | Tstr_class_type cl_list ->
       transl_store subst rem
-  | Tstr_include(modl, ids) :: rem ->
+  | Tstr_include(modl, ids) ->
       let mid = Ident.create "include" in
       let rec store_idents pos = function
         [] -> transl_store (add_idents true ids subst) rem
@@ -476,23 +488,26 @@ let transl_store_structure glob map prims str =
 (* Build the list of value identifiers defined by a toplevel structure
    (excluding primitive declarations). *)
 
-let rec defined_idents = function
+let rec defined_idents items =
+  match items with
     [] -> []
-  | Tstr_eval expr :: rem -> defined_idents rem
-  | Tstr_value(rec_flag, pat_expr_list) :: rem ->
+  | item :: rem ->
+      match item.str_desc with
+  | Tstr_eval expr -> defined_idents rem
+  | Tstr_value(rec_flag, pat_expr_list) ->
       let_bound_idents pat_expr_list @ defined_idents rem
-  | Tstr_primitive(id, descr) :: rem -> defined_idents rem
-  | Tstr_type decls :: rem -> defined_idents rem
-  | Tstr_exception(id, decl) :: rem -> id :: defined_idents rem
-  | Tstr_exn_rebind(id, path) :: rem -> id :: defined_idents rem
-  | Tstr_module(id, modl) :: rem -> id :: defined_idents rem
-  | Tstr_recmodule decls :: rem -> List.map fst decls @ defined_idents rem
-  | Tstr_modtype(id, decl) :: rem -> defined_idents rem
-  | Tstr_open path :: rem -> defined_idents rem
-  | Tstr_class cl_list :: rem ->
-      List.map (fun (i, _, _, _, _) -> i) cl_list @ defined_idents rem
-  | Tstr_cltype cl_list :: rem -> defined_idents rem
-  | Tstr_include(modl, ids) :: rem -> ids @ defined_idents rem
+  | Tstr_primitive(id, _, descr) -> defined_idents rem
+  | Tstr_type decls -> defined_idents rem
+  | Tstr_exception(id, _, decl) -> id :: defined_idents rem
+  | Tstr_exn_rebind(id, _, path, _) -> id :: defined_idents rem
+  | Tstr_module(id, _, modl) -> id :: defined_idents rem
+  | Tstr_recmodule decls -> List.map fst4 decls @ defined_idents rem
+  | Tstr_modtype(id, _, decl) -> defined_idents rem
+  | Tstr_open (path, _) -> defined_idents rem
+  | Tstr_class cl_list ->
+      List.map (fun (ci, _, _) -> ci.ci_id_class) cl_list @ defined_idents rem
+  | Tstr_class_type cl_list -> defined_idents rem
+  | Tstr_include(modl, ids) -> ids @ defined_idents rem
 
 (* Transform a coercion and the list of value identifiers defined by
    a toplevel structure into a table [id -> (pos, coercion)],
@@ -533,13 +548,13 @@ let build_ident_map restr idlist =
 (* Compile an implementation using transl_store_structure
    (for the native-code compiler). *)
 
-let transl_store_gen module_name (str, restr) topl =
+let transl_store_gen module_name ({ str_items = str }, restr) topl =
   reset_labels ();
   primitive_declarations := [];
   let module_id = Ident.create_persistent module_name in
   let (map, prims, size) = build_ident_map restr (defined_idents str) in
   let f = function
-    | [ Tstr_eval expr ] when topl ->
+    | [ { str_desc = Tstr_eval expr } ] when topl ->
         assert (size = 0);
         subst_lambda !transl_store_subst (transl_exp expr)
     | str -> transl_store_structure module_id map prims str in
@@ -590,50 +605,53 @@ let close_toplevel_term lam =
   IdentSet.fold (fun id l -> Llet(Strict, id, toploop_getvalue id, l))
                 (free_variables lam) lam
 
-let transl_toplevel_item = function
+let transl_toplevel_item item =
+  match item.str_desc with
     Tstr_eval expr ->
       transl_exp expr
   | Tstr_value(rec_flag, pat_expr_list) ->
       let idents = let_bound_idents pat_expr_list in
       transl_let rec_flag pat_expr_list
                  (make_sequence toploop_setvalue_id idents)
-  | Tstr_primitive(id, descr) ->
+  | Tstr_primitive(id, _, descr) ->
       lambda_unit
   | Tstr_type(decls) ->
       lambda_unit
-  | Tstr_exception(id, decl) ->
+  | Tstr_exception(id, _, decl) ->
       toploop_setvalue id (transl_exception id None decl)
-  | Tstr_exn_rebind(id, path) ->
+  | Tstr_exn_rebind(id, _, path, _) ->
       toploop_setvalue id (transl_path path)
-  | Tstr_module(id, modl) ->
+  | Tstr_module(id, _, modl) ->
       (* we need to use the unique name for the module because of issues
          with "open" (PR#1672) *)
       set_toplevel_unique_name id;
       toploop_setvalue id
                         (transl_module Tcoerce_none (Some(Pident id)) modl)
   | Tstr_recmodule bindings ->
-      let idents = List.map fst bindings in
+      let idents = List.map fst4 bindings in
       compile_recmodule
         (fun id modl -> transl_module Tcoerce_none (Some(Pident id)) modl)
         bindings
         (make_sequence toploop_setvalue_id idents)
-  | Tstr_modtype(id, decl) ->
+  | Tstr_modtype(id, _, decl) ->
       lambda_unit
-  | Tstr_open path ->
+  | Tstr_open (path, _) ->
       lambda_unit
   | Tstr_class cl_list ->
       (* we need to use unique names for the classes because there might
          be a value named identically *)
-      let ids = List.map (fun (i, _, _, _, _) -> i) cl_list in
+      let ids = List.map (fun (ci, _, _) -> ci.ci_id_class) cl_list in
       List.iter set_toplevel_unique_name ids;
       Lletrec(List.map
-                (fun (id, arity, meths, cl, vf) ->
-                   (id, transl_class ids id arity meths cl vf))
+          (fun (ci, meths, vf) ->
+            let id = ci.ci_id_class in
+            let cl = ci.ci_expr in
+                   (id, transl_class ids id meths cl vf))
                 cl_list,
               make_sequence
-                (fun (id, _, _, _, _) -> toploop_setvalue_id id)
+                (fun (ci, _, _) -> toploop_setvalue_id ci.ci_id_class)
                 cl_list)
-  | Tstr_cltype cl_list ->
+  | Tstr_class_type cl_list ->
       lambda_unit
   | Tstr_include(modl, ids) ->
       let mid = Ident.create "include" in
@@ -650,7 +668,7 @@ let transl_toplevel_item_and_close itm =
 
 let transl_toplevel_definition str =
   reset_labels ();
-  make_sequence transl_toplevel_item_and_close str
+  make_sequence transl_toplevel_item_and_close str.str_items
 
 (* Compile the initialization code for a packed library *)
 
index 5b6d0a0065f20e4233ba7e860ea3d613710a84c5..aa98114bfde2e0daf89852ed5deba65ec9a2fa79 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: translmod.mli 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (* Translation from typed abstract syntax to lambda terms,
    for the module language *)
index f72e34b0ae7ba58617d9a8155c1fe533d3ebee2a..7bd61aa6bcb1a9ae5625125cf9c77ee938763661 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: translobj.ml 11156 2011-07-27 14:17:02Z doligez $ *)
 
 open Misc
 open Primitive
index be1e6a90fc5f56431009316ccf7f7477427f3dae..7cd986f373038f9da916049a8549fb2f6fca45e5 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: translobj.mli 11156 2011-07-27 14:17:02Z doligez $ *)
 
 open Lambda
 
index e80148f0961d76f6368fc13dd718143635f67f4d..21498bd9b9a7577f5565ec0a4ca4589b980437d5 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: typeopt.ml 11210 2011-09-22 09:05:42Z garrigue $ *)
 
 (* Auxiliaries for type-based optimizations, e.g. array kinds *)
 
index 163ca44da0f0779e3b086c55cbb6376f712c03e1..f6148d820f1874ab24e4c14466503d64139508db 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: typeopt.mli 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (* Auxiliaries for type-based optimizations, e.g. array kinds *)
 
index 68adc27b321227320b4ad5a402091e3dcd17de7f..8a06d2df9ff056e04c30aa45be54c4d577da51f5 100644 (file)
 alloc.o: alloc.c alloc.h compatibility.h misc.h config.h ../config/m.h \
 ../config/s.h mlvalues.h custom.h major_gc.h freelist.h memory.h gc.h \
 minor_gc.h stacks.h
+ ../config/s.h mlvalues.h custom.h major_gc.h freelist.h memory.h gc.h \
+ minor_gc.h stacks.h
 array.o: array.c alloc.h compatibility.h misc.h config.h ../config/m.h \
 ../config/s.h mlvalues.h fail.h memory.h gc.h major_gc.h freelist.h \
 minor_gc.h
+ ../config/s.h mlvalues.h fail.h memory.h gc.h major_gc.h freelist.h \
+ minor_gc.h
 backtrace.o: backtrace.c config.h ../config/m.h ../config/s.h \
 compatibility.h mlvalues.h misc.h alloc.h io.h instruct.h intext.h \
 exec.h fix_code.h memory.h gc.h major_gc.h freelist.h minor_gc.h \
 startup.h stacks.h sys.h backtrace.h
+ compatibility.h mlvalues.h misc.h alloc.h io.h instruct.h intext.h \
+ exec.h fix_code.h memory.h gc.h major_gc.h freelist.h minor_gc.h \
+ startup.h stacks.h sys.h backtrace.h
 callback.o: callback.c callback.h compatibility.h mlvalues.h config.h \
 ../config/m.h ../config/s.h misc.h fail.h memory.h gc.h major_gc.h \
 freelist.h minor_gc.h interp.h instruct.h fix_code.h stacks.h
+ ../config/m.h ../config/s.h misc.h fail.h memory.h gc.h major_gc.h \
+ freelist.h minor_gc.h interp.h instruct.h fix_code.h stacks.h
 compact.o: compact.c config.h ../config/m.h ../config/s.h compatibility.h \
 finalise.h roots.h misc.h memory.h gc.h mlvalues.h major_gc.h \
 freelist.h minor_gc.h gc_ctrl.h weak.h
finalise.h roots.h misc.h memory.h gc.h mlvalues.h major_gc.h freelist.h \
+ minor_gc.h gc_ctrl.h weak.h
 compare.o: compare.c custom.h compatibility.h mlvalues.h config.h \
 ../config/m.h ../config/s.h misc.h fail.h memory.h gc.h major_gc.h \
 freelist.h minor_gc.h
+ ../config/m.h ../config/s.h misc.h fail.h memory.h gc.h major_gc.h \
+ freelist.h minor_gc.h
 custom.o: custom.c alloc.h compatibility.h misc.h config.h ../config/m.h \
 ../config/s.h mlvalues.h custom.h fail.h memory.h gc.h major_gc.h \
 freelist.h minor_gc.h
+ ../config/s.h mlvalues.h custom.h fail.h memory.h gc.h major_gc.h \
+ freelist.h minor_gc.h
 debugger.o: debugger.c alloc.h compatibility.h misc.h config.h \
 ../config/m.h ../config/s.h mlvalues.h debugger.h fail.h fix_code.h \
 instruct.h intext.h io.h stacks.h memory.h gc.h major_gc.h freelist.h \
 minor_gc.h sys.h
+ ../config/m.h ../config/s.h mlvalues.h debugger.h fail.h fix_code.h \
+ instruct.h intext.h io.h stacks.h memory.h gc.h major_gc.h freelist.h \
+ minor_gc.h sys.h
 dynlink.o: dynlink.c config.h ../config/m.h ../config/s.h compatibility.h \
 alloc.h misc.h mlvalues.h dynlink.h fail.h memory.h gc.h major_gc.h \
 freelist.h minor_gc.h osdeps.h prims.h
+ alloc.h misc.h mlvalues.h dynlink.h fail.h memory.h gc.h major_gc.h \
+ freelist.h minor_gc.h osdeps.h prims.h
 extern.o: extern.c alloc.h compatibility.h misc.h config.h ../config/m.h \
 ../config/s.h mlvalues.h custom.h fail.h gc.h intext.h io.h md5.h \
 memory.h major_gc.h freelist.h minor_gc.h reverse.h
+ ../config/s.h mlvalues.h custom.h fail.h gc.h intext.h io.h md5.h \
+ memory.h major_gc.h freelist.h minor_gc.h reverse.h
 fail.o: fail.c alloc.h compatibility.h misc.h config.h ../config/m.h \
 ../config/s.h mlvalues.h fail.h io.h gc.h memory.h major_gc.h \
 freelist.h minor_gc.h printexc.h signals.h stacks.h
../config/s.h mlvalues.h fail.h io.h gc.h memory.h major_gc.h freelist.h \
+ minor_gc.h printexc.h signals.h stacks.h
 finalise.o: finalise.c callback.h compatibility.h mlvalues.h config.h \
 ../config/m.h ../config/s.h misc.h fail.h roots.h memory.h gc.h \
 major_gc.h freelist.h minor_gc.h signals.h
+ ../config/m.h ../config/s.h misc.h fail.h roots.h memory.h gc.h \
+ major_gc.h freelist.h minor_gc.h signals.h
 fix_code.o: fix_code.c config.h ../config/m.h ../config/s.h \
 compatibility.h debugger.h misc.h mlvalues.h fix_code.h instruct.h \
 intext.h io.h md5.h memory.h gc.h major_gc.h freelist.h minor_gc.h \
 reverse.h
+ compatibility.h debugger.h misc.h mlvalues.h fix_code.h instruct.h \
+ intext.h io.h md5.h memory.h gc.h major_gc.h freelist.h minor_gc.h \
+ reverse.h
 floats.o: floats.c alloc.h compatibility.h misc.h config.h ../config/m.h \
 ../config/s.h mlvalues.h fail.h memory.h gc.h major_gc.h freelist.h \
 minor_gc.h reverse.h stacks.h
+ ../config/s.h mlvalues.h fail.h memory.h gc.h major_gc.h freelist.h \
+ minor_gc.h reverse.h stacks.h
 freelist.o: freelist.c config.h ../config/m.h ../config/s.h \
 compatibility.h freelist.h misc.h mlvalues.h gc.h gc_ctrl.h memory.h \
 major_gc.h minor_gc.h
+ compatibility.h freelist.h misc.h mlvalues.h gc.h gc_ctrl.h memory.h \
+ major_gc.h minor_gc.h
 gc_ctrl.o: gc_ctrl.c alloc.h compatibility.h misc.h config.h \
 ../config/m.h ../config/s.h mlvalues.h compact.h custom.h finalise.h \
 roots.h memory.h gc.h major_gc.h freelist.h minor_gc.h gc_ctrl.h \
 stacks.h
+ ../config/m.h ../config/s.h mlvalues.h compact.h custom.h finalise.h \
+ roots.h memory.h gc.h major_gc.h freelist.h minor_gc.h gc_ctrl.h \
+ stacks.h
 globroots.o: globroots.c memory.h compatibility.h config.h ../config/m.h \
 ../config/s.h gc.h mlvalues.h misc.h major_gc.h freelist.h minor_gc.h \
 roots.h globroots.h
+ ../config/s.h gc.h mlvalues.h misc.h major_gc.h freelist.h minor_gc.h \
+ roots.h globroots.h
 hash.o: hash.c mlvalues.h compatibility.h config.h ../config/m.h \
 ../config/s.h misc.h custom.h memory.h gc.h major_gc.h freelist.h \
 minor_gc.h hash.h int64_native.h
+ ../config/s.h misc.h custom.h memory.h gc.h major_gc.h freelist.h \
+ minor_gc.h hash.h int64_native.h
 instrtrace.o: instrtrace.c
 intern.o: intern.c alloc.h compatibility.h misc.h config.h ../config/m.h \
 ../config/s.h mlvalues.h callback.h custom.h fail.h gc.h intext.h io.h \
 md5.h memory.h major_gc.h freelist.h minor_gc.h reverse.h
+ ../config/s.h mlvalues.h callback.h custom.h fail.h gc.h intext.h io.h \
+ md5.h memory.h major_gc.h freelist.h minor_gc.h reverse.h
 interp.o: interp.c alloc.h compatibility.h misc.h config.h ../config/m.h \
 ../config/s.h mlvalues.h backtrace.h callback.h debugger.h fail.h \
 fix_code.h instrtrace.h instruct.h interp.h major_gc.h freelist.h \
 memory.h gc.h minor_gc.h prims.h signals.h stacks.h jumptbl.h
+ ../config/s.h mlvalues.h backtrace.h callback.h debugger.h fail.h \
+ fix_code.h instrtrace.h instruct.h interp.h major_gc.h freelist.h \
+ memory.h gc.h minor_gc.h prims.h signals.h stacks.h jumptbl.h
 ints.o: ints.c alloc.h compatibility.h misc.h config.h ../config/m.h \
 ../config/s.h mlvalues.h custom.h fail.h intext.h io.h memory.h gc.h \
 major_gc.h freelist.h minor_gc.h int64_native.h
+ ../config/s.h mlvalues.h custom.h fail.h intext.h io.h memory.h gc.h \
+ major_gc.h freelist.h minor_gc.h int64_native.h
 io.o: io.c config.h ../config/m.h ../config/s.h compatibility.h alloc.h \
 misc.h mlvalues.h custom.h fail.h io.h memory.h gc.h major_gc.h \
 freelist.h minor_gc.h signals.h sys.h
+ misc.h mlvalues.h custom.h fail.h io.h memory.h gc.h major_gc.h \
+ freelist.h minor_gc.h signals.h sys.h
 lexing.o: lexing.c fail.h compatibility.h misc.h config.h ../config/m.h \
 ../config/s.h mlvalues.h stacks.h memory.h gc.h major_gc.h freelist.h \
 minor_gc.h
+ ../config/s.h mlvalues.h stacks.h memory.h gc.h major_gc.h freelist.h \
+ minor_gc.h
 main.o: main.c misc.h compatibility.h config.h ../config/m.h \
 ../config/s.h mlvalues.h sys.h
+ ../config/s.h mlvalues.h sys.h
 major_gc.o: major_gc.c compact.h config.h ../config/m.h ../config/s.h \
 compatibility.h misc.h custom.h mlvalues.h fail.h finalise.h roots.h \
 memory.h gc.h major_gc.h freelist.h minor_gc.h gc_ctrl.h weak.h
+ compatibility.h misc.h custom.h mlvalues.h fail.h finalise.h roots.h \
+ memory.h gc.h major_gc.h freelist.h minor_gc.h gc_ctrl.h weak.h
 md5.o: md5.c alloc.h compatibility.h misc.h config.h ../config/m.h \
 ../config/s.h mlvalues.h fail.h md5.h io.h memory.h gc.h major_gc.h \
 freelist.h minor_gc.h reverse.h
+ ../config/s.h mlvalues.h fail.h md5.h io.h memory.h gc.h major_gc.h \
+ freelist.h minor_gc.h reverse.h
 memory.o: memory.c fail.h compatibility.h misc.h config.h ../config/m.h \
 ../config/s.h mlvalues.h freelist.h gc.h gc_ctrl.h major_gc.h memory.h \
 minor_gc.h signals.h
+ ../config/s.h mlvalues.h freelist.h gc.h gc_ctrl.h major_gc.h memory.h \
+ minor_gc.h signals.h
 meta.o: meta.c alloc.h compatibility.h misc.h config.h ../config/m.h \
 ../config/s.h mlvalues.h fail.h fix_code.h interp.h intext.h io.h \
 major_gc.h freelist.h memory.h gc.h minor_gc.h prims.h stacks.h
+ ../config/s.h mlvalues.h fail.h fix_code.h interp.h intext.h io.h \
+ major_gc.h freelist.h memory.h gc.h minor_gc.h prims.h stacks.h
 minor_gc.o: minor_gc.c config.h ../config/m.h ../config/s.h \
 compatibility.h fail.h misc.h mlvalues.h finalise.h roots.h memory.h \
 gc.h major_gc.h freelist.h minor_gc.h gc_ctrl.h signals.h weak.h
+ compatibility.h fail.h misc.h mlvalues.h finalise.h roots.h memory.h \
+ gc.h major_gc.h freelist.h minor_gc.h gc_ctrl.h signals.h weak.h
 misc.o: misc.c config.h ../config/m.h ../config/s.h compatibility.h \
 misc.h memory.h gc.h mlvalues.h major_gc.h freelist.h minor_gc.h
+ misc.h memory.h gc.h mlvalues.h major_gc.h freelist.h minor_gc.h
 obj.o: obj.c alloc.h compatibility.h misc.h config.h ../config/m.h \
 ../config/s.h mlvalues.h fail.h gc.h interp.h major_gc.h freelist.h \
 memory.h minor_gc.h prims.h
+ ../config/s.h mlvalues.h fail.h gc.h interp.h major_gc.h freelist.h \
+ memory.h minor_gc.h prims.h
 parsing.o: parsing.c config.h ../config/m.h ../config/s.h compatibility.h \
-  mlvalues.h misc.h memory.h gc.h major_gc.h freelist.h minor_gc.h \
-  alloc.h
+ mlvalues.h misc.h memory.h gc.h major_gc.h freelist.h minor_gc.h alloc.h
 prims.o: prims.c mlvalues.h compatibility.h config.h ../config/m.h \
 ../config/s.h misc.h prims.h
+ ../config/s.h misc.h prims.h
 printexc.o: printexc.c backtrace.h mlvalues.h compatibility.h config.h \
 ../config/m.h ../config/s.h misc.h callback.h debugger.h fail.h \
 printexc.h
+ ../config/m.h ../config/s.h misc.h callback.h debugger.h fail.h \
+ printexc.h
 roots.o: roots.c finalise.h roots.h misc.h compatibility.h config.h \
 ../config/m.h ../config/s.h memory.h gc.h mlvalues.h major_gc.h \
 freelist.h minor_gc.h globroots.h stacks.h
+ ../config/m.h ../config/s.h memory.h gc.h mlvalues.h major_gc.h \
+ freelist.h minor_gc.h globroots.h stacks.h
 signals.o: signals.c alloc.h compatibility.h misc.h config.h \
 ../config/m.h ../config/s.h mlvalues.h callback.h fail.h memory.h gc.h \
 major_gc.h freelist.h minor_gc.h roots.h signals.h signals_machdep.h \
 sys.h
+ ../config/m.h ../config/s.h mlvalues.h callback.h fail.h memory.h gc.h \
+ major_gc.h freelist.h minor_gc.h roots.h signals.h signals_machdep.h \
+ sys.h
 signals_byt.o: signals_byt.c config.h ../config/m.h ../config/s.h \
 compatibility.h memory.h gc.h mlvalues.h misc.h major_gc.h freelist.h \
 minor_gc.h osdeps.h signals.h signals_machdep.h
+ compatibility.h memory.h gc.h mlvalues.h misc.h major_gc.h freelist.h \
+ minor_gc.h osdeps.h signals.h signals_machdep.h
 stacks.o: stacks.c config.h ../config/m.h ../config/s.h compatibility.h \
 fail.h misc.h mlvalues.h stacks.h memory.h gc.h major_gc.h freelist.h \
 minor_gc.h
+ fail.h misc.h mlvalues.h stacks.h memory.h gc.h major_gc.h freelist.h \
+ minor_gc.h
 startup.o: startup.c config.h ../config/m.h ../config/s.h compatibility.h \
 alloc.h misc.h mlvalues.h backtrace.h callback.h custom.h debugger.h \
 dynlink.h exec.h fail.h fix_code.h freelist.h gc_ctrl.h instrtrace.h \
 interp.h intext.h io.h memory.h gc.h major_gc.h minor_gc.h osdeps.h \
 prims.h printexc.h reverse.h signals.h stacks.h sys.h startup.h \
 version.h
+ alloc.h misc.h mlvalues.h backtrace.h callback.h custom.h debugger.h \
+ dynlink.h exec.h fail.h fix_code.h freelist.h gc_ctrl.h instrtrace.h \
+ interp.h intext.h io.h memory.h gc.h major_gc.h minor_gc.h osdeps.h \
+ prims.h printexc.h reverse.h signals.h stacks.h sys.h startup.h \
+ version.h
 str.o: str.c alloc.h compatibility.h misc.h config.h ../config/m.h \
 ../config/s.h mlvalues.h fail.h
+ ../config/s.h mlvalues.h fail.h
 sys.o: sys.c config.h ../config/m.h ../config/s.h compatibility.h alloc.h \
 misc.h mlvalues.h debugger.h fail.h instruct.h osdeps.h signals.h \
 stacks.h memory.h gc.h major_gc.h freelist.h minor_gc.h sys.h
+ misc.h mlvalues.h debugger.h fail.h instruct.h osdeps.h signals.h \
+ stacks.h memory.h gc.h major_gc.h freelist.h minor_gc.h sys.h
 terminfo.o: terminfo.c config.h ../config/m.h ../config/s.h \
 compatibility.h alloc.h misc.h mlvalues.h fail.h io.h
+ compatibility.h alloc.h misc.h mlvalues.h fail.h io.h
 unix.o: unix.c config.h ../config/m.h ../config/s.h compatibility.h \
 memory.h gc.h mlvalues.h misc.h major_gc.h freelist.h minor_gc.h \
 osdeps.h
+ memory.h gc.h mlvalues.h misc.h major_gc.h freelist.h minor_gc.h \
+ osdeps.h
 weak.o: weak.c alloc.h compatibility.h misc.h config.h ../config/m.h \
 ../config/s.h mlvalues.h fail.h major_gc.h freelist.h memory.h gc.h \
 minor_gc.h
+ ../config/s.h mlvalues.h fail.h major_gc.h freelist.h memory.h gc.h \
+ minor_gc.h
 alloc.d.o: alloc.c alloc.h compatibility.h misc.h config.h ../config/m.h \
 ../config/s.h mlvalues.h custom.h major_gc.h freelist.h memory.h gc.h \
 minor_gc.h stacks.h
+ ../config/s.h mlvalues.h custom.h major_gc.h freelist.h memory.h gc.h \
+ minor_gc.h stacks.h
 array.d.o: array.c alloc.h compatibility.h misc.h config.h ../config/m.h \
 ../config/s.h mlvalues.h fail.h memory.h gc.h major_gc.h freelist.h \
 minor_gc.h
+ ../config/s.h mlvalues.h fail.h memory.h gc.h major_gc.h freelist.h \
+ minor_gc.h
 backtrace.d.o: backtrace.c config.h ../config/m.h ../config/s.h \
 compatibility.h mlvalues.h misc.h alloc.h io.h instruct.h intext.h \
 exec.h fix_code.h memory.h gc.h major_gc.h freelist.h minor_gc.h \
 startup.h stacks.h sys.h backtrace.h
+ compatibility.h mlvalues.h misc.h alloc.h io.h instruct.h intext.h \
+ exec.h fix_code.h memory.h gc.h major_gc.h freelist.h minor_gc.h \
+ startup.h stacks.h sys.h backtrace.h
 callback.d.o: callback.c callback.h compatibility.h mlvalues.h config.h \
 ../config/m.h ../config/s.h misc.h fail.h memory.h gc.h major_gc.h \
 freelist.h minor_gc.h interp.h instruct.h fix_code.h stacks.h
+ ../config/m.h ../config/s.h misc.h fail.h memory.h gc.h major_gc.h \
+ freelist.h minor_gc.h interp.h instruct.h fix_code.h stacks.h
 compact.d.o: compact.c config.h ../config/m.h ../config/s.h compatibility.h \
 finalise.h roots.h misc.h memory.h gc.h mlvalues.h major_gc.h \
 freelist.h minor_gc.h gc_ctrl.h weak.h
finalise.h roots.h misc.h memory.h gc.h mlvalues.h major_gc.h freelist.h \
+ minor_gc.h gc_ctrl.h weak.h
 compare.d.o: compare.c custom.h compatibility.h mlvalues.h config.h \
 ../config/m.h ../config/s.h misc.h fail.h memory.h gc.h major_gc.h \
 freelist.h minor_gc.h
+ ../config/m.h ../config/s.h misc.h fail.h memory.h gc.h major_gc.h \
+ freelist.h minor_gc.h
 custom.d.o: custom.c alloc.h compatibility.h misc.h config.h ../config/m.h \
 ../config/s.h mlvalues.h custom.h fail.h memory.h gc.h major_gc.h \
 freelist.h minor_gc.h
+ ../config/s.h mlvalues.h custom.h fail.h memory.h gc.h major_gc.h \
+ freelist.h minor_gc.h
 debugger.d.o: debugger.c alloc.h compatibility.h misc.h config.h \
 ../config/m.h ../config/s.h mlvalues.h debugger.h fail.h fix_code.h \
 instruct.h intext.h io.h stacks.h memory.h gc.h major_gc.h freelist.h \
 minor_gc.h sys.h
+ ../config/m.h ../config/s.h mlvalues.h debugger.h fail.h fix_code.h \
+ instruct.h intext.h io.h stacks.h memory.h gc.h major_gc.h freelist.h \
+ minor_gc.h sys.h
 dynlink.d.o: dynlink.c config.h ../config/m.h ../config/s.h compatibility.h \
 alloc.h misc.h mlvalues.h dynlink.h fail.h memory.h gc.h major_gc.h \
 freelist.h minor_gc.h osdeps.h prims.h
+ alloc.h misc.h mlvalues.h dynlink.h fail.h memory.h gc.h major_gc.h \
+ freelist.h minor_gc.h osdeps.h prims.h
 extern.d.o: extern.c alloc.h compatibility.h misc.h config.h ../config/m.h \
 ../config/s.h mlvalues.h custom.h fail.h gc.h intext.h io.h md5.h \
 memory.h major_gc.h freelist.h minor_gc.h reverse.h
+ ../config/s.h mlvalues.h custom.h fail.h gc.h intext.h io.h md5.h \
+ memory.h major_gc.h freelist.h minor_gc.h reverse.h
 fail.d.o: fail.c alloc.h compatibility.h misc.h config.h ../config/m.h \
 ../config/s.h mlvalues.h fail.h io.h gc.h memory.h major_gc.h \
 freelist.h minor_gc.h printexc.h signals.h stacks.h
../config/s.h mlvalues.h fail.h io.h gc.h memory.h major_gc.h freelist.h \
+ minor_gc.h printexc.h signals.h stacks.h
 finalise.d.o: finalise.c callback.h compatibility.h mlvalues.h config.h \
 ../config/m.h ../config/s.h misc.h fail.h roots.h memory.h gc.h \
 major_gc.h freelist.h minor_gc.h signals.h
+ ../config/m.h ../config/s.h misc.h fail.h roots.h memory.h gc.h \
+ major_gc.h freelist.h minor_gc.h signals.h
 fix_code.d.o: fix_code.c config.h ../config/m.h ../config/s.h \
 compatibility.h debugger.h misc.h mlvalues.h fix_code.h instruct.h \
 intext.h io.h md5.h memory.h gc.h major_gc.h freelist.h minor_gc.h \
 reverse.h
+ compatibility.h debugger.h misc.h mlvalues.h fix_code.h instruct.h \
+ intext.h io.h md5.h memory.h gc.h major_gc.h freelist.h minor_gc.h \
+ reverse.h
 floats.d.o: floats.c alloc.h compatibility.h misc.h config.h ../config/m.h \
 ../config/s.h mlvalues.h fail.h memory.h gc.h major_gc.h freelist.h \
 minor_gc.h reverse.h stacks.h
+ ../config/s.h mlvalues.h fail.h memory.h gc.h major_gc.h freelist.h \
+ minor_gc.h reverse.h stacks.h
 freelist.d.o: freelist.c config.h ../config/m.h ../config/s.h \
 compatibility.h freelist.h misc.h mlvalues.h gc.h gc_ctrl.h memory.h \
 major_gc.h minor_gc.h
+ compatibility.h freelist.h misc.h mlvalues.h gc.h gc_ctrl.h memory.h \
+ major_gc.h minor_gc.h
 gc_ctrl.d.o: gc_ctrl.c alloc.h compatibility.h misc.h config.h \
 ../config/m.h ../config/s.h mlvalues.h compact.h custom.h finalise.h \
 roots.h memory.h gc.h major_gc.h freelist.h minor_gc.h gc_ctrl.h \
 stacks.h
+ ../config/m.h ../config/s.h mlvalues.h compact.h custom.h finalise.h \
+ roots.h memory.h gc.h major_gc.h freelist.h minor_gc.h gc_ctrl.h \
+ stacks.h
 globroots.d.o: globroots.c memory.h compatibility.h config.h ../config/m.h \
 ../config/s.h gc.h mlvalues.h misc.h major_gc.h freelist.h minor_gc.h \
 roots.h globroots.h
+ ../config/s.h gc.h mlvalues.h misc.h major_gc.h freelist.h minor_gc.h \
+ roots.h globroots.h
 hash.d.o: hash.c mlvalues.h compatibility.h config.h ../config/m.h \
 ../config/s.h misc.h custom.h memory.h gc.h major_gc.h freelist.h \
 minor_gc.h hash.h int64_native.h
+ ../config/s.h misc.h custom.h memory.h gc.h major_gc.h freelist.h \
+ minor_gc.h hash.h int64_native.h
 instrtrace.d.o: instrtrace.c instruct.h misc.h compatibility.h config.h \
 ../config/m.h ../config/s.h mlvalues.h opnames.h prims.h stacks.h \
 memory.h gc.h major_gc.h freelist.h minor_gc.h
+ ../config/m.h ../config/s.h mlvalues.h opnames.h prims.h stacks.h \
+ memory.h gc.h major_gc.h freelist.h minor_gc.h
 intern.d.o: intern.c alloc.h compatibility.h misc.h config.h ../config/m.h \
 ../config/s.h mlvalues.h callback.h custom.h fail.h gc.h intext.h io.h \
 md5.h memory.h major_gc.h freelist.h minor_gc.h reverse.h
+ ../config/s.h mlvalues.h callback.h custom.h fail.h gc.h intext.h io.h \
+ md5.h memory.h major_gc.h freelist.h minor_gc.h reverse.h
 interp.d.o: interp.c alloc.h compatibility.h misc.h config.h ../config/m.h \
 ../config/s.h mlvalues.h backtrace.h callback.h debugger.h fail.h \
 fix_code.h instrtrace.h instruct.h interp.h major_gc.h freelist.h \
 memory.h gc.h minor_gc.h prims.h signals.h stacks.h
+ ../config/s.h mlvalues.h backtrace.h callback.h debugger.h fail.h \
+ fix_code.h instrtrace.h instruct.h interp.h major_gc.h freelist.h \
+ memory.h gc.h minor_gc.h prims.h signals.h stacks.h
 ints.d.o: ints.c alloc.h compatibility.h misc.h config.h ../config/m.h \
 ../config/s.h mlvalues.h custom.h fail.h intext.h io.h memory.h gc.h \
 major_gc.h freelist.h minor_gc.h int64_native.h
+ ../config/s.h mlvalues.h custom.h fail.h intext.h io.h memory.h gc.h \
+ major_gc.h freelist.h minor_gc.h int64_native.h
 io.d.o: io.c config.h ../config/m.h ../config/s.h compatibility.h alloc.h \
 misc.h mlvalues.h custom.h fail.h io.h memory.h gc.h major_gc.h \
 freelist.h minor_gc.h signals.h sys.h
+ misc.h mlvalues.h custom.h fail.h io.h memory.h gc.h major_gc.h \
+ freelist.h minor_gc.h signals.h sys.h
 lexing.d.o: lexing.c fail.h compatibility.h misc.h config.h ../config/m.h \
 ../config/s.h mlvalues.h stacks.h memory.h gc.h major_gc.h freelist.h \
 minor_gc.h
+ ../config/s.h mlvalues.h stacks.h memory.h gc.h major_gc.h freelist.h \
+ minor_gc.h
 main.d.o: main.c misc.h compatibility.h config.h ../config/m.h \
 ../config/s.h mlvalues.h sys.h
+ ../config/s.h mlvalues.h sys.h
 major_gc.d.o: major_gc.c compact.h config.h ../config/m.h ../config/s.h \
 compatibility.h misc.h custom.h mlvalues.h fail.h finalise.h roots.h \
 memory.h gc.h major_gc.h freelist.h minor_gc.h gc_ctrl.h weak.h
+ compatibility.h misc.h custom.h mlvalues.h fail.h finalise.h roots.h \
+ memory.h gc.h major_gc.h freelist.h minor_gc.h gc_ctrl.h weak.h
 md5.d.o: md5.c alloc.h compatibility.h misc.h config.h ../config/m.h \
 ../config/s.h mlvalues.h fail.h md5.h io.h memory.h gc.h major_gc.h \
 freelist.h minor_gc.h reverse.h
+ ../config/s.h mlvalues.h fail.h md5.h io.h memory.h gc.h major_gc.h \
+ freelist.h minor_gc.h reverse.h
 memory.d.o: memory.c fail.h compatibility.h misc.h config.h ../config/m.h \
 ../config/s.h mlvalues.h freelist.h gc.h gc_ctrl.h major_gc.h memory.h \
 minor_gc.h signals.h
+ ../config/s.h mlvalues.h freelist.h gc.h gc_ctrl.h major_gc.h memory.h \
+ minor_gc.h signals.h
 meta.d.o: meta.c alloc.h compatibility.h misc.h config.h ../config/m.h \
 ../config/s.h mlvalues.h fail.h fix_code.h interp.h intext.h io.h \
 major_gc.h freelist.h memory.h gc.h minor_gc.h prims.h stacks.h
+ ../config/s.h mlvalues.h fail.h fix_code.h interp.h intext.h io.h \
+ major_gc.h freelist.h memory.h gc.h minor_gc.h prims.h stacks.h
 minor_gc.d.o: minor_gc.c config.h ../config/m.h ../config/s.h \
 compatibility.h fail.h misc.h mlvalues.h finalise.h roots.h memory.h \
 gc.h major_gc.h freelist.h minor_gc.h gc_ctrl.h signals.h weak.h
+ compatibility.h fail.h misc.h mlvalues.h finalise.h roots.h memory.h \
+ gc.h major_gc.h freelist.h minor_gc.h gc_ctrl.h signals.h weak.h
 misc.d.o: misc.c config.h ../config/m.h ../config/s.h compatibility.h \
 misc.h memory.h gc.h mlvalues.h major_gc.h freelist.h minor_gc.h
+ misc.h memory.h gc.h mlvalues.h major_gc.h freelist.h minor_gc.h
 obj.d.o: obj.c alloc.h compatibility.h misc.h config.h ../config/m.h \
 ../config/s.h mlvalues.h fail.h gc.h interp.h major_gc.h freelist.h \
 memory.h minor_gc.h prims.h
+ ../config/s.h mlvalues.h fail.h gc.h interp.h major_gc.h freelist.h \
+ memory.h minor_gc.h prims.h
 parsing.d.o: parsing.c config.h ../config/m.h ../config/s.h compatibility.h \
-  mlvalues.h misc.h memory.h gc.h major_gc.h freelist.h minor_gc.h \
-  alloc.h
+ mlvalues.h misc.h memory.h gc.h major_gc.h freelist.h minor_gc.h alloc.h
 prims.d.o: prims.c mlvalues.h compatibility.h config.h ../config/m.h \
 ../config/s.h misc.h prims.h
+ ../config/s.h misc.h prims.h
 printexc.d.o: printexc.c backtrace.h mlvalues.h compatibility.h config.h \
 ../config/m.h ../config/s.h misc.h callback.h debugger.h fail.h \
 printexc.h
+ ../config/m.h ../config/s.h misc.h callback.h debugger.h fail.h \
+ printexc.h
 roots.d.o: roots.c finalise.h roots.h misc.h compatibility.h config.h \
 ../config/m.h ../config/s.h memory.h gc.h mlvalues.h major_gc.h \
 freelist.h minor_gc.h globroots.h stacks.h
+ ../config/m.h ../config/s.h memory.h gc.h mlvalues.h major_gc.h \
+ freelist.h minor_gc.h globroots.h stacks.h
 signals.d.o: signals.c alloc.h compatibility.h misc.h config.h \
 ../config/m.h ../config/s.h mlvalues.h callback.h fail.h memory.h gc.h \
 major_gc.h freelist.h minor_gc.h roots.h signals.h signals_machdep.h \
 sys.h
+ ../config/m.h ../config/s.h mlvalues.h callback.h fail.h memory.h gc.h \
+ major_gc.h freelist.h minor_gc.h roots.h signals.h signals_machdep.h \
+ sys.h
 signals_byt.d.o: signals_byt.c config.h ../config/m.h ../config/s.h \
 compatibility.h memory.h gc.h mlvalues.h misc.h major_gc.h freelist.h \
 minor_gc.h osdeps.h signals.h signals_machdep.h
+ compatibility.h memory.h gc.h mlvalues.h misc.h major_gc.h freelist.h \
+ minor_gc.h osdeps.h signals.h signals_machdep.h
 stacks.d.o: stacks.c config.h ../config/m.h ../config/s.h compatibility.h \
 fail.h misc.h mlvalues.h stacks.h memory.h gc.h major_gc.h freelist.h \
 minor_gc.h
+ fail.h misc.h mlvalues.h stacks.h memory.h gc.h major_gc.h freelist.h \
+ minor_gc.h
 startup.d.o: startup.c config.h ../config/m.h ../config/s.h compatibility.h \
 alloc.h misc.h mlvalues.h backtrace.h callback.h custom.h debugger.h \
 dynlink.h exec.h fail.h fix_code.h freelist.h gc_ctrl.h instrtrace.h \
 interp.h intext.h io.h memory.h gc.h major_gc.h minor_gc.h osdeps.h \
 prims.h printexc.h reverse.h signals.h stacks.h sys.h startup.h \
 version.h
+ alloc.h misc.h mlvalues.h backtrace.h callback.h custom.h debugger.h \
+ dynlink.h exec.h fail.h fix_code.h freelist.h gc_ctrl.h instrtrace.h \
+ interp.h intext.h io.h memory.h gc.h major_gc.h minor_gc.h osdeps.h \
+ prims.h printexc.h reverse.h signals.h stacks.h sys.h startup.h \
+ version.h
 str.d.o: str.c alloc.h compatibility.h misc.h config.h ../config/m.h \
 ../config/s.h mlvalues.h fail.h
+ ../config/s.h mlvalues.h fail.h
 sys.d.o: sys.c config.h ../config/m.h ../config/s.h compatibility.h alloc.h \
 misc.h mlvalues.h debugger.h fail.h instruct.h osdeps.h signals.h \
 stacks.h memory.h gc.h major_gc.h freelist.h minor_gc.h sys.h
+ misc.h mlvalues.h debugger.h fail.h instruct.h osdeps.h signals.h \
+ stacks.h memory.h gc.h major_gc.h freelist.h minor_gc.h sys.h
 terminfo.d.o: terminfo.c config.h ../config/m.h ../config/s.h \
 compatibility.h alloc.h misc.h mlvalues.h fail.h io.h
+ compatibility.h alloc.h misc.h mlvalues.h fail.h io.h
 unix.d.o: unix.c config.h ../config/m.h ../config/s.h compatibility.h \
 memory.h gc.h mlvalues.h misc.h major_gc.h freelist.h minor_gc.h \
 osdeps.h
+ memory.h gc.h mlvalues.h misc.h major_gc.h freelist.h minor_gc.h \
+ osdeps.h
 weak.d.o: weak.c alloc.h compatibility.h misc.h config.h ../config/m.h \
 ../config/s.h mlvalues.h fail.h major_gc.h freelist.h memory.h gc.h \
 minor_gc.h
+ ../config/s.h mlvalues.h fail.h major_gc.h freelist.h memory.h gc.h \
+ minor_gc.h
 alloc.pic.o: alloc.c alloc.h compatibility.h misc.h config.h ../config/m.h \
 ../config/s.h mlvalues.h custom.h major_gc.h freelist.h memory.h gc.h \
 minor_gc.h stacks.h
+ ../config/s.h mlvalues.h custom.h major_gc.h freelist.h memory.h gc.h \
+ minor_gc.h stacks.h
 array.pic.o: array.c alloc.h compatibility.h misc.h config.h ../config/m.h \
 ../config/s.h mlvalues.h fail.h memory.h gc.h major_gc.h freelist.h \
 minor_gc.h
+ ../config/s.h mlvalues.h fail.h memory.h gc.h major_gc.h freelist.h \
+ minor_gc.h
 backtrace.pic.o: backtrace.c config.h ../config/m.h ../config/s.h \
 compatibility.h mlvalues.h misc.h alloc.h io.h instruct.h intext.h \
 exec.h fix_code.h memory.h gc.h major_gc.h freelist.h minor_gc.h \
 startup.h stacks.h sys.h backtrace.h
+ compatibility.h mlvalues.h misc.h alloc.h io.h instruct.h intext.h \
+ exec.h fix_code.h memory.h gc.h major_gc.h freelist.h minor_gc.h \
+ startup.h stacks.h sys.h backtrace.h
 callback.pic.o: callback.c callback.h compatibility.h mlvalues.h config.h \
 ../config/m.h ../config/s.h misc.h fail.h memory.h gc.h major_gc.h \
 freelist.h minor_gc.h interp.h instruct.h fix_code.h stacks.h
+ ../config/m.h ../config/s.h misc.h fail.h memory.h gc.h major_gc.h \
+ freelist.h minor_gc.h interp.h instruct.h fix_code.h stacks.h
 compact.pic.o: compact.c config.h ../config/m.h ../config/s.h compatibility.h \
 finalise.h roots.h misc.h memory.h gc.h mlvalues.h major_gc.h \
 freelist.h minor_gc.h gc_ctrl.h weak.h
finalise.h roots.h misc.h memory.h gc.h mlvalues.h major_gc.h freelist.h \
+ minor_gc.h gc_ctrl.h weak.h
 compare.pic.o: compare.c custom.h compatibility.h mlvalues.h config.h \
 ../config/m.h ../config/s.h misc.h fail.h memory.h gc.h major_gc.h \
 freelist.h minor_gc.h
+ ../config/m.h ../config/s.h misc.h fail.h memory.h gc.h major_gc.h \
+ freelist.h minor_gc.h
 custom.pic.o: custom.c alloc.h compatibility.h misc.h config.h ../config/m.h \
 ../config/s.h mlvalues.h custom.h fail.h memory.h gc.h major_gc.h \
 freelist.h minor_gc.h
+ ../config/s.h mlvalues.h custom.h fail.h memory.h gc.h major_gc.h \
+ freelist.h minor_gc.h
 debugger.pic.o: debugger.c alloc.h compatibility.h misc.h config.h \
 ../config/m.h ../config/s.h mlvalues.h debugger.h fail.h fix_code.h \
 instruct.h intext.h io.h stacks.h memory.h gc.h major_gc.h freelist.h \
 minor_gc.h sys.h
+ ../config/m.h ../config/s.h mlvalues.h debugger.h fail.h fix_code.h \
+ instruct.h intext.h io.h stacks.h memory.h gc.h major_gc.h freelist.h \
+ minor_gc.h sys.h
 dynlink.pic.o: dynlink.c config.h ../config/m.h ../config/s.h compatibility.h \
 alloc.h misc.h mlvalues.h dynlink.h fail.h memory.h gc.h major_gc.h \
 freelist.h minor_gc.h osdeps.h prims.h
+ alloc.h misc.h mlvalues.h dynlink.h fail.h memory.h gc.h major_gc.h \
+ freelist.h minor_gc.h osdeps.h prims.h
 extern.pic.o: extern.c alloc.h compatibility.h misc.h config.h ../config/m.h \
 ../config/s.h mlvalues.h custom.h fail.h gc.h intext.h io.h md5.h \
 memory.h major_gc.h freelist.h minor_gc.h reverse.h
+ ../config/s.h mlvalues.h custom.h fail.h gc.h intext.h io.h md5.h \
+ memory.h major_gc.h freelist.h minor_gc.h reverse.h
 fail.pic.o: fail.c alloc.h compatibility.h misc.h config.h ../config/m.h \
 ../config/s.h mlvalues.h fail.h io.h gc.h memory.h major_gc.h \
 freelist.h minor_gc.h printexc.h signals.h stacks.h
../config/s.h mlvalues.h fail.h io.h gc.h memory.h major_gc.h freelist.h \
+ minor_gc.h printexc.h signals.h stacks.h
 finalise.pic.o: finalise.c callback.h compatibility.h mlvalues.h config.h \
 ../config/m.h ../config/s.h misc.h fail.h roots.h memory.h gc.h \
 major_gc.h freelist.h minor_gc.h signals.h
+ ../config/m.h ../config/s.h misc.h fail.h roots.h memory.h gc.h \
+ major_gc.h freelist.h minor_gc.h signals.h
 fix_code.pic.o: fix_code.c config.h ../config/m.h ../config/s.h \
 compatibility.h debugger.h misc.h mlvalues.h fix_code.h instruct.h \
 intext.h io.h md5.h memory.h gc.h major_gc.h freelist.h minor_gc.h \
 reverse.h
+ compatibility.h debugger.h misc.h mlvalues.h fix_code.h instruct.h \
+ intext.h io.h md5.h memory.h gc.h major_gc.h freelist.h minor_gc.h \
+ reverse.h
 floats.pic.o: floats.c alloc.h compatibility.h misc.h config.h ../config/m.h \
 ../config/s.h mlvalues.h fail.h memory.h gc.h major_gc.h freelist.h \
 minor_gc.h reverse.h stacks.h
+ ../config/s.h mlvalues.h fail.h memory.h gc.h major_gc.h freelist.h \
+ minor_gc.h reverse.h stacks.h
 freelist.pic.o: freelist.c config.h ../config/m.h ../config/s.h \
 compatibility.h freelist.h misc.h mlvalues.h gc.h gc_ctrl.h memory.h \
 major_gc.h minor_gc.h
+ compatibility.h freelist.h misc.h mlvalues.h gc.h gc_ctrl.h memory.h \
+ major_gc.h minor_gc.h
 gc_ctrl.pic.o: gc_ctrl.c alloc.h compatibility.h misc.h config.h \
 ../config/m.h ../config/s.h mlvalues.h compact.h custom.h finalise.h \
 roots.h memory.h gc.h major_gc.h freelist.h minor_gc.h gc_ctrl.h \
 stacks.h
+ ../config/m.h ../config/s.h mlvalues.h compact.h custom.h finalise.h \
+ roots.h memory.h gc.h major_gc.h freelist.h minor_gc.h gc_ctrl.h \
+ stacks.h
 globroots.pic.o: globroots.c memory.h compatibility.h config.h ../config/m.h \
 ../config/s.h gc.h mlvalues.h misc.h major_gc.h freelist.h minor_gc.h \
 roots.h globroots.h
+ ../config/s.h gc.h mlvalues.h misc.h major_gc.h freelist.h minor_gc.h \
+ roots.h globroots.h
 hash.pic.o: hash.c mlvalues.h compatibility.h config.h ../config/m.h \
 ../config/s.h misc.h custom.h memory.h gc.h major_gc.h freelist.h \
 minor_gc.h hash.h int64_native.h
+ ../config/s.h misc.h custom.h memory.h gc.h major_gc.h freelist.h \
+ minor_gc.h hash.h int64_native.h
 instrtrace.pic.o: instrtrace.c
 intern.pic.o: intern.c alloc.h compatibility.h misc.h config.h ../config/m.h \
 ../config/s.h mlvalues.h callback.h custom.h fail.h gc.h intext.h io.h \
 md5.h memory.h major_gc.h freelist.h minor_gc.h reverse.h
+ ../config/s.h mlvalues.h callback.h custom.h fail.h gc.h intext.h io.h \
+ md5.h memory.h major_gc.h freelist.h minor_gc.h reverse.h
 interp.pic.o: interp.c alloc.h compatibility.h misc.h config.h ../config/m.h \
 ../config/s.h mlvalues.h backtrace.h callback.h debugger.h fail.h \
 fix_code.h instrtrace.h instruct.h interp.h major_gc.h freelist.h \
 memory.h gc.h minor_gc.h prims.h signals.h stacks.h jumptbl.h
+ ../config/s.h mlvalues.h backtrace.h callback.h debugger.h fail.h \
+ fix_code.h instrtrace.h instruct.h interp.h major_gc.h freelist.h \
+ memory.h gc.h minor_gc.h prims.h signals.h stacks.h jumptbl.h
 ints.pic.o: ints.c alloc.h compatibility.h misc.h config.h ../config/m.h \
 ../config/s.h mlvalues.h custom.h fail.h intext.h io.h memory.h gc.h \
 major_gc.h freelist.h minor_gc.h int64_native.h
+ ../config/s.h mlvalues.h custom.h fail.h intext.h io.h memory.h gc.h \
+ major_gc.h freelist.h minor_gc.h int64_native.h
 io.pic.o: io.c config.h ../config/m.h ../config/s.h compatibility.h alloc.h \
 misc.h mlvalues.h custom.h fail.h io.h memory.h gc.h major_gc.h \
 freelist.h minor_gc.h signals.h sys.h
+ misc.h mlvalues.h custom.h fail.h io.h memory.h gc.h major_gc.h \
+ freelist.h minor_gc.h signals.h sys.h
 lexing.pic.o: lexing.c fail.h compatibility.h misc.h config.h ../config/m.h \
 ../config/s.h mlvalues.h stacks.h memory.h gc.h major_gc.h freelist.h \
 minor_gc.h
+ ../config/s.h mlvalues.h stacks.h memory.h gc.h major_gc.h freelist.h \
+ minor_gc.h
 main.pic.o: main.c misc.h compatibility.h config.h ../config/m.h \
 ../config/s.h mlvalues.h sys.h
+ ../config/s.h mlvalues.h sys.h
 major_gc.pic.o: major_gc.c compact.h config.h ../config/m.h ../config/s.h \
 compatibility.h misc.h custom.h mlvalues.h fail.h finalise.h roots.h \
 memory.h gc.h major_gc.h freelist.h minor_gc.h gc_ctrl.h weak.h
+ compatibility.h misc.h custom.h mlvalues.h fail.h finalise.h roots.h \
+ memory.h gc.h major_gc.h freelist.h minor_gc.h gc_ctrl.h weak.h
 md5.pic.o: md5.c alloc.h compatibility.h misc.h config.h ../config/m.h \
 ../config/s.h mlvalues.h fail.h md5.h io.h memory.h gc.h major_gc.h \
 freelist.h minor_gc.h reverse.h
+ ../config/s.h mlvalues.h fail.h md5.h io.h memory.h gc.h major_gc.h \
+ freelist.h minor_gc.h reverse.h
 memory.pic.o: memory.c fail.h compatibility.h misc.h config.h ../config/m.h \
 ../config/s.h mlvalues.h freelist.h gc.h gc_ctrl.h major_gc.h memory.h \
 minor_gc.h signals.h
+ ../config/s.h mlvalues.h freelist.h gc.h gc_ctrl.h major_gc.h memory.h \
+ minor_gc.h signals.h
 meta.pic.o: meta.c alloc.h compatibility.h misc.h config.h ../config/m.h \
 ../config/s.h mlvalues.h fail.h fix_code.h interp.h intext.h io.h \
 major_gc.h freelist.h memory.h gc.h minor_gc.h prims.h stacks.h
+ ../config/s.h mlvalues.h fail.h fix_code.h interp.h intext.h io.h \
+ major_gc.h freelist.h memory.h gc.h minor_gc.h prims.h stacks.h
 minor_gc.pic.o: minor_gc.c config.h ../config/m.h ../config/s.h \
 compatibility.h fail.h misc.h mlvalues.h finalise.h roots.h memory.h \
 gc.h major_gc.h freelist.h minor_gc.h gc_ctrl.h signals.h weak.h
+ compatibility.h fail.h misc.h mlvalues.h finalise.h roots.h memory.h \
+ gc.h major_gc.h freelist.h minor_gc.h gc_ctrl.h signals.h weak.h
 misc.pic.o: misc.c config.h ../config/m.h ../config/s.h compatibility.h \
 misc.h memory.h gc.h mlvalues.h major_gc.h freelist.h minor_gc.h
+ misc.h memory.h gc.h mlvalues.h major_gc.h freelist.h minor_gc.h
 obj.pic.o: obj.c alloc.h compatibility.h misc.h config.h ../config/m.h \
 ../config/s.h mlvalues.h fail.h gc.h interp.h major_gc.h freelist.h \
 memory.h minor_gc.h prims.h
+ ../config/s.h mlvalues.h fail.h gc.h interp.h major_gc.h freelist.h \
+ memory.h minor_gc.h prims.h
 parsing.pic.o: parsing.c config.h ../config/m.h ../config/s.h compatibility.h \
-  mlvalues.h misc.h memory.h gc.h major_gc.h freelist.h minor_gc.h \
-  alloc.h
+ mlvalues.h misc.h memory.h gc.h major_gc.h freelist.h minor_gc.h alloc.h
 prims.pic.o: prims.c mlvalues.h compatibility.h config.h ../config/m.h \
 ../config/s.h misc.h prims.h
+ ../config/s.h misc.h prims.h
 printexc.pic.o: printexc.c backtrace.h mlvalues.h compatibility.h config.h \
 ../config/m.h ../config/s.h misc.h callback.h debugger.h fail.h \
 printexc.h
+ ../config/m.h ../config/s.h misc.h callback.h debugger.h fail.h \
+ printexc.h
 roots.pic.o: roots.c finalise.h roots.h misc.h compatibility.h config.h \
 ../config/m.h ../config/s.h memory.h gc.h mlvalues.h major_gc.h \
 freelist.h minor_gc.h globroots.h stacks.h
+ ../config/m.h ../config/s.h memory.h gc.h mlvalues.h major_gc.h \
+ freelist.h minor_gc.h globroots.h stacks.h
 signals.pic.o: signals.c alloc.h compatibility.h misc.h config.h \
 ../config/m.h ../config/s.h mlvalues.h callback.h fail.h memory.h gc.h \
 major_gc.h freelist.h minor_gc.h roots.h signals.h signals_machdep.h \
 sys.h
+ ../config/m.h ../config/s.h mlvalues.h callback.h fail.h memory.h gc.h \
+ major_gc.h freelist.h minor_gc.h roots.h signals.h signals_machdep.h \
+ sys.h
 signals_byt.pic.o: signals_byt.c config.h ../config/m.h ../config/s.h \
 compatibility.h memory.h gc.h mlvalues.h misc.h major_gc.h freelist.h \
 minor_gc.h osdeps.h signals.h signals_machdep.h
+ compatibility.h memory.h gc.h mlvalues.h misc.h major_gc.h freelist.h \
+ minor_gc.h osdeps.h signals.h signals_machdep.h
 stacks.pic.o: stacks.c config.h ../config/m.h ../config/s.h compatibility.h \
 fail.h misc.h mlvalues.h stacks.h memory.h gc.h major_gc.h freelist.h \
 minor_gc.h
+ fail.h misc.h mlvalues.h stacks.h memory.h gc.h major_gc.h freelist.h \
+ minor_gc.h
 startup.pic.o: startup.c config.h ../config/m.h ../config/s.h compatibility.h \
 alloc.h misc.h mlvalues.h backtrace.h callback.h custom.h debugger.h \
 dynlink.h exec.h fail.h fix_code.h freelist.h gc_ctrl.h instrtrace.h \
 interp.h intext.h io.h memory.h gc.h major_gc.h minor_gc.h osdeps.h \
 prims.h printexc.h reverse.h signals.h stacks.h sys.h startup.h \
 version.h
+ alloc.h misc.h mlvalues.h backtrace.h callback.h custom.h debugger.h \
+ dynlink.h exec.h fail.h fix_code.h freelist.h gc_ctrl.h instrtrace.h \
+ interp.h intext.h io.h memory.h gc.h major_gc.h minor_gc.h osdeps.h \
+ prims.h printexc.h reverse.h signals.h stacks.h sys.h startup.h \
+ version.h
 str.pic.o: str.c alloc.h compatibility.h misc.h config.h ../config/m.h \
 ../config/s.h mlvalues.h fail.h
+ ../config/s.h mlvalues.h fail.h
 sys.pic.o: sys.c config.h ../config/m.h ../config/s.h compatibility.h alloc.h \
 misc.h mlvalues.h debugger.h fail.h instruct.h osdeps.h signals.h \
 stacks.h memory.h gc.h major_gc.h freelist.h minor_gc.h sys.h
+ misc.h mlvalues.h debugger.h fail.h instruct.h osdeps.h signals.h \
+ stacks.h memory.h gc.h major_gc.h freelist.h minor_gc.h sys.h
 terminfo.pic.o: terminfo.c config.h ../config/m.h ../config/s.h \
 compatibility.h alloc.h misc.h mlvalues.h fail.h io.h
+ compatibility.h alloc.h misc.h mlvalues.h fail.h io.h
 unix.pic.o: unix.c config.h ../config/m.h ../config/s.h compatibility.h \
 memory.h gc.h mlvalues.h misc.h major_gc.h freelist.h minor_gc.h \
 osdeps.h
+ memory.h gc.h mlvalues.h misc.h major_gc.h freelist.h minor_gc.h \
+ osdeps.h
 weak.pic.o: weak.c alloc.h compatibility.h misc.h config.h ../config/m.h \
 ../config/s.h mlvalues.h fail.h major_gc.h freelist.h memory.h gc.h \
 minor_gc.h
+ ../config/s.h mlvalues.h fail.h major_gc.h freelist.h memory.h gc.h \
+ minor_gc.h
index 59302e0548c15bd2bd3ca721d0a71ec0230c33db..7b178a46d2a87a7db3e2feb8f5510ec9c639b884 100644 (file)
@@ -4,7 +4,9 @@ prims.c
 opnames.h
 version.h
 ocamlrun
+ocamlrun.exe
 ocamlrund
+ocamlrund.exe
 ld.conf
 interp.a.lst
 *.[sd]obj
index 316f69e5c6d3dc5267a6702e8817a20f13fc6688..32cccdb02ee4da4d6468083b9aa2618ba54ec43d 100644 (file)
@@ -11,7 +11,7 @@
 #                                                                       #
 #########################################################################
 
-# $Id$
+# $Id: Makefile 12567 2012-06-04 17:01:09Z doligez $
 
 include Makefile.common
 
@@ -32,7 +32,7 @@ ocamlrun$(EXE): libcamlrun.a prims.o
                  prims.o libcamlrun.a $(BYTECCLIBS)
 
 ocamlrund$(EXE): libcamlrund.a prims.o
-       $(MKEXE) -g $(BYTECCLINKOPTS) -o ocamlrund$(EXE) \
+       $(MKEXE) $(MKEXEDEBUGFLAG) $(BYTECCLINKOPTS) -o ocamlrund$(EXE) \
                  prims.o libcamlrund.a $(BYTECCLIBS)
 
 libcamlrun.a: $(OBJS)
index 7f21fd8d7d3bf444d9e8fa300b1ac59b5f023887..b519f75b1914b09a5de05131f87b03bfb5fd6684 100755 (executable)
@@ -11,7 +11,7 @@
 #                                                                       #
 #########################################################################
 
-# $Id$
+# $Id: Makefile.common 12265 2012-03-24 08:13:21Z xleroy $
 
 include ../config/Makefile
 
index b93fa58a8576c4acbc04de7ae8c0bb194cf9d909..fc3c766d6fbf2700d68df5916036f2fb41634825 100644 (file)
@@ -11,7 +11,7 @@
 #                                                                       #
 #########################################################################
 
-# $Id$
+# $Id: Makefile.nt 11156 2011-07-27 14:17:02Z doligez $
 
 include Makefile.common
 
index 034562e8ea2ccdda9fbf24925f894d4dafd5c474..abec6aedfe2677d15b4f7902a4e91b92813976ca 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: alloc.c 11156 2011-07-27 14:17:02Z doligez $ */
 
 /* 1. Allocation functions doing the same work as the macros in the
       case where [Setup_for_gc] and [Restore_after_gc] are no-ops.
index 75dd5ec8f9dd39bc136894d03043d9ab638b6008..029052c2f160da79c32900850931f07dece6a6cb 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: alloc.h 12000 2012-01-07 20:55:28Z lefessan $ */
 
 #ifndef CAML_ALLOC_H
 #define CAML_ALLOC_H
index 637fe9c8048e2fd4fa63317110a16f92279c78aa..69a3834693dcd3611de09846dcdcb1dde54b4a8d 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: array.c 11914 2011-12-21 10:41:59Z xleroy $ */
 
 /* Operations on arrays */
 
index b5efdc3db6d3217c4e9548a4cbb42d9ab18052cf..bcb0f05d9bf36aa14b78f673db0d2fcc08602bbd 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: backtrace.c 12149 2012-02-10 16:15:24Z doligez $ */
 
 /* Stack backtrace for uncaught exceptions */
 
index 23c72e6c9408f454a533dba14788d1475db836b6..3abc675b451e6c65855ab6157d2e4faefb938b09 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: backtrace.h 11156 2011-07-27 14:17:02Z doligez $ */
 
 #ifndef CAML_BACKTRACE_H
 #define CAML_BACKTRACE_H
index c7fc77220864e22bbb482753407eec2b23643ee8..abc85dfe0fd598824734a476c00e1d06c6143701 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: callback.c 12149 2012-02-10 16:15:24Z doligez $ */
 
 /* Callbacks from C to OCaml */
 
index dd094c4dec7134ad28e3446178a43f3bc28edc67..06b60d685d589e43abef95ee09630c60f17a2218 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: callback.h 12149 2012-02-10 16:15:24Z doligez $ */
 
 /* Callbacks from C to OCaml */
 
index b3c75f3389c538f1b7a578e4bcc20f26135ca462..c1e66994c6e18e4d174ce0a1778eb1c6768d801c 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: compact.c 12524 2012-05-31 11:50:51Z doligez $ */
 
 #include <string.h>
 
@@ -438,11 +438,13 @@ void caml_compact_heap (void)
     }
     Chunk_next (chunk) = caml_heap_start;
     caml_heap_start = chunk;
+    ++ caml_stat_heap_chunks;
     caml_stat_heap_size += Chunk_size (chunk);
     if (caml_stat_heap_size > caml_stat_top_heap_size){
       caml_stat_top_heap_size = caml_stat_heap_size;
     }
     do_compaction ();
+    Assert (caml_stat_heap_chunks == 1);
     Assert (Chunk_next (caml_heap_start) == NULL);
   }
 }
index 949a2766ed3d83b24ad9795c2e10d9d1aacfaf95..ee1b70057c838af9a6cab4195333ad8b1e8cd145 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: compact.h 11156 2011-07-27 14:17:02Z doligez $ */
 
 #ifndef CAML_COMPACT_H
 #define CAML_COMPACT_H
index c0ee65a2609511d7c50efd970f56d445df96fdb1..88b0bea66747aa2ba8fbfbbef1cd65d131b19778 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: compare.c 12081 2012-01-26 14:13:51Z doligez $ */
 
 #include <string.h>
 #include <stdlib.h>
index c73a49a46f0875d85c74429d6e2958f8a9547896..e2ab53e39c38d7dd788f880ff413a335ce91b825 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: compare.h 11156 2011-07-27 14:17:02Z doligez $ */
 
 #ifndef CAML_COMPARE_H
 #define CAML_COMPARE_H
index 429d2275d7add1154bf4ef941754c3fca9bcca3b..b0728560ed71257be1ffbd885ee57d15c9a41d50 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: compatibility.h 11156 2011-07-27 14:17:02Z doligez $ */
 
 /* definitions for compatibility with old identifiers */
 
index b36b73c9554f642afd37f3db6a54ca07e3c900c1..9d017efc005592e4a2c21a801b88d8d3408a9274 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: config.h 11156 2011-07-27 14:17:02Z doligez $ */
 
 #ifndef CAML_CONFIG_H
 #define CAML_CONFIG_H
index b2d7b52065d61bdc0f0102011e817a8bf3c57fa0..7388602f00320e9c905ac3bb103fbec88a09febe 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: custom.c 11156 2011-07-27 14:17:02Z doligez $ */
 
 #include <string.h>
 
index c6abad8ef058a84a2e6547f450628f7a18e2b2e3..c5b53ef3aa383ae1db4189fb46ec71727f64eab5 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: custom.h 12000 2012-01-07 20:55:28Z lefessan $ */
 
 #ifndef CAML_CUSTOM_H
 #define CAML_CUSTOM_H
index a114b46cbc5d0d477346e76e00975501e9903acf..38d9486a27054b8af17a4b738d93b2634b711aef 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: debugger.c 12210 2012-03-08 19:52:03Z doligez $ */
 
 /* Interface with the byte-code debugger */
 
index a9501abff10216a7661d80df8c8be83dd5074a63..da09b6be9bc1c25331e50a58b132131fe7c29af8 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: debugger.h 11156 2011-07-27 14:17:02Z doligez $ */
 
 /* Interface with the debugger */
 
index ddd406babfa3139cbc3b6a6115c8f2802e139897..736a6d8fbe3fa559e5749d58fe575a2f3303b2f6 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: dynlink.c 11156 2011-07-27 14:17:02Z doligez $ */
 
 /* Dynamic loading of C primitives. */
 
index b1d14d844f9df6846bbbbdba223cea45766ef548..f3909247d560c1dbb2ae04d506604de81c91106f 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: dynlink.h 11156 2011-07-27 14:17:02Z doligez $ */
 
 /* Dynamic loading of C primitives. */
 
index 88cf6d28b7036158954908526e0c5e9ffa0f96cd..43c6d374376b8d6948739d6152bdd6350adf533a 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: exec.h 11156 2011-07-27 14:17:02Z doligez $ */
 
 /* exec.h : format of executable bytecode files */
 
index b95a5054062e075bd786fa539959e0e5b833dba4..a1d9bac3c8d82bae2117fdf3024305b69c43a7b8 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: extern.c 12394 2012-04-25 00:40:46Z meyer $ */
 
 /* Structured output */
 
@@ -53,11 +53,62 @@ static struct trail_block extern_trail_first;
 static struct trail_block * extern_trail_block;
 static struct trail_entry * extern_trail_cur, * extern_trail_limit;
 
+
+/* Stack for pending values to marshal */
+
+struct extern_item { value * v; mlsize_t count; };
+
+#define EXTERN_STACK_INIT_SIZE 256
+#define EXTERN_STACK_MAX_SIZE (1024*1024*100)
+
+static struct extern_item extern_stack_init[EXTERN_STACK_INIT_SIZE];
+
+static struct extern_item * extern_stack = extern_stack_init;
+static struct extern_item * extern_stack_limit = extern_stack_init
+                                                   + EXTERN_STACK_INIT_SIZE;
+
 /* Forward declarations */
 
 static void extern_out_of_memory(void);
 static void extern_invalid_argument(char *msg);
+static void extern_failwith(char *msg);
+static void extern_stack_overflow(void);
 static struct code_fragment * extern_find_code(char *addr);
+static void extern_replay_trail(void);
+static void free_extern_output(void);
+
+/* Free the extern stack if needed */
+static void extern_free_stack(void)
+{
+  if (extern_stack != extern_stack_init) {
+    free(extern_stack);
+    /* Reinitialize the globals for next time around */
+    extern_stack = extern_stack_init;
+    extern_stack_limit = extern_stack + EXTERN_STACK_INIT_SIZE;
+  }
+}
+
+static struct extern_item * extern_resize_stack(struct extern_item * sp)
+{
+  asize_t newsize = 2 * (extern_stack_limit - extern_stack);
+  asize_t sp_offset = sp - extern_stack;
+  struct extern_item * newstack;
+
+  if (newsize >= EXTERN_STACK_MAX_SIZE) extern_stack_overflow();
+  if (extern_stack == extern_stack_init) {
+    newstack = malloc(sizeof(struct extern_item) * newsize);
+    if (newstack == NULL) extern_stack_overflow();
+    memcpy(newstack, extern_stack_init,
+           sizeof(struct extern_item) * EXTERN_STACK_INIT_SIZE);
+  } else {
+    newstack =
+      realloc(extern_stack, sizeof(struct extern_item) * newsize);
+    if (newstack == NULL) extern_stack_overflow();
+  }
+  extern_stack = newstack;
+  extern_stack_limit = newstack + newsize;
+  return newstack + sp_offset;
+}
 
 /* Initialize the trail */
 
@@ -163,6 +214,7 @@ static void free_extern_output(void)
     free(blk);
   }
   extern_output_first = NULL;
+  extern_free_stack();
 }
 
 static void grow_extern_output(intnat required)
@@ -171,8 +223,7 @@ static void grow_extern_output(intnat required)
   intnat extra;
 
   if (extern_userprovided_output != NULL) {
-    extern_replay_trail();
-    caml_failwith("Marshal.to_buffer: buffer overflow");
+    extern_failwith("Marshal.to_buffer: buffer overflow");
   }
   extern_output_block->end = extern_ptr;
   if (required <= SIZE_EXTERN_OUTPUT_BLOCK / 2)
@@ -218,6 +269,21 @@ static void extern_invalid_argument(char *msg)
   caml_invalid_argument(msg);
 }
 
+static void extern_failwith(char *msg)
+{
+  extern_replay_trail();
+  free_extern_output();
+  caml_failwith(msg);
+}
+
+static void extern_stack_overflow(void)
+{
+  caml_gc_message (0x04, "Stack overflow in marshaling value\n", 0);
+  extern_replay_trail();
+  free_extern_output();
+  caml_raise_out_of_memory();
+}
+
 /* Write characters, integers, and blocks in the output buffer */
 
 #define Write(c) \
@@ -292,7 +358,10 @@ static void writecode64(int code, intnat val)
 static void extern_rec(value v)
 {
   struct code_fragment * cf;
- tailcall:
+  struct extern_item * sp;
+  sp = extern_stack;
+
+  while(1) {
   if (Is_long(v)) {
     intnat n = Long_val(v);
     if (n >= 0 && n < 0x40) {
@@ -307,7 +376,7 @@ static void extern_rec(value v)
 #endif
     } else
       writecode32(CODE_INT32, n);
-    return;
+    goto next_item;
   }
   if (Is_in_value_area(v)) {
     header_t hd = Hd_val(v);
@@ -322,7 +391,7 @@ static void extern_rec(value v)
         /* Do not short-circuit the pointer. */
       }else{
         v = f;
-        goto tailcall;
+        continue;
       }
     }
     /* Atoms are treated specially for two reasons: they are not allocated
@@ -333,7 +402,7 @@ static void extern_rec(value v)
       } else {
         writecode32(CODE_BLOCK32, hd);
       }
-      return;
+      goto next_item;
     }
     /* Check if already seen */
     if (Color_hd(hd) == Caml_blue) {
@@ -345,7 +414,7 @@ static void extern_rec(value v)
       } else {
         writecode32(CODE_SHARED32, d);
       }
-      return;
+      goto next_item;
     }
 
     /* Output the contents of the object */
@@ -416,7 +485,6 @@ static void extern_rec(value v)
     }
     default: {
       value field0;
-      mlsize_t i;
       if (tag < 16 && sz < 8) {
         Write(PREFIX_SMALL_BLOCK + tag + (sz << 4));
 #ifdef ARCH_SIXTYFOUR
@@ -430,14 +498,16 @@ static void extern_rec(value v)
       size_64 += 1 + sz;
       field0 = Field(v, 0);
       extern_record_location(v);
-      if (sz == 1) {
-        v = field0;
-      } else {
-        extern_rec(field0);
-        for (i = 1; i < sz - 1; i++) extern_rec(Field(v, i));
-        v = Field(v, i);
+      /* Remember that we still have to serialize fields 1 ... sz - 1 */
+      if (sz > 1) {
+        sp++;
+        if (sp >= extern_stack_limit) sp = extern_resize_stack(sp);
+        sp->v = &Field(v,1);
+        sp->count = sz-1;
       }
-      goto tailcall;
+      /* Continue serialization with the first field */
+      v = field0;
+      continue;
     }
     }
   }
@@ -449,6 +519,17 @@ static void extern_rec(value v)
   } else {
     extern_invalid_argument("output_value: abstract value (outside heap)");
   }
+  next_item:
+    /* Pop one more item to marshal, if any */
+    if (sp == extern_stack) {
+        /* We are done.   Cleanup the stack and leave the function */
+        extern_free_stack();
+        return;
+    }
+    v = *((sp->v)++);
+    if (--(sp->count) == 0) sp--;
+  }
+  /* Never reached as function leaves with return */
 }
 
 enum { NO_SHARING = 1, CLOSURES = 2 };
index b0beaa437a2329044549d6b65c16245ab72ba0af..1d85416957f37af8bae35aa67d83080169d0b209 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: fail.c 11187 2011-09-08 08:34:43Z xclerc $ */
 
 /* Raising exceptions from C. */
 
index ee05eb7f8a50012ed9197b8717305ccc1bdf5a00..75928a2c0f4b7e67596c9697b899cc6380341a63 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: fail.h 12000 2012-01-07 20:55:28Z lefessan $ */
 
 #ifndef CAML_FAIL_H
 #define CAML_FAIL_H
index 9a93084ae4aaf985950574001f8c698f5fc4bf91..244e5da8727529467d4d28ac2873f3b0d3808792 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: finalise.c 11156 2011-07-27 14:17:02Z doligez $ */
 
 /* Handling of finalised values. */
 
index e41baa320c8bfa53fc26458071365437db5c09c6..14d62244e6402c496e82cf79d9d6f644a2f51d35 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: finalise.h 11156 2011-07-27 14:17:02Z doligez $ */
 
 #ifndef CAML_FINALISE_H
 #define CAML_FINALISE_H
index 27e715be1f81c18bb0019ee1b8b9b1e423630d0c..84d46689bf7e6a88891e374ade8b1bc88c70f1ee 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: fix_code.c 12227 2012-03-13 14:44:48Z xleroy $ */
 
 /* Handling of blocks of bytecode (endianness switch, threading). */
 
index d0887c038558501fdc5debca2b9c521b475767db..e344018a019c0f1f93b5f786b60825d7a6eb4cb6 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: fix_code.h 12227 2012-03-13 14:44:48Z xleroy $ */
 
 /* Handling of blocks of bytecode (endianness switch, threading). */
 
index f708d70f70ab4b07efd1745035f7a47d7836ad1f..1b49b909f802b1d9ef70f8803829efcd1ca42191 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: floats.c 12030 2012-01-16 10:23:51Z frisch $ */
 
 /* The interface of this file is in "mlvalues.h" and "alloc.h" */
 
index f3bb4a8ee06ba55b39902b9b1975cc6375371781..4733a53816b6d86c8c54a262b3a5d1bd8f867c65 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: freelist.c 11156 2011-07-27 14:17:02Z doligez $ */
 
 #define FREELIST_DEBUG 0
 #if FREELIST_DEBUG
index b4285d9556d970ef68726bab7d00c17ea5eee6f5..531e4665f6fecc87483ce88dd4e192883a591263 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: freelist.h 11156 2011-07-27 14:17:02Z doligez $ */
 
 /* Free lists of heap blocks. */
 
index 4f67ed9066619e072e3ac81695233275acbdc949..be72d0765ad97128b366d76f7550b8f9b88e081a 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: gc.h 11156 2011-07-27 14:17:02Z doligez $ */
 
 #ifndef CAML_GC_H
 #define CAML_GC_H
index b5c4366798ba7f82305b0c3a299e64db3f349b66..ece9a54db46034278572353a9f4d84d5a7f65677 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: gc_ctrl.c 12149 2012-02-10 16:15:24Z doligez $ */
 
 #include "alloc.h"
 #include "compact.h"
index 4dba74fa57e458114343bc2d2b0135e15f3fcca5..e68f425a0bb0394df109906dda9980cf4027d28f 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: gc_ctrl.h 11156 2011-07-27 14:17:02Z doligez $ */
 
 #ifndef CAML_GC_CTRL_H
 #define CAML_GC_CTRL_H
index 513b7be553dd6e001690c9eee848a2c6ae96e32d..6ec85054efe0b4929bf6d2fcefed234ad320e9b5 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: globroots.c 11156 2011-07-27 14:17:02Z doligez $ */
 
 /* Registration of global memory roots */
 
index 97a1edab1591dd65a2322b0c0098b5f1e2b8f78e..14ba62ae047663111970d642d168525f695f1879 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: globroots.h 11156 2011-07-27 14:17:02Z doligez $ */
 
 /* Registration of global memory roots */
 
index 26a1bf5979e2c07716a02b32be209d2d8ef317ea..0e4a31acf95139f8772f2239a2bceeb6eb75056e 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: hash.c 12149 2012-02-10 16:15:24Z doligez $ */
 
 /* The generic hashing primitive */
 
index 1c329daa6973f863ed2fb3b53c8979168d68c8b4..9fc472c9a6a1b07702d1d579ab4b8239c515a22a 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: instrtrace.c 11156 2011-07-27 14:17:02Z doligez $ */
 
 /* Trace the instructions executed */
 
index 686b9e4ed63151da1588b3afcea52722e1f34c40..1b637ac19f2d0f492da791e36849dc72bd5332a1 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: instrtrace.h 11156 2011-07-27 14:17:02Z doligez $ */
 
 /* Trace the instructions executed */
 
index 92f228504c327afd38e4613f85cb5bb9fd70fd08..062b345cef3c4e09b25e4f360e385c5c7d7ec6c9 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: instruct.h 11156 2011-07-27 14:17:02Z doligez $ */
 
 /* The instruction set. */
 
index ad48584d89e52dc61e3b3fa75fbe01854a292d13..cf5e90368ac0c6453a27abcdfd7db005e13f201d 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: int64_emul.h 11156 2011-07-27 14:17:02Z doligez $ */
 
 /* Software emulation of 64-bit integer arithmetic, for C compilers
    that do not support it.  */
index 398357a607632acd794da3b922cce4257ee9c0a8..5d4fc6cdc12e6918ae33573e42a011cb4e9e0827 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: int64_format.h 11180 2011-09-07 12:04:58Z xleroy $ */
 
 /* printf-like formatting of 64-bit integers, in case the C library
    printf() function does not support them. */
index 9aa45e3c0f5f5df536094a6469a088513e1ce514..14425c3cdfe1127935aa4ede84e0386cc477aef1 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: int64_native.h 11156 2011-07-27 14:17:02Z doligez $ */
 
 /* Wrapper macros around native 64-bit integer arithmetic,
    so that it has the same interface as the software emulation
index 8b424656e67e96a2c44bd51d132d6d64cd4429b4..bdeb4a2f3a5b9ea2940e608a62dda24b0bf1dacf 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: intern.c 12441 2012-05-08 13:48:33Z xleroy $ */
 
 /* Structured input, compact format */
 
@@ -74,6 +74,8 @@ static char * intern_resolve_code_pointer(unsigned char digest[16],
                                           asize_t offset);
 static void intern_bad_code_pointer(unsigned char digest[16]) Noreturn;
 
+static void intern_free_stack(void);
+
 #define Sign_extend_shift ((sizeof(intnat) - 1) * 8)
 #define Sign_extend(x) (((intnat)(x) << Sign_extend_shift) >> Sign_extend_shift)
 
@@ -120,21 +122,200 @@ static void intern_cleanup(void)
     /* restore original header for heap block, otherwise GC is confused */
     Hd_val(intern_block) = intern_header;
   }
+  /* free the recursion stack */
+  intern_free_stack();
+}
+
+static void readfloat(double * dest, unsigned int code)
+{
+  if (sizeof(double) != 8) {
+    intern_cleanup();
+    caml_invalid_argument("input_value: non-standard floats");
+  }
+  readblock((char *) dest, 8);
+  /* Fix up endianness, if needed */
+#if ARCH_FLOAT_ENDIANNESS == 0x76543210
+  /* Host is big-endian; fix up if data read is little-endian */
+  if (code != CODE_DOUBLE_BIG) Reverse_64(dest, dest);
+#elif ARCH_FLOAT_ENDIANNESS == 0x01234567
+  /* Host is little-endian; fix up if data read is big-endian */
+  if (code != CODE_DOUBLE_LITTLE) Reverse_64(dest, dest);
+#else
+  /* Host is neither big nor little; permute as appropriate */
+  if (code == CODE_DOUBLE_LITTLE)
+    Permute_64(dest, ARCH_FLOAT_ENDIANNESS, dest, 0x01234567)
+  else
+    Permute_64(dest, ARCH_FLOAT_ENDIANNESS, dest, 0x76543210);
+#endif
+}
+
+static void readfloats(double * dest, mlsize_t len, unsigned int code)
+{
+  mlsize_t i;
+  if (sizeof(double) != 8) {
+    intern_cleanup();
+    caml_invalid_argument("input_value: non-standard floats");
+  }
+  readblock((char *) dest, len * 8);
+  /* Fix up endianness, if needed */
+#if ARCH_FLOAT_ENDIANNESS == 0x76543210
+  /* Host is big-endian; fix up if data read is little-endian */
+  if (code != CODE_DOUBLE_ARRAY8_BIG &&
+      code != CODE_DOUBLE_ARRAY32_BIG) {
+    for (i = 0; i < len; i++) Reverse_64(dest + i, dest + i);
+  }
+#elif ARCH_FLOAT_ENDIANNESS == 0x01234567
+  /* Host is little-endian; fix up if data read is big-endian */
+  if (code != CODE_DOUBLE_ARRAY8_LITTLE &&
+      code != CODE_DOUBLE_ARRAY32_LITTLE) {
+    for (i = 0; i < len; i++) Reverse_64(dest + i, dest + i);
+  }
+#else
+  /* Host is neither big nor little; permute as appropriate */
+  if (code == CODE_DOUBLE_ARRAY8_LITTLE ||
+      code == CODE_DOUBLE_ARRAY32_LITTLE) {
+    for (i = 0; i < len; i++)
+      Permute_64(dest + i, ARCH_FLOAT_ENDIANNESS, dest + i, 0x01234567);
+  } else {
+    for (i = 0; i < len; i++)
+      Permute_64(dest + i, ARCH_FLOAT_ENDIANNESS, dest + i, 0x76543210);
+  }
+#endif
+}
+
+/* Item on the stack with defined operation */
+struct intern_item {
+  value * dest;
+  intnat arg;
+  enum {
+    OReadItems, /* read arg items and store them in dest[0], dest[1], ... */
+    OFreshOID,  /* generate a fresh OID and store it in *dest */
+    OShift      /* offset *dest by arg */
+  } op;
+};
+
+/* FIXME: This is duplicated in two other places, with the only difference of
+   the type of elements stored in the stack. Possible solution in C would
+   be to instantiate stack these function via. C preprocessor macro.
+ */
+
+#define INTERN_STACK_INIT_SIZE 256
+#define INTERN_STACK_MAX_SIZE (1024*1024*100)
+
+static struct intern_item intern_stack_init[INTERN_STACK_INIT_SIZE];
+
+static struct intern_item * intern_stack = intern_stack_init;
+static struct intern_item * intern_stack_limit = intern_stack_init
+                                                   + INTERN_STACK_INIT_SIZE;
+
+/* Free the recursion stack if needed */
+static void intern_free_stack(void)
+{
+  if (intern_stack != intern_stack_init) {
+    free(intern_stack);
+    /* Reinitialize the globals for next time around */
+    intern_stack = intern_stack_init;
+    intern_stack_limit = intern_stack + INTERN_STACK_INIT_SIZE;
+  }
+}
+
+/* Same, then raise Out_of_memory */
+static void intern_stack_overflow(void)
+{
+  caml_gc_message (0x04, "Stack overflow in un-marshaling value\n", 0);
+  intern_free_stack();
+  caml_raise_out_of_memory();
+}
+
+static struct intern_item * intern_resize_stack(struct intern_item * sp)
+{
+  asize_t newsize = 2 * (intern_stack_limit - intern_stack);
+  asize_t sp_offset = sp - intern_stack;
+  struct intern_item * newstack;
+
+  if (newsize >= INTERN_STACK_MAX_SIZE) intern_stack_overflow();
+  if (intern_stack == intern_stack_init) {
+    newstack = malloc(sizeof(struct intern_item) * newsize);
+    if (newstack == NULL) intern_stack_overflow();
+    memcpy(newstack, intern_stack_init,
+           sizeof(struct intern_item) * INTERN_STACK_INIT_SIZE);
+  } else {
+    newstack =
+      realloc(intern_stack, sizeof(struct intern_item) * newsize);
+    if (newstack == NULL) intern_stack_overflow();
+  }
+  intern_stack = newstack;
+  intern_stack_limit = newstack + newsize;
+  return newstack + sp_offset;
 }
 
+/* Convenience macros for requesting operation on the stack */
+#define PushItem()                                                      \
+  do {                                                                  \
+    sp++;                                                               \
+    if (sp >= intern_stack_limit) sp = intern_resize_stack(sp);         \
+  } while(0)
+
+#define ReadItems(_dest,_n)                                             \
+  do {                                                                  \
+    if (_n > 0) {                                                       \
+      PushItem();                                                       \
+      sp->op = OReadItems;                                              \
+      sp->dest = _dest;                                                 \
+      sp->arg = _n;                                                     \
+    }                                                                   \
+  } while(0)
+
 static void intern_rec(value *dest)
 {
   unsigned int code;
   tag_t tag;
   mlsize_t size, len, ofs_ind;
-  value v, clos;
+  value v;
   asize_t ofs;
   header_t header;
   unsigned char digest[16];
   struct custom_operations * ops;
   char * codeptr;
+  struct intern_item * sp;
 
- tailcall:
+  sp = intern_stack;
+
+  /* Initially let's try to read the first object from the stream */
+  ReadItems(dest, 1);
+
+  /* The un-marshaler loop, the recursion is unrolled */
+  while(sp != intern_stack) {
+
+  /* Interpret next item on the stack */
+  dest = sp->dest;
+  switch (sp->op) {
+  case OFreshOID:
+    /* Refresh the object ID */
+    if (camlinternaloo_last_id == NULL) {
+      camlinternaloo_last_id = caml_named_value("CamlinternalOO.last_id");
+      if (camlinternaloo_last_id == NULL)
+        camlinternaloo_last_id = (value*) (-1);
+    }
+    if (camlinternaloo_last_id != (value*) (-1)) {
+      value id = Field(*camlinternaloo_last_id,0);
+      Field(dest, 0) = id;
+      Field(*camlinternaloo_last_id,0) = id + 2;
+    }
+    /* Pop item and iterate */
+    sp--;
+    break;
+  case OShift:
+    /* Shift value by an offset */
+    *dest += sp->arg;
+    /* Pop item and iterate */
+    sp--;
+    break;
+  case OReadItems:
+    /* Pop item */
+    sp->dest++;
+    if (--(sp->arg) == 0) sp--;
+    /* Read a value and set v to this value */
   code = read8u();
   if (code >= PREFIX_SMALL_INT) {
     if (code >= PREFIX_SMALL_BLOCK) {
@@ -146,30 +327,24 @@ static void intern_rec(value *dest)
         v = Atom(tag);
       } else {
         v = Val_hp(intern_dest);
-        *dest = v;
         if (intern_obj_table != NULL) intern_obj_table[obj_counter++] = v;
-        dest = (value *) (intern_dest + 1);
         *intern_dest = Make_header(size, tag, intern_color);
         intern_dest += 1 + size;
         /* For objects, we need to freshen the oid */
-        if (tag == Object_tag && camlinternaloo_last_id != (value*)-1) {
-          intern_rec(dest++);
-          intern_rec(dest++);
-          if (camlinternaloo_last_id == NULL)
-            camlinternaloo_last_id = caml_named_value("CamlinternalOO.last_id");
-          if (camlinternaloo_last_id == NULL)
-            camlinternaloo_last_id = (value*)-1;
-          else {
-            value id = Field(*camlinternaloo_last_id,0);
-            Field(dest,-1) = id;
-            Field(*camlinternaloo_last_id,0) = id + 2;
-          }
-          size -= 2;
-          if (size == 0) return;
-        }
-        for(/*nothing*/; size > 1; size--, dest++)
-          intern_rec(dest);
-        goto tailcall;
+        if (tag == Object_tag) {
+          Assert(size >= 2);
+          /* Request to read rest of the elements of the block */
+          ReadItems(&Field(v, 2), size - 2);
+          /* Request freshing OID */
+          PushItem();
+          sp->op = OFreshOID;                                           
+          sp->dest = &Field(v, 1);
+          sp->arg = 1;
+          /* Finally read first two block elements: method table and old OID */
+          ReadItems(&Field(v, 0), 2);
+        } else
+          /* If it's not an object then read the contents of the block */
+          ReadItems(&Field(v, 0), size);
       }
     } else {
       /* Small integer */
@@ -247,68 +422,22 @@ static void intern_rec(value *dest)
         goto read_string;
       case CODE_DOUBLE_LITTLE:
       case CODE_DOUBLE_BIG:
-        if (sizeof(double) != 8) {
-          intern_cleanup();
-          caml_invalid_argument("input_value: non-standard floats");
-        }
         v = Val_hp(intern_dest);
         if (intern_obj_table != NULL) intern_obj_table[obj_counter++] = v;
         *intern_dest = Make_header(Double_wosize, Double_tag, intern_color);
         intern_dest += 1 + Double_wosize;
-        readblock((char *) v, 8);
-#if ARCH_FLOAT_ENDIANNESS == 0x76543210
-        if (code != CODE_DOUBLE_BIG) Reverse_64(v, v);
-#elif ARCH_FLOAT_ENDIANNESS == 0x01234567
-        if (code != CODE_DOUBLE_LITTLE) Reverse_64(v, v);
-#else
-        if (code == CODE_DOUBLE_LITTLE)
-          Permute_64(v, ARCH_FLOAT_ENDIANNESS, v, 0x01234567)
-        else
-          Permute_64(v, ARCH_FLOAT_ENDIANNESS, v, 0x76543210);
-#endif
+        readfloat((double *) v, code);
         break;
       case CODE_DOUBLE_ARRAY8_LITTLE:
       case CODE_DOUBLE_ARRAY8_BIG:
         len = read8u();
       read_double_array:
-        if (sizeof(double) != 8) {
-          intern_cleanup();
-          caml_invalid_argument("input_value: non-standard floats");
-        }
         size = len * Double_wosize;
         v = Val_hp(intern_dest);
         if (intern_obj_table != NULL) intern_obj_table[obj_counter++] = v;
         *intern_dest = Make_header(size, Double_array_tag, intern_color);
         intern_dest += 1 + size;
-        readblock((char *) v, len * 8);
-#if ARCH_FLOAT_ENDIANNESS == 0x76543210
-        if (code != CODE_DOUBLE_ARRAY8_BIG &&
-            code != CODE_DOUBLE_ARRAY32_BIG) {
-          mlsize_t i;
-          for (i = 0; i < len; i++) Reverse_64((value)((double *)v + i),
-                                               (value)((double *)v + i));
-        }
-#elif ARCH_FLOAT_ENDIANNESS == 0x01234567
-        if (code != CODE_DOUBLE_ARRAY8_LITTLE &&
-            code != CODE_DOUBLE_ARRAY32_LITTLE) {
-          mlsize_t i;
-          for (i = 0; i < len; i++) Reverse_64((value)((double *)v + i),
-                                               (value)((double *)v + i));
-        }
-#else
-        if (code == CODE_DOUBLE_ARRAY8_LITTLE ||
-            code == CODE_DOUBLE_ARRAY32_LITTLE) {
-          mlsize_t i;
-          for (i = 0; i < len; i++)
-            Permute_64((value)((double *)v + i), ARCH_FLOAT_ENDIANNESS,
-                       (value)((double *)v + i), 0x01234567);
-        } else {
-          mlsize_t i;
-          for (i = 0; i < len; i++)
-            Permute_64((value)((double *)v + i), ARCH_FLOAT_ENDIANNESS,
-                       (value)((double *)v + i), 0x76543210);
-        }
-#endif
+        readfloats((double *) v, len, code);
         break;
       case CODE_DOUBLE_ARRAY32_LITTLE:
       case CODE_DOUBLE_ARRAY32_BIG:
@@ -333,9 +462,13 @@ static void intern_rec(value *dest)
         break;
       case CODE_INFIXPOINTER:
         ofs = read32u();
-        intern_rec(&clos);
-        v = clos + ofs;
-        break;
+        /* Read a value to *dest, then offset *dest by ofs */
+        PushItem();                                                     
+        sp->dest = dest;
+        sp->op = OShift;                                                
+        sp->arg = ofs;
+        ReadItems(dest, 1);
+        continue;  /* with next iteration of main loop, skipping *dest = v */
       case CODE_CUSTOM:
         ops = caml_find_custom_operations((char *) intern_src);
         if (ops == NULL) {
@@ -356,8 +489,16 @@ static void intern_rec(value *dest)
         caml_failwith("input_value: ill-formed message");
       }
     }
-  }
+  } 
+  /* end of case OReadItems */
   *dest = v;
+  break;
+  default:
+    Assert(0);
+  }
+  }
+  /* We are done. Cleanup the stack and leave the function */
+  intern_free_stack();
 }
 
 static void intern_alloc(mlsize_t whsize, mlsize_t num_objects)
index cbec02a5cbca3d8a136e5e050b11c27358355f4b..6c6028375177f68dc697d5bd2de001b8cfb50b8f 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: interp.c 11156 2011-07-27 14:17:02Z doligez $ */
 
 /* The bytecode interpreter */
 #include <stdio.h>
index 7c3d26f28949994ec0a254c173dd864b1aa4586c..a2a8237a585ccecd478abdcb3eab9095a495b45a 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: interp.h 11156 2011-07-27 14:17:02Z doligez $ */
 
 /* The bytecode interpreter */
 
index b287e5cdb4739a7530d2eefdc1974ac7d40ac838..016792a7fbd79665d5ed7db64c3f9ce6795916a7 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: intext.h 12227 2012-03-13 14:44:48Z xleroy $ */
 
 /* Structured input/output */
 
index 34b5db238ae8eeebcce156febb3deb5753e4450f..cc375d4bfdc4901cbdb459b3cf03ef0d39efd892 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: ints.c 12149 2012-02-10 16:15:24Z doligez $ */
 
 #include <stdio.h>
 #include <string.h>
index 600887a889ec7d271f631bdd7840f61619766102..d7d341f81070f54898339ec3d9bd85002e0e19da 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: io.c 12149 2012-02-10 16:15:24Z doligez $ */
 
 /* Buffered input/output. */
 
index 89a85380c7d6bb051879053343d6b293501cc35b..6d2d2713a554303730b4e99a0b005b07cc555e26 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: io.h 12331 2012-04-10 14:07:40Z doligez $ */
 
 /* Buffered input/output */
 
index cb763bce93b6352995bc49b06d25f1087c577d0a..dda5911ed595d6fcb61c78860bee6077c00a2f46 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: lexing.c 11156 2011-07-27 14:17:02Z doligez $ */
 
 /* The table-driven automaton for lexers generated by camllex. */
 
index 63355840f65b57de202de1d73f7ec6c601deb071..0689e630eeb1df1fe31928474908c8b5329a94ce 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: main.c 11156 2011-07-27 14:17:02Z doligez $ */
 
 /* Main entry point (can be overridden by a user-provided main()
    function that calls caml_main() later). */
index aeb192fdeace617543184be1e7784e77317531ce..772c3fc4335c30d77c9b724db948fad87cf99154 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: major_gc.c 11156 2011-07-27 14:17:02Z doligez $ */
 
 #include <limits.h>
 
index 427312784c7d01a77b5e1447f6aaaeb45b9a9a20..95178e4b9624ae14128644f5cb719c1122c2b720 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: major_gc.h 11156 2011-07-27 14:17:02Z doligez $ */
 
 #ifndef CAML_MAJOR_GC_H
 #define CAML_MAJOR_GC_H
index a2125127326b3a25b317ef69a0fcdcb9f33d9a1d..dc3ba43e736347b8ddf7111a13f7dbbb7c4c738d 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: md5.c 12227 2012-03-13 14:44:48Z xleroy $ */
 
 #include <string.h>
 #include "alloc.h"
index 0c4239e550b80e40a6c24e82f8b74965726777c0..eab0c053eca7b879bc099bad8a63c0c3f47785da 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: md5.h 12227 2012-03-13 14:44:48Z xleroy $ */
 
 /* MD5 message digest */
 
index b99825d185264cb7e4648f037251bd55b9867507..3ca41da2717d87e98f626794f760cbc3003e0c0a 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: memory.c 12364 2012-04-17 08:20:35Z doligez $ */
 
 #include <stdlib.h>
 #include <string.h>
index 69f5ff91c80f5830e94c36833f6fb0e62dfaeab1..56561968700a5644662a758f17f12205a1abf1a3 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: memory.h 12210 2012-03-08 19:52:03Z doligez $ */
 
 /* Allocation macros and functions */
 
index a547b991b549768be53210a5cc296530dfc0eef0..2bb222abf43bf7e673917cf15d514637f250eb77 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: meta.c 12253 2012-03-21 14:31:18Z xleroy $ */
 
 /* Primitives for the toplevel */
 
index 8b8b8ff0ed60c50d3be7bb3a87b6c476158281f1..474ce55fd9d74ca5c62f5ae9bf6a88593731ad16 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: minor_gc.c 12194 2012-03-06 19:17:29Z doligez $ */
 
 #include <string.h>
 #include "config.h"
index 82c82cd3f621e606df6f5f6a560077130391f5e2..892929ab1a9a51b7986ab4614b89b64bbdea85cd 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: minor_gc.h 11156 2011-07-27 14:17:02Z doligez $ */
 
 #ifndef CAML_MINOR_GC_H
 #define CAML_MINOR_GC_H
index 927cbd81b1d009e393666e8ec00094747126a224..5914f38f01fbb629b0924716ddc8f3f490281b5c 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: misc.c 11156 2011-07-27 14:17:02Z doligez $ */
 
 #include <stdio.h>
 #include "config.h"
index e970d3d032e20ee0bd8fa43e55531666de3d84f1..f8bfda6a342aa4dcae22204a5b98e3280b5a06c8 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: misc.h 11156 2011-07-27 14:17:02Z doligez $ */
 
 /* Miscellaneous macros and variables. */
 
index d560d1b3aef0b5008cc55e30df7b51ecbd368f0b..0266627983888b65f5f2cc53cff8332ee1932947 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: mlvalues.h 12000 2012-01-07 20:55:28Z lefessan $ */
 
 #ifndef CAML_MLVALUES_H
 #define CAML_MLVALUES_H
index 7d09105b78c09773aa75f868d6e0e70f12d5f7c7..ac784a349566194af504d5a70df0cd46c7d0a493 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: obj.c 12149 2012-02-10 16:15:24Z doligez $ */
 
 /* Operations on objects */
 
index 902ea2de654e8e750b9db8c3e09c89aa39ac12d9..6beebc0209b6626578be24ef88464d4609a0ab67 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: osdeps.h 11156 2011-07-27 14:17:02Z doligez $ */
 
 /* Operating system - specific stuff */
 
index 3d5ea83323a9fd397e2ce23c84518a60b43e947c..0cde1df1bced7f4485c3a0bcb399858e6f41a52b 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: parsing.c 11927 2011-12-21 16:31:01Z xleroy $ */
 
 /* The PDA automaton for parsers generated by camlyacc */
 
index 3d7bb6d82a7ff1540910c538663fc4697b2ad27b..b65da503723e665dc496a27986fca11bd7b1939c 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: prims.h 11156 2011-07-27 14:17:02Z doligez $ */
 
 /* Interface with C primitives. */
 
index e891d9c67714c937786d67b3366a87ef37ab04b5..f88ecef14dec0ba266cfb996db7369f454f439d9 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: printexc.c 11927 2011-12-21 16:31:01Z xleroy $ */
 
 /* Print an uncaught exception and abort */
 
index 4624086cb33516d5c4753ab4960b4aacc1d0c2fe..025e0322146c77fd92037f9d6b4b833f2dcfc6d1 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: printexc.h 12000 2012-01-07 20:55:28Z lefessan $ */
 
 #ifndef CAML_PRINTEXC_H
 #define CAML_PRINTEXC_H
index a48b6f255882272b6940ad165c30883bf93f5cc2..e73dd7e6dca2da32b38036f360ad76b41ac25b15 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: reverse.h 11156 2011-07-27 14:17:02Z doligez $ */
 
 /* Swap byte-order in 16, 32, and 64-bit integers or floats */
 
index 8a4d23b33d982c00776ef47caac9ca37ab6e710f..679ddba98a06c7ee8fb53ed8f9027d6ec7fa6758 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: roots.c 11156 2011-07-27 14:17:02Z doligez $ */
 
 /* To walk the memory roots for garbage collection */
 
index f2d3bd69400dd83ba6ae837599366007cb767376..054b979c1d0a107f4805bbb72a26215f901e2475 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: roots.h 11156 2011-07-27 14:17:02Z doligez $ */
 
 #ifndef CAML_ROOTS_H
 #define CAML_ROOTS_H
index 40ba0ab5e7202fccc9c8f1b9e441d5e6dcf74e63..ddc0f222492ce0118825bb6ecf26534d00b12ceb 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: signals.c 11156 2011-07-27 14:17:02Z doligez $ */
 
 /* Signal handling, code common to the bytecode and native systems */
 
index fb03b30dd55ad32c30d1eeb4292fe7227d5dcbf0..1df392ca67acbbf8e594ec9a6f4721728e2aff9a 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: signals.h 12000 2012-01-07 20:55:28Z lefessan $ */
 
 #ifndef CAML_SIGNALS_H
 #define CAML_SIGNALS_H
index f52ee5a455e2eed9f2ef3d1b1afd0cff38d46868..6e4d7f3f97ef13462e0966f3c6b8d12031187d98 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: signals_byt.c 11156 2011-07-27 14:17:02Z doligez $ */
 
 /* Signal handling, code specific to the bytecode interpreter */
 
index 0308d3c1f0adb804d229f0b6d681448700fa8819..b8e9ff522d8b42c9117fa6bc66b80b5188e07ccc 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: signals_machdep.h 11156 2011-07-27 14:17:02Z doligez $ */
 
 /* Processor-specific operation: atomic "read and clear" */
 
index 5f7a871d04c20dd02f032ba266b8375d9389046d..4fdb463a7d54a68ee8c4466b1ab6ff0477154413 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: stacks.c 11156 2011-07-27 14:17:02Z doligez $ */
 
 /* To initialize and resize the stacks */
 
index f8469572d82fa8dd6f3e079ff2e307fd642c233a..73f08d291386fd56fba216084b5f30d457617526 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: stacks.h 11156 2011-07-27 14:17:02Z doligez $ */
 
 /* structure of the stacks */
 
index feb5029ae960228c4664afa3c48567becd9dbd33..5f35e877a2ff96ab08f028c568efd4c6c0250deb 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: startup.c 12215 2012-03-10 01:46:37Z meyer $ */
 
 /* Start-up code */
 
index 5a42a73aaf49ea815cde9d2be2d24921bc7b605a..d0409ceca8b035f0e569c07f64f82afc304278c6 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: startup.h 11156 2011-07-27 14:17:02Z doligez $ */
 
 #ifndef CAML_STARTUP_H
 #define CAML_STARTUP_H
index 3941cae17dd2e3e6223fafef8b33bbfd8a3a90fc..7daea00fb44e14277abf14a83160974f27b2ed38 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: str.c 11156 2011-07-27 14:17:02Z doligez $ */
 
 /* Operations on strings */
 
index ce364d8c1a35d22a001c861fec8b4c5e4ddb58a0..7a4338c29ea80c860042c8157506155e000e1b65 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: sys.c 12242 2012-03-14 15:27:58Z xleroy $ */
 
 /* Basic system calls */
 
index c6f5d3204b3e8ff99c340c25442ca5c2268afd0d..ada59cc7c4dee9032b9fd2bf887fcf21e421ecf4 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: sys.h 11156 2011-07-27 14:17:02Z doligez $ */
 
 #ifndef CAML_SYS_H
 #define CAML_SYS_H
index 67975696799f62e8a5091d07f14ec763c193f68b..f537b3e7e7b1342ba57f3c46b8498c5a5c3c94b8 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: terminfo.c 11156 2011-07-27 14:17:02Z doligez $ */
 
 /* Read and output terminal commands */
 
index 0c3309b3937112094455af43f61058f2c2ba895c..2077d3bcf4e1306f7b11787599ce00666395c62f 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: ui.h 11156 2011-07-27 14:17:02Z doligez $ */
 
 /* Function declarations for non-Unix user interfaces */
 
index 664c32b18c288319ed0048a57f1ed52834a93c0a..7d24ef4b7608016a06723e5129371b8e83ea4b4b 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: unix.c 11156 2011-07-27 14:17:02Z doligez $ */
 
 /* Unix-specific stuff */
 
index efdb15e9c4091344dd19ae912ae16fec730968a3..2b63455efba69a6deca2e73a4970fcf481979064 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: weak.c 11156 2011-07-27 14:17:02Z doligez $ */
 
 /* Operations on weak arrays */
 
index a30001a7e873e040f86c8de2dcc5373072bea05a..4defaf540e61d51a570a1f3ec777816b3478d17f 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: weak.h 11156 2011-07-27 14:17:02Z doligez $ */
 
 /* Operations on weak arrays */
 
index 4cc38415291bd915c64fee3caf201e95df969c97..cc0f046bf622d1587ea607eb1d59aee4d462a03c 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: win32.c 12242 2012-03-14 15:27:58Z xleroy $ */
 
 /* Win32-specific stuff */
 
index def7f196a25302b5d02a2839ea1a74d98ba27e27..c1b5f1d90613c8070a036e1e38c94566790c13e1 100644 (file)
@@ -106,7 +106,8 @@ module Make (Syntax : Sig.Camlp4Syntax) = struct
           "Cannot print %S this identifier does not respect OCaml lexing rules (%s)"
           str (Lexer.Error.to_string exn)) ];
 
-  value ocaml_char x = x;
+  value ocaml_char x =
+      match x with [ "'" -> "\\'" | c -> c ];
 
   value rec get_expr_args a al =
     match a with
index b91f8ea7c9007269d372908810f6fde8bdc0385b..33a85f3d0fd1870ba9f93f0df96cb121271f63f2 100644 (file)
@@ -190,6 +190,8 @@ module Make (Syntax : Sig.Camlp4Syntax) = struct
       }
     | <:ctyp< $t1$ : mutable $t2$ >> ->
         pp f "@[%a :@ mutable %a@]" o#ctyp t1 o#ctyp t2
+    | <:ctyp< $t1$ == $t2$ >> ->
+        pp f "@[<2>%a ==@ %a@]" o#simple_ctyp t1 o#ctyp t2
     | t -> super#ctyp f t ];
 
     method simple_ctyp f t =
index e73e875ff9727fcd81777335f5723e338163b0ae..2838083fd1c124fb08d68f34b0b83acbe56d5904 100644 (file)
@@ -57,6 +57,8 @@ module Make (Ast : Sig.Camlp4Ast) = struct
   value mkloc = Loc.to_ocaml_location;
   value mkghloc loc = Loc.to_ocaml_location (Loc.ghostify loc);
 
+  value with_loc txt loc = Camlp4_import.Location.mkloc txt (mkloc loc);
+
   value mktyp loc d = {ptyp_desc = d; ptyp_loc = mkloc loc};
   value mkpat loc d = {ppat_desc = d; ppat_loc = mkloc loc};
   value mkghpat loc d = {ppat_desc = d; ppat_loc = mkghloc loc};
@@ -67,7 +69,10 @@ module Make (Ast : Sig.Camlp4Ast) = struct
   value mkstr loc d = {pstr_desc = d; pstr_loc = mkloc loc};
   value mkfield loc d = {pfield_desc = d; pfield_loc = mkloc loc};
   value mkcty loc d = {pcty_desc = d; pcty_loc = mkloc loc};
-  value mkpcl loc d = {pcl_desc = d; pcl_loc = mkloc loc};
+  value mkcl loc d = {pcl_desc = d; pcl_loc = mkloc loc};
+  value mkcf loc d = { pcf_desc = d; pcf_loc = mkloc loc; };
+  value mkctf loc d = { pctf_desc = d; pctf_loc = mkloc loc; };
+
   value mkpolytype t =
     match t.ptyp_desc with
     [ Ptyp_poly _ _ -> t
@@ -85,6 +90,9 @@ module Make (Ast : Sig.Camlp4Ast) = struct
     | _ -> assert False ];
 
   value lident s = Lident s;
+  value lident_with_loc s loc = with_loc (Lident s) loc;
+
+
   value ldot l s = Ldot l s;
   value lapply l s = Lapply l s;
 
@@ -106,17 +114,17 @@ module Make (Ast : Sig.Camlp4Ast) = struct
     }
   ;
 
-  value array_function str name =
+  value array_function_no_loc str name =
     ldot (lident str) (if Camlp4_config.unsafe.val then "unsafe_" ^ name else name)
   ;
-
+  value array_function loc str name = with_loc (array_function_no_loc str name) loc;
   value mkrf =
     fun
     [ <:rec_flag< rec >> -> Recursive
     | <:rec_flag<>> -> Nonrecursive
     | _ -> assert False ];
 
-  value mkli s = loop lident
+  value mkli sloc s list = with_loc (loop lident list) sloc
     where rec loop f =
       fun
       [ [i :: il] -> loop (ldot (f i)) il
@@ -161,18 +169,20 @@ module Make (Ast : Sig.Camlp4Ast) = struct
       | _ -> error (loc_of_ident i) "invalid long identifier" ]
     in self i None;
 
-  value ident ?conv_lid i = fst (ident_tag ?conv_lid i);
+  value ident_noloc ?conv_lid i = fst (ident_tag ?conv_lid i);
+  value ident ?conv_lid  i =
+        with_loc (ident_noloc ?conv_lid i) (loc_of_ident i);
 
-  value long_lident msg i =
-    match ident_tag i with
-    [ (i, `lident) -> i
-    | _ -> error (loc_of_ident i) msg ]
+  value long_lident msg id =
+    match ident_tag id with
+    [ (i, `lident) -> with_loc i (loc_of_ident id)
+    | _ -> error (loc_of_ident id) msg ]
   ;
 
   value long_type_ident = long_lident "invalid long identifier type";
   value long_class_ident = long_lident "invalid class name";
 
-  value long_uident ?(conv_con = fun x -> x) i =
+  value long_uident_noloc ?(conv_con = fun x -> x) i =
     match ident_tag i with
     [ (Ldot i s, `uident) -> ldot i (conv_con s)
     | (Lident s, `uident) -> lident (conv_con s)
@@ -180,9 +190,12 @@ module Make (Ast : Sig.Camlp4Ast) = struct
     | _ -> error (loc_of_ident i) "uppercase identifier expected" ]
   ;
 
+  value long_uident ?conv_con i =
+     with_loc (long_uident_noloc ?conv_con i) (loc_of_ident i);
+
   value rec ctyp_long_id_prefix t =
     match t with
-    [ <:ctyp< $id:i$ >> -> ident i
+    [ <:ctyp< $id:i$ >> -> ident_noloc i
     | <:ctyp< $m1$ $m2$ >> ->
         let li1 = ctyp_long_id_prefix m1 in
         let li2 = ctyp_long_id_prefix m2 in
@@ -318,20 +331,21 @@ module Make (Ast : Sig.Camlp4Ast) = struct
     | _ -> assert False ];
   value mktrecord =
     fun
-    [ <:ctyp@loc< $lid:s$ : mutable $t$ >> ->
-        (s, Mutable, mkpolytype (ctyp t), mkloc loc)
-    | <:ctyp@loc< $lid:s$ : $t$ >> ->
-        (s, Immutable, mkpolytype (ctyp t), mkloc loc)
+    [ <:ctyp@loc< $id:(<:ident@sloc< $lid:s$ >>)$ : mutable $t$ >> ->
+        (with_loc s sloc, Mutable, mkpolytype (ctyp t), mkloc loc)
+    | <:ctyp@loc< $id:(<:ident@sloc< $lid:s$ >>)$ : $t$ >> ->
+        (with_loc s sloc, Immutable, mkpolytype (ctyp t), mkloc loc)
     | _ -> assert False (*FIXME*) ];
   value mkvariant =
     fun
-    [ <:ctyp@loc< $uid:s$ >> -> (conv_con s, [], None, mkloc loc)
-    | <:ctyp@loc< $uid:s$ of $t$ >> ->
-        (conv_con s, List.map ctyp (list_of_ctyp t []), None, mkloc loc)
-    | <:ctyp@loc< $uid:s$ : ($t$ -> $u$) >> ->
-        (conv_con s, List.map ctyp (list_of_ctyp t []), Some (ctyp u), mkloc loc)
-    | <:ctyp@loc< $uid:s$ : $t$ >> ->
-        (conv_con s, [], Some (ctyp t), mkloc loc)
+    [ <:ctyp@loc< $id:(<:ident@sloc< $uid:s$ >>)$ >> ->
+      (with_loc (conv_con s) sloc, [], None, mkloc loc)
+    | <:ctyp@loc< $id:(<:ident@sloc< $uid:s$ >>)$ of $t$ >> ->
+      (with_loc (conv_con s) sloc, List.map ctyp (list_of_ctyp t []), None, mkloc loc)
+    | <:ctyp@loc< $id:(<:ident@sloc< $uid:s$ >>)$ : ($t$ -> $u$) >> ->
+      (with_loc (conv_con s) sloc, List.map ctyp (list_of_ctyp t []), Some (ctyp u), mkloc loc)
+    | <:ctyp@loc< $id:(<:ident@sloc< $uid:s$ >>)$ : $t$ >> ->
+      (with_loc (conv_con s) sloc, [], Some (ctyp t), mkloc loc)
 
     | _ -> assert False (*FIXME*) ];
   value rec type_decl tl cl loc m pflag =
@@ -359,7 +373,7 @@ module Make (Ast : Sig.Camlp4Ast) = struct
 
   value type_decl tl cl t loc = type_decl tl cl loc None False t;
 
-  value mkvalue_desc t p = {pval_type = ctyp t; pval_prim = p};
+  value mkvalue_desc loc t p = {pval_type = ctyp t; pval_prim = p; pval_loc = mkloc loc};
 
   value rec list_of_meta_list =
     fun
@@ -395,20 +409,20 @@ module Make (Ast : Sig.Camlp4Ast) = struct
   value rec optional_type_parameters t acc =
     match t with
     [ <:ctyp< $t1$ $t2$ >> -> optional_type_parameters t1 (optional_type_parameters t2 acc)
-    | <:ctyp< +'$s$ >> -> [(Some s, (True, False)) :: acc]
+    | <:ctyp@loc< +'$s$ >> -> [(Some (with_loc s loc), (True, False)) :: acc]
     | Ast.TyAnP _loc  -> [(None, (True, False)) :: acc]
-    | <:ctyp< -'$s$ >> -> [(Some s, (False, True)) :: acc]
+    | <:ctyp@loc< -'$s$ >> -> [(Some (with_loc s loc), (False, True)) :: acc]
     | Ast.TyAnM _loc -> [(None, (False, True)) :: acc]
-    | <:ctyp< '$s$ >> -> [(Some s, (False, False)) :: acc]
+    | <:ctyp@loc< '$s$ >> -> [(Some (with_loc s loc), (False, False)) :: acc]
     | Ast.TyAny _loc -> [(None, (False, False)) :: acc]
     | _ -> assert False ];
 
   value rec class_parameters t acc =
     match t with
     [ <:ctyp< $t1$, $t2$ >> -> class_parameters t1 (class_parameters t2 acc)
-    | <:ctyp< +'$s$ >> -> [(s, (True, False)) :: acc]
-    | <:ctyp< -'$s$ >> -> [(s, (False, True)) :: acc]
-    | <:ctyp< '$s$ >> -> [(s, (False, False)) :: acc]
+    | <:ctyp@loc< +'$s$ >> -> [(with_loc s loc, (True, False)) :: acc]
+    | <:ctyp@loc< -'$s$ >> -> [(with_loc s loc, (False, True)) :: acc]
+    | <:ctyp@loc< '$s$ >> -> [(with_loc s loc, (False, False)) :: acc]
     | _ -> assert False ];
 
   value rec type_parameters_and_type_name t acc =
@@ -470,7 +484,8 @@ module Make (Ast : Sig.Camlp4Ast) = struct
 
   value rec patt =
     fun
-    [ <:patt@loc< $lid:s$ >> -> mkpat loc (Ppat_var s)
+    [ <:patt@loc< $id:(<:ident@sloc< $lid:s$ >>)$ >> ->
+      mkpat loc (Ppat_var (with_loc s sloc))
     | <:patt@loc< $id:i$ >> ->
         let p = Ppat_construct (long_uident ~conv_con i)
                   None (constructors_arity ())
@@ -478,15 +493,15 @@ module Make (Ast : Sig.Camlp4Ast) = struct
     | PaAli loc p1 p2 ->
         let (p, i) =
           match (p1, p2) with
-          [ (p, <:patt< $lid:s$ >>) -> (p, s)
-          | (<:patt< $lid:s$ >>, p) -> (p, s)
+          [ (p, <:patt< $id:(<:ident@sloc< $lid:s$ >>)$ >>) -> (p, with_loc s sloc)
+          | (<:patt< $id:(<:ident@sloc< $lid:s$ >>)$ >>, p) -> (p, with_loc s sloc)
           | _ -> error loc "invalid alias pattern" ]
         in
         mkpat loc (Ppat_alias (patt p) i)
     | PaAnt loc _ -> error loc "antiquotation not allowed here"
     | PaAny loc -> mkpat loc Ppat_any
-    | <:patt@loc< $uid:s$ ($tup:<:patt@loc_any< _ >>$) >> ->
-        mkpat loc (Ppat_construct (lident (conv_con s))
+    | <:patt@loc< $id:(<:ident@sloc< $uid:s$ >>)$ ($tup:<:patt@loc_any< _ >>$) >> ->
+        mkpat loc (Ppat_construct (lident_with_loc (conv_con s) sloc)
               (Some (mkpat loc_any Ppat_any)) False)
     | PaApp loc _ _ as f ->
         let (f, al) = patt_fa [] f in
@@ -560,7 +575,7 @@ module Make (Ast : Sig.Camlp4Ast) = struct
     | PaTyp loc i -> mkpat loc (Ppat_type (long_type_ident i))
     | PaVrn loc s -> mkpat loc (Ppat_variant (conv_con s) None)
     | PaLaz loc p -> mkpat loc (Ppat_lazy (patt p))
-    | PaMod loc m -> mkpat loc (Ppat_unpack m)
+    | PaMod loc m -> mkpat loc (Ppat_unpack (with_loc m loc))
     | PaEq _ _ _ | PaSem _ _ _ | PaCom _ _ _ | PaNil _ as p ->
         error (loc_of_patt p) "invalid pattern" ]
   and mklabpat =
@@ -612,9 +627,9 @@ module Make (Ast : Sig.Camlp4Ast) = struct
     [ <:ctyp<>> -> acc
     | t -> list_of_ctyp t acc ];
 
-value varify_constructors var_names = 
-  let rec loop t = 
-    let desc = 
+value varify_constructors var_names =
+  let rec loop t =
+    let desc =
       match t.ptyp_desc with
          [
        Ptyp_any -> Ptyp_any
@@ -622,27 +637,27 @@ value varify_constructors var_names =
       | Ptyp_arrow label core_type core_type' ->
          Ptyp_arrow label (loop core_type) (loop core_type')
       | Ptyp_tuple lst -> Ptyp_tuple (List.map loop lst)
-      | Ptyp_constr (Lident s) [] when List.mem s var_names ->
+      | Ptyp_constr ({ txt = Lident s }) [] when List.mem s var_names ->
          Ptyp_var ("&" ^ s)
       | Ptyp_constr longident lst ->
-         Ptyp_constr longident (List.map loop lst) 
+         Ptyp_constr longident (List.map loop lst)
       | Ptyp_object lst ->
-         Ptyp_object (List.map loop_core_field lst)                
+         Ptyp_object (List.map loop_core_field lst)
       | Ptyp_class longident lst lbl_list ->
-         Ptyp_class (longident, List.map loop lst, lbl_list) 
+         Ptyp_class (longident, List.map loop lst, lbl_list)
       | Ptyp_alias core_type string ->
-         Ptyp_alias(loop core_type, string) 
-      | Ptyp_variant row_field_list flag lbl_lst_option -> 
-         Ptyp_variant(List.map loop_row_field row_field_list, flag, lbl_lst_option) 
+         Ptyp_alias(loop core_type, string)
+      | Ptyp_variant row_field_list flag lbl_lst_option ->
+         Ptyp_variant(List.map loop_row_field row_field_list, flag, lbl_lst_option)
       | Ptyp_poly string_lst core_type ->
-         Ptyp_poly(string_lst, loop core_type) 
+         Ptyp_poly(string_lst, loop core_type)
       | Ptyp_package longident lst ->
          Ptyp_package(longident,List.map (fun (n,typ) -> (n,loop typ) ) lst)
 ]
     in
     {(t) with ptyp_desc = desc}
-  and loop_core_field t = 
-    let desc = 
+  and loop_core_field t =
+    let desc =
       match t.pfield_desc with
       [ Pfield(n,typ) ->
          Pfield(n,loop typ)
@@ -650,10 +665,10 @@ value varify_constructors var_names =
          Pfield_var]
     in
     { (t) with pfield_desc=desc}
-  and loop_row_field x  = 
+  and loop_row_field x  =
     match x with
       [ Rtag(label,flag,lst) ->
-         Rtag(label,flag,List.map loop lst) 
+         Rtag(label,flag,List.map loop lst)
       | Rinherit t ->
          Rinherit (loop t) ]
   in
@@ -665,15 +680,15 @@ value varify_constructors var_names =
     fun
     [ <:expr@loc< $x$.val >> ->
         mkexp loc
-          (Pexp_apply (mkexp loc (Pexp_ident (Lident "!"))) [("", expr x)])
+          (Pexp_apply (mkexp loc (Pexp_ident (lident_with_loc "!" loc))) [("", expr x)])
     | ExAcc loc _ _ | <:expr@loc< $id:<:ident< $_$ . $_$ >>$ >> as e ->
         let (e, l) =
           match sep_expr_acc [] e with
-          [ [(loc, ml, <:expr< $uid:s$ >>) :: l] ->
+          [ [(loc, ml, <:expr@sloc< $uid:s$ >>) :: l] ->
               let ca = constructors_arity () in
-              (mkexp loc (Pexp_construct (mkli (conv_con s) ml) None ca), l)
-          | [(loc, ml, <:expr< $lid:s$ >>) :: l] ->
-              (mkexp loc (Pexp_ident (mkli s ml)), l)
+              (mkexp loc (Pexp_construct (mkli sloc (conv_con s) ml) None ca), l)
+          | [(loc, ml, <:expr@sloc< $lid:s$ >>) :: l] ->
+              (mkexp loc (Pexp_ident (mkli sloc s ml)), l)
           | [(_, [], e) :: l] -> (expr e, l)
           | _ -> error loc "bad ast in expression" ]
         in
@@ -681,9 +696,9 @@ value varify_constructors var_names =
           List.fold_left
             (fun (loc_bp, e1) (loc_ep, ml, e2) ->
               match e2 with
-              [ <:expr< $lid:s$ >> ->
+              [ <:expr@sloc< $lid:s$ >> ->
                   let loc = Loc.merge loc_bp loc_ep
-                  in  (loc, mkexp loc (Pexp_field e1 (mkli (conv_lab s) ml)))
+                  in  (loc, mkexp loc (Pexp_field e1 (mkli sloc (conv_lab s) ml)))
               | _ -> error (loc_of_expr e2) "lowercase identifier expected" ])
             (loc, e) l
         in
@@ -717,7 +732,7 @@ value varify_constructors var_names =
         | _ -> mkexp loc (Pexp_apply (expr f) al) ]
     | ExAre loc e1 e2 ->
         mkexp loc
-          (Pexp_apply (mkexp loc (Pexp_ident (array_function "Array" "get")))
+          (Pexp_apply (mkexp loc (Pexp_ident (array_function loc "Array" "get")))
             [("", expr e1); ("", expr e2)])
     | ExArr loc e -> mkexp loc (Pexp_array (List.map expr (list_of_expr e [])))
     | ExAsf loc -> mkexp loc Pexp_assertfalse
@@ -725,19 +740,19 @@ value varify_constructors var_names =
         let e =
           match e with
           [ <:expr@loc< $x$.val >> ->
-              Pexp_apply (mkexp loc (Pexp_ident (Lident ":=")))
+              Pexp_apply (mkexp loc (Pexp_ident (lident_with_loc ":=" loc)))
                 [("", expr x); ("", expr v)]
           | ExAcc loc _ _ ->
               match (expr e).pexp_desc with
               [ Pexp_field e lab -> Pexp_setfield e lab (expr v)
               | _ -> error loc "bad record access" ]
-          | ExAre _ e1 e2 ->
-              Pexp_apply (mkexp loc (Pexp_ident (array_function "Array" "set")))
+          | ExAre loc e1 e2 ->
+              Pexp_apply (mkexp loc (Pexp_ident (array_function loc "Array" "set")))
                 [("", expr e1); ("", expr e2); ("", expr v)]
-          | <:expr< $lid:lab$ >> -> Pexp_setinstvar lab (expr v)
-          | ExSte _ e1 e2 ->
+          | <:expr< $id:(<:ident@lloc< $lid:lab$ >>)$ >> -> Pexp_setinstvar (with_loc lab lloc) (expr v)
+          | ExSte loc e1 e2 ->
               Pexp_apply
-                (mkexp loc (Pexp_ident (array_function "String" "set")))
+                (mkexp loc (Pexp_ident (array_function loc "String" "set")))
                 [("", expr e1); ("", expr e2); ("", expr v)]
           | _ -> error loc "bad left part of assignment" ]
         in
@@ -754,7 +769,7 @@ value varify_constructors var_names =
     | ExFlo loc s -> mkexp loc (Pexp_constant (Const_float (remove_underscores s)))
     | ExFor loc i e1 e2 df el ->
         let e3 = ExSeq loc el in
-        mkexp loc (Pexp_for i (expr e1) (expr e2) (mkdirection df) (expr e3))
+        mkexp loc (Pexp_for (with_loc i loc) (expr e1) (expr e2) (mkdirection df) (expr e3))
     | <:expr@loc< fun [ $PaLab _ lab po$ when $w$ -> $e$ ] >> ->
         mkexp loc
           (Pexp_function lab None
@@ -790,7 +805,7 @@ value varify_constructors var_names =
     | ExLaz loc e -> mkexp loc (Pexp_lazy (expr e))
     | ExLet loc rf bi e ->
         mkexp loc (Pexp_let (mkrf rf) (binding bi []) (expr e))
-    | ExLmd loc i me e -> mkexp loc (Pexp_letmodule i (module_expr me) (expr e))
+    | ExLmd loc i me e -> mkexp loc (Pexp_letmodule (with_loc i loc) (module_expr me) (expr e))
     | ExMat loc e a -> mkexp loc (Pexp_match (expr e) (match_case a []))
     | ExNew loc id -> mkexp loc (Pexp_new (long_type_ident id))
     | ExObj loc po cfl ->
@@ -800,7 +815,7 @@ value varify_constructors var_names =
           | p -> p ]
         in
         let cil = class_str_item cfl [] in
-        mkexp loc (Pexp_object (patt p, cil))
+        mkexp loc (Pexp_object { pcstr_pat = patt p; pcstr_fields = cil })
     | ExOlb loc _ _ -> error loc "labeled expression not allowed here"
     | ExOvr loc iel -> mkexp loc (Pexp_override (mkideexp iel []))
     | ExRec loc lel eo ->
@@ -825,7 +840,7 @@ value varify_constructors var_names =
     | ExSnd loc e s -> mkexp loc (Pexp_send (expr e) s)
     | ExSte loc e1 e2 ->
         mkexp loc
-          (Pexp_apply (mkexp loc (Pexp_ident (array_function "String" "get")))
+          (Pexp_apply (mkexp loc (Pexp_ident (array_function loc "String" "get")))
             [("", expr e1); ("", expr e2)])
     | ExStr loc s ->
         mkexp loc (Pexp_constant (Const_string (string_of_string_token loc s)))
@@ -835,12 +850,12 @@ value varify_constructors var_names =
     | <:expr@loc< ($tup:_$) >> -> error loc "singleton tuple"
     | ExTyc loc e t -> mkexp loc (Pexp_constraint (expr e) (Some (ctyp t)) None)
     | <:expr@loc< () >> ->
-        mkexp loc (Pexp_construct (lident "()") None True)
+        mkexp loc (Pexp_construct (lident_with_loc "()" loc) None True)
     | <:expr@loc< $lid:s$ >> ->
-        mkexp loc (Pexp_ident (lident s))
+        mkexp loc (Pexp_ident (lident_with_loc s loc))
     | <:expr@loc< $uid:s$ >> ->
         (* let ca = constructors_arity () in *)
-        mkexp loc (Pexp_construct (lident (conv_con s)) None True)
+        mkexp loc (Pexp_construct (lident_with_loc (conv_con s) loc) None True)
     | ExVrn loc s -> mkexp loc (Pexp_variant (conv_con s) None)
     | ExWhi loc e1 el ->
         let e2 = ExSeq loc el in
@@ -875,10 +890,10 @@ value varify_constructors var_names =
     match x with
     [ <:binding< $x$ and $y$ >> ->
          binding x (binding y acc)
-    | <:binding@_loc< $lid:bind_name$ = ($e$ : $TyTypePol _ vs ty$) >> ->
+    | <:binding@_loc< $pat:( <:patt@sloc< $lid:bind_name$ >> )$ = ($e$ : $TyTypePol _ vs ty$) >> ->
       (* this code is not pretty because it is temporary *)
-      let rec id_to_string x = 
-       match x with 
+      let rec id_to_string x =
+       match x with
            [ <:ctyp< $lid:x$ >> -> [x]
            | <:ctyp< $x$ $y$ >> -> (id_to_string x) @ (id_to_string y)
            | _ -> assert False]
@@ -889,15 +904,16 @@ value varify_constructors var_names =
       let mkexp = mkexp _loc in
       let mkpat = mkpat _loc in
       let e = mkexp (Pexp_constraint (expr e) (Some (ctyp ty)) None) in
-      let rec mk_newtypes x = 
+      let rec mk_newtypes x =
        match x with
          [ [newtype :: []] -> mkexp (Pexp_newtype(newtype, e))
          | [newtype :: newtypes] ->
            mkexp(Pexp_newtype (newtype,mk_newtypes newtypes))
          | [] -> assert False]
       in
-      let pat = 
-       mkpat (Ppat_constraint (mkpat (Ppat_var bind_name), mktyp _loc (Ptyp_poly ampersand_vars ty')))
+      let pat =
+       mkpat (Ppat_constraint (mkpat (Ppat_var (with_loc bind_name sloc)),
+                                mktyp _loc (Ptyp_poly ampersand_vars ty')))
       in
       let e = mk_newtypes vars in
       [( pat, e) :: acc]
@@ -928,13 +944,13 @@ value varify_constructors var_names =
     [ <:rec_binding<>> -> acc
     | <:rec_binding< $x$; $y$ >> ->
          mkideexp x (mkideexp y acc)
-    | <:rec_binding< $lid:s$ = $e$ >> -> [(s, expr e) :: acc]
+    | <:rec_binding< $id:( <:ident@sloc< $lid:s$ >>)$ = $e$ >> -> [(with_loc s sloc, expr e) :: acc]
     | _ -> assert False ]
   and mktype_decl x acc =
     match x with
     [ <:ctyp< $x$ and $y$ >> ->
          mktype_decl x (mktype_decl y acc)
-    | Ast.TyDcl loc c tl td cl ->
+    | Ast.TyDcl cloc c tl td cl ->
         let cl =
           List.map
             (fun (t1, t2) ->
@@ -942,14 +958,15 @@ value varify_constructors var_names =
               (ctyp t1, ctyp t2, mkloc loc))
             cl
         in
-        [(c, type_decl (List.fold_right optional_type_parameters tl []) cl td loc) :: acc]
+        [(with_loc c cloc,
+          type_decl (List.fold_right optional_type_parameters tl []) cl td cloc) :: acc]
     | _ -> assert False ]
   and module_type =
     fun
     [ <:module_type@loc<>> -> error loc "abstract/nil module type not allowed here"
     | <:module_type@loc< $id:i$ >> -> mkmty loc (Pmty_ident (long_uident i))
     | <:module_type@loc< functor ($n$ : $nt$) -> $mt$ >> ->
-        mkmty loc (Pmty_functor n (module_type nt) (module_type mt))
+        mkmty loc (Pmty_functor (with_loc n loc) (module_type nt) (module_type mt))
     | <:module_type@loc< '$_$ >> -> error loc "module type variable not allowed here"
     | <:module_type@loc< sig $sl$ end >> ->
         mkmty loc (Pmty_signature (sig_item sl []))
@@ -970,14 +987,14 @@ value varify_constructors var_names =
     | <:sig_item< $sg1$; $sg2$ >> -> sig_item sg1 (sig_item sg2 l)
     | SgDir _ _ _ -> l
     | <:sig_item@loc< exception $uid:s$ >> ->
-        [mksig loc (Psig_exception (conv_con s) []) :: l]
+        [mksig loc (Psig_exception (with_loc (conv_con s) loc) []) :: l]
     | <:sig_item@loc< exception $uid:s$ of $t$ >> ->
-        [mksig loc (Psig_exception (conv_con s)
+        [mksig loc (Psig_exception (with_loc (conv_con s) loc)
                                    (List.map ctyp (list_of_ctyp t []))) :: l]
     | SgExc _ _ -> assert False (*FIXME*)
-    | SgExt loc n t sl -> [mksig loc (Psig_value n (mkvalue_desc t (list_of_meta_list sl))) :: l]
+    | SgExt loc n t sl -> [mksig loc (Psig_value (with_loc n loc) (mkvalue_desc loc t (list_of_meta_list sl))) :: l]
     | SgInc loc mt -> [mksig loc (Psig_include (module_type mt)) :: l]
-    | SgMod loc n mt -> [mksig loc (Psig_module n (module_type mt)) :: l]
+    | SgMod loc n mt -> [mksig loc (Psig_module (with_loc n loc) (module_type mt)) :: l]
     | SgRecMod loc mb ->
         [mksig loc (Psig_recmodule (module_sig_binding mb [])) :: l]
     | SgMty loc n mt ->
@@ -986,25 +1003,25 @@ value varify_constructors var_names =
           [ MtQuo _ _ -> Pmodtype_abstract
           | _ -> Pmodtype_manifest (module_type mt) ]
         in
-        [mksig loc (Psig_modtype n si) :: l]
+        [mksig loc (Psig_modtype (with_loc n loc) si) :: l]
     | SgOpn loc id ->
         [mksig loc (Psig_open (long_uident id)) :: l]
     | SgTyp loc tdl -> [mksig loc (Psig_type (mktype_decl tdl [])) :: l]
-    | SgVal loc n t -> [mksig loc (Psig_value n (mkvalue_desc t [])) :: l]
+    | SgVal loc n t -> [mksig loc (Psig_value (with_loc n loc) (mkvalue_desc loc t [])) :: l]
     | <:sig_item@loc< $anti:_$ >> -> error loc "antiquotation in sig_item" ]
   and module_sig_binding x acc =
     match x with
     [ <:module_binding< $x$ and $y$ >> ->
         module_sig_binding x (module_sig_binding y acc)
-    | <:module_binding< $s$ : $mt$ >> ->
-        [(s, module_type mt) :: acc]
+    | <:module_binding@loc< $s$ : $mt$ >> ->
+        [(with_loc s loc, module_type mt) :: acc]
     | _ -> assert False ]
   and module_str_binding x acc =
     match x with
     [ <:module_binding< $x$ and $y$ >> ->
         module_str_binding x (module_str_binding y acc)
-    | <:module_binding< $s$ : $mt$ = $me$ >> ->
-        [(s, module_type mt, module_expr me) :: acc]
+    | <:module_binding@loc< $s$ : $mt$ = $me$ >> ->
+        [(with_loc s loc, module_type mt, module_expr me) :: acc]
     | _ -> assert False ]
   and module_expr =
     fun
@@ -1013,7 +1030,7 @@ value varify_constructors var_names =
     | <:module_expr@loc< $me1$ $me2$ >> ->
         mkmod loc (Pmod_apply (module_expr me1) (module_expr me2))
     | <:module_expr@loc< functor ($n$ : $mt$) -> $me$ >> ->
-        mkmod loc (Pmod_functor n (module_type mt) (module_expr me))
+        mkmod loc (Pmod_functor (with_loc n loc) (module_type mt) (module_expr me))
     | <:module_expr@loc< struct $sl$ end >> ->
         mkmod loc (Pmod_structure (str_item sl []))
     | <:module_expr@loc< ($me$ : $mt$) >> ->
@@ -1038,22 +1055,22 @@ value varify_constructors var_names =
     | <:str_item< $st1$; $st2$ >> -> str_item st1 (str_item st2 l)
     | StDir _ _ _ -> l
     | <:str_item@loc< exception $uid:s$ >> ->
-        [mkstr loc (Pstr_exception (conv_con s) []) :: l ]
+        [mkstr loc (Pstr_exception (with_loc (conv_con s) loc) []) :: l ]
     | <:str_item@loc< exception $uid:s$ of $t$ >> ->
-        [mkstr loc (Pstr_exception (conv_con s)
+        [mkstr loc (Pstr_exception (with_loc (conv_con s) loc)
                       (List.map ctyp (list_of_ctyp t []))) :: l ]
     | <:str_item@loc< exception $uid:s$ = $i$ >> ->
-        [mkstr loc (Pstr_exn_rebind (conv_con s) (ident i)) :: l ]
+        [mkstr loc (Pstr_exn_rebind (with_loc (conv_con s) loc) (ident i)) :: l ]
     | <:str_item@loc< exception $uid:_$ of $_$ = $_$ >> ->
         error loc "type in exception alias"
     | StExc _ _ _ -> assert False (*FIXME*)
     | StExp loc e -> [mkstr loc (Pstr_eval (expr e)) :: l]
-    | StExt loc n t sl -> [mkstr loc (Pstr_primitive n (mkvalue_desc t (list_of_meta_list sl))) :: l]
+    | StExt loc n t sl -> [mkstr loc (Pstr_primitive (with_loc n loc) (mkvalue_desc loc t (list_of_meta_list sl))) :: l]
     | StInc loc me -> [mkstr loc (Pstr_include (module_expr me)) :: l]
-    | StMod loc n me -> [mkstr loc (Pstr_module n (module_expr me)) :: l]
+    | StMod loc n me -> [mkstr loc (Pstr_module (with_loc n loc) (module_expr me)) :: l]
     | StRecMod loc mb ->
         [mkstr loc (Pstr_recmodule (module_str_binding mb [])) :: l]
-    | StMty loc n mt -> [mkstr loc (Pstr_modtype n (module_type mt)) :: l]
+    | StMty loc n mt -> [mkstr loc (Pstr_modtype (with_loc n loc) (module_type mt)) :: l]
     | StOpn loc id ->
         [mkstr loc (Pstr_open (long_uident id)) :: l]
     | StTyp loc tdl -> [mkstr loc (Pstr_type (mktype_decl tdl [])) :: l]
@@ -1078,7 +1095,11 @@ value varify_constructors var_names =
           | t -> t ]
         in
         let cil = class_sig_item ctfl [] in
-        mkcty loc (Pcty_signature (ctyp t, cil))
+        mkcty loc (Pcty_signature {
+          pcsig_self = ctyp t;
+          pcsig_fields = cil;
+          pcsig_loc = mkloc loc;
+        })
     | CtCon loc _ _ _ ->
         error loc "invalid virtual class inside a class type"
     | CtAnt _ _ | CtEq _ _ _ | CtCol _ _ _ | CtAnd _ _ _ | CtNil _ ->
@@ -1086,7 +1107,7 @@ value varify_constructors var_names =
 
   and class_info_class_expr ci =
     match ci with
-    [ CeEq _ (CeCon loc vir (IdLid _ name) params) ce ->
+    [ CeEq _ (CeCon loc vir (IdLid nloc name) params) ce ->
       let (loc_params, (params, variance)) =
         match params with
         [ <:ctyp<>> -> (loc, ([], []))
@@ -1094,15 +1115,15 @@ value varify_constructors var_names =
       in
       {pci_virt = mkvirtual vir;
        pci_params = (params, mkloc loc_params);
-       pci_name = name;
+       pci_name = with_loc name nloc;
        pci_expr = class_expr ce;
        pci_loc = mkloc loc;
        pci_variance = variance}
     | ce -> error (loc_of_class_expr ce) "bad class definition" ]
   and class_info_class_type ci =
     match ci with
-    [ CtEq _ (CtCon loc vir (IdLid _ name) params) ct |
-      CtCol _ (CtCon loc vir (IdLid _ name) params) ct ->
+    [ CtEq _ (CtCon loc vir (IdLid nloc name) params) ct |
+      CtCol _ (CtCon loc vir (IdLid nloc name) params) ct ->
       let (loc_params, (params, variance)) =
         match params with
         [ <:ctyp<>> -> (loc, ([], []))
@@ -1110,7 +1131,7 @@ value varify_constructors var_names =
       in
       {pci_virt = mkvirtual vir;
        pci_params = (params, mkloc loc_params);
-       pci_name = name;
+       pci_name = with_loc name nloc;
        pci_expr = class_type ct;
        pci_loc = mkloc loc;
        pci_variance = variance}
@@ -1119,39 +1140,39 @@ value varify_constructors var_names =
   and class_sig_item c l =
     match c with
     [ <:class_sig_item<>> -> l
-    | CgCtr loc t1 t2 -> [Pctf_cstr (ctyp t1, ctyp t2, mkloc loc) :: l]
+    | CgCtr loc t1 t2 -> [mkctf loc (Pctf_cstr (ctyp t1, ctyp t2)) :: l]
     | <:class_sig_item< $csg1$; $csg2$ >> ->
         class_sig_item csg1 (class_sig_item csg2 l)
-    | CgInh _ ct -> [Pctf_inher (class_type ct) :: l]
+    | CgInh loc ct -> [mkctf loc (Pctf_inher (class_type ct)) :: l]
     | CgMth loc s pf t ->
-        [Pctf_meth (s, mkprivate pf, mkpolytype (ctyp t), mkloc loc) :: l]
+        [mkctf loc (Pctf_meth (s, mkprivate pf, mkpolytype (ctyp t))) :: l]
     | CgVal loc s b v t ->
-        [Pctf_val (s, mkmutable b, mkvirtual v, ctyp t, mkloc loc) :: l]
+        [mkctf loc (Pctf_val (s, mkmutable b, mkvirtual v, ctyp t)) :: l]
     | CgVir loc s b t ->
-        [Pctf_virt (s, mkprivate b, mkpolytype (ctyp t), mkloc loc) :: l]
+        [mkctf loc (Pctf_virt (s, mkprivate b, mkpolytype (ctyp t))) :: l]
     | CgAnt _ _ -> assert False ]
   and class_expr =
     fun
     [ CeApp loc _ _ as c ->
         let (ce, el) = class_expr_fa [] c in
         let el = List.map label_expr el in
-        mkpcl loc (Pcl_apply (class_expr ce) el)
+        mkcl loc (Pcl_apply (class_expr ce) el)
     | CeCon loc ViNil id tl ->
-        mkpcl loc
+        mkcl loc
           (Pcl_constr (long_class_ident id) (List.map ctyp (list_of_opt_ctyp tl [])))
     | CeFun loc (PaLab _ lab po) ce ->
-        mkpcl loc
+        mkcl loc
           (Pcl_fun lab None (patt_of_lab loc lab po) (class_expr ce))
     | CeFun loc (PaOlbi _ lab p e) ce ->
         let lab = paolab lab p in
-        mkpcl loc (Pcl_fun ("?" ^ lab) (Some (expr e)) (patt p) (class_expr ce))
+        mkcl loc (Pcl_fun ("?" ^ lab) (Some (expr e)) (patt p) (class_expr ce))
     | CeFun loc (PaOlb _ lab p) ce ->
         let lab = paolab lab p in
-        mkpcl loc
+        mkcl loc
           (Pcl_fun ("?" ^ lab) None (patt_of_lab loc lab p) (class_expr ce))
-    | CeFun loc p ce -> mkpcl loc (Pcl_fun "" None (patt p) (class_expr ce))
+    | CeFun loc p ce -> mkcl loc (Pcl_fun "" None (patt p) (class_expr ce))
     | CeLet loc rf bi ce ->
-        mkpcl loc (Pcl_let (mkrf rf) (binding bi []) (class_expr ce))
+        mkcl loc (Pcl_let (mkrf rf) (binding bi []) (class_expr ce))
     | CeStr loc po cfl ->
         let p =
           match po with
@@ -1159,35 +1180,38 @@ value varify_constructors var_names =
           | p -> p ]
         in
         let cil = class_str_item cfl [] in
-        mkpcl loc (Pcl_structure (patt p, cil))
+        mkcl loc (Pcl_structure {
+          pcstr_pat = patt p;
+          pcstr_fields = cil;
+        })
     | CeTyc loc ce ct ->
-        mkpcl loc (Pcl_constraint (class_expr ce) (class_type ct))
+        mkcl loc (Pcl_constraint (class_expr ce) (class_type ct))
     | CeCon loc _ _ _ ->
         error loc "invalid virtual class inside a class expression"
     | CeAnt _ _ | CeEq _ _ _ | CeAnd _ _ _ | CeNil _ -> assert False ]
   and class_str_item c l =
     match c with
     [ CrNil _ -> l
-    | CrCtr loc t1 t2 -> [Pcf_cstr (ctyp t1, ctyp t2, mkloc loc) :: l]
+    | CrCtr loc t1 t2 -> [mkcf loc (Pcf_constr (ctyp t1, ctyp t2)) :: l]
     | <:class_str_item< $cst1$; $cst2$ >> ->
         class_str_item cst1 (class_str_item cst2 l)
     | CrInh loc ov ce pb ->
         let opb = if pb = "" then None else Some pb in
-        [Pcf_inher (override_flag loc ov) (class_expr ce) opb :: l]
-    | CrIni _ e -> [Pcf_init (expr e) :: l]
+        [mkcf loc (Pcf_inher (override_flag loc ov) (class_expr ce) opb) :: l]
+    | CrIni loc e -> [mkcf loc (Pcf_init (expr e)) :: l]
     | CrMth loc s ov pf e t ->
         let t =
           match t with
           [ <:ctyp<>> -> None
           | t -> Some (mkpolytype (ctyp t)) ] in
         let e = mkexp loc (Pexp_poly (expr e) t) in
-        [Pcf_meth (s, mkprivate pf, override_flag loc ov, e, mkloc loc) :: l]
+        [mkcf loc (Pcf_meth (with_loc s loc, mkprivate pf, override_flag loc ov, e)) :: l]
     | CrVal loc s ov mf e ->
-        [Pcf_val (s, mkmutable mf, override_flag loc ov, expr e, mkloc loc) :: l]
+        [mkcf loc (Pcf_val (with_loc s loc, mkmutable mf, override_flag loc ov, expr e)) :: l]
     | CrVir loc s pf t ->
-        [Pcf_virt (s, mkprivate pf, mkpolytype (ctyp t), mkloc loc) :: l]
+        [mkcf loc (Pcf_virt (with_loc s loc, mkprivate pf, mkpolytype (ctyp t))) :: l]
     | CrVvr loc s mf t ->
-        [Pcf_valvirt (s, mkmutable mf, ctyp t, mkloc loc) :: l]
+        [mkcf loc (Pcf_valvirt (with_loc s loc, mkmutable mf, ctyp t)) :: l]
     | CrAnt _ _ -> assert False ];
 
   value sig_item ast = sig_item ast [];
@@ -1200,7 +1224,7 @@ value varify_constructors var_names =
     | ExInt _ i -> Pdir_int (int_of_string i)
     | <:expr< True >> -> Pdir_bool True
     | <:expr< False >> -> Pdir_bool False
-    | e -> Pdir_ident (ident (ident_of_expr e)) ]
+    | e -> Pdir_ident (ident_noloc (ident_of_expr e)) ]
   ;
 
   value phrase =
index 2620729728a4c32edb92344e2b5913f2d48f975d..701e990d556aa279109e12e1b89adfe24f835b55 100644 (file)
@@ -211,7 +211,7 @@ module Eval = struct
     | [: `'b' :]  -> '\b'
     | [: `'\\' :] -> '\\'
     | [: `'"' :]  -> '"'
-    | [: `''' :]  -> '''
+    | [: `'\'' :]  -> '\''
     | [: `' ' :]  -> ' '
     | [: `('0'..'9' as c1); `('0'..'9' as c2); `('0'..'9' as c3) :] ->
         chr (100 * (valch c1) + 10 * (valch c2) + (valch c3))
index ed6dad0601cb9998ee47aae26baea88a1700d464..edd5fe0a16a121dc22593d2f1d1267f19aa65aea 100644 (file)
@@ -792,9 +792,9 @@ New syntax:\
       [ RIGHTA
         [ TRY ["("; "type"]; i = a_LIDENT; ")"; e = SELF ->
             <:expr< fun (type $i$) -> $e$ >>
-        | bi = TRY cvalue_binding -> bi
-        | p = labeled_ipatt; e = SELF ->
+        | p = TRY labeled_ipatt; e = SELF ->
             <:expr< fun $p$ -> $e$ >>
+        | bi = cvalue_binding -> bi
       ] ]
     ;
     match_case:
index 3967ba21b5488f0cf6e32a371551b6a98fa67a3f..4030702aef8abc359d7009ef8b3d0b3f9af00f06 100644 (file)
@@ -81,25 +81,15 @@ module Debug :
       
     let formatter =
       let header = "camlp4-debug: " in
-      let normal s =
-        let rec self from accu =
-          try
-            let i = String.index_from s from '\n'
-            in self (i + 1) ((String.sub s from ((i - from) + 1)) :: accu)
-          with
-          | Not_found ->
-              (String.sub s from ((String.length s) - from)) :: accu
-        in String.concat header (List.rev (self 0 [])) in
-      let after_new_line str = header ^ (normal str) in
-      let f = ref after_new_line in
-      let output str chr =
-        (output_string out_channel (!f str);
-         output_char out_channel chr;
-         f := if chr = '\n' then after_new_line else normal)
+      let at_bol = ref true
       in
         make_formatter
           (fun buf pos len ->
-             let p = pred len in output (String.sub buf pos p) buf.[pos + p])
+             for i = pos to (pos + len) - 1 do
+               if !at_bol then output_string out_channel header else ();
+               let ch = buf.[i]
+               in (output_char out_channel ch; at_bol := ch = '\n')
+             done)
           (fun () -> flush out_channel)
       
     let printf section fmt = fprintf formatter ("%s: " ^^ fmt) section
@@ -424,6 +414,16 @@ module Sig =
     (** A signature for locations. *)
     module type Loc =
       sig
+        (** The type of locations.  Note that, as for OCaml locations,
+      character numbers in locations refer to character numbers in the
+      parsed character stream, while line numbers refer to line
+      numbers in the source file. The source file and the parsed
+      character stream differ, for instance, when the parsed character
+      stream contains a line number directive. The line number
+      directive will only update the file-name field and the
+      line-number field of the position. It makes therefore no sense
+      to use character numbers with the source file if the sources
+      contain line number directives. *)
         type t
         
         (** Return a start location for the given file name.
@@ -457,7 +457,8 @@ module Sig =
         val to_tuple :
           t -> (string * int * int * int * int * int * int * bool)
           
-        (** [merge loc1 loc2] Return a location that starts at [loc1] and end at [loc2]. *)
+        (** [merge loc1 loc2] Return a location that starts at [loc1] and end at
+      [loc2]. *)
         val merge : t -> t -> t
           
         (** The stop pos becomes equal to the start pos. *)
@@ -488,19 +489,19 @@ module Sig =
         (** Return the line number of the ending of this location. *)
         val stop_line : t -> int
           
-        (** Returns the number of characters from the begining of the file
+        (** Returns the number of characters from the begining of the stream
       to the begining of the line of location's begining. *)
         val start_bol : t -> int
           
-        (** Returns the number of characters from the begining of the file
+        (** Returns the number of characters from the begining of the stream
       to the begining of the line of location's ending. *)
         val stop_bol : t -> int
           
-        (** Returns the number of characters from the begining of the file
+        (** Returns the number of characters from the begining of the stream
       of the begining of this location. *)
         val start_off : t -> int
           
-        (** Return the number of characters from the begining of the file
+        (** Return the number of characters from the begining of the stream
       of the ending of this location. *)
         val stop_off : t -> int
           
@@ -801,6 +802,8 @@ module Sig =
         (*  source tree.                                                            *)
         (*                                                                          *)
         (****************************************************************************)
+        (* Note: when you modify these types you must increment
+   ast magic numbers defined in Camlp4_config.ml. *)
         type loc =
           Loc.
           t
@@ -14159,6 +14162,9 @@ module Struct =
               
             let mkghloc loc = Loc.to_ocaml_location (Loc.ghostify loc)
               
+            let with_loc txt loc =
+              Camlp4_import.Location.mkloc txt (mkloc loc)
+              
             let mktyp loc d = { ptyp_desc = d; ptyp_loc = mkloc loc; }
               
             let mkpat loc d = { ppat_desc = d; ppat_loc = mkloc loc; }
@@ -14179,7 +14185,11 @@ module Struct =
               
             let mkcty loc d = { pcty_desc = d; pcty_loc = mkloc loc; }
               
-            let mkpcl loc d = { pcl_desc = d; pcl_loc = mkloc loc; }
+            let mkcl loc d = { pcl_desc = d; pcl_loc = mkloc loc; }
+              
+            let mkcf loc d = { pcf_desc = d; pcf_loc = mkloc loc; }
+              
+            let mkctf loc d = { pctf_desc = d; pctf_loc = mkloc loc; }
               
             let mkpolytype t =
               match t.ptyp_desc with
@@ -14200,6 +14210,8 @@ module Struct =
               
             let lident s = Lident s
               
+            let lident_with_loc s loc = with_loc (Lident s) loc
+              
             let ldot l s = Ldot (l, s)
               
             let lapply l s = Lapply (l, s)
@@ -14219,20 +14231,23 @@ module Struct =
                    [ ("val", "contents") ];
                  fun s -> try Hashtbl.find t s with | Not_found -> s)
               
-            let array_function str name =
+            let array_function_no_loc str name =
               ldot (lident str)
                 (if !Camlp4_config.unsafe then "unsafe_" ^ name else name)
               
+            let array_function loc str name =
+              with_loc (array_function_no_loc str name) loc
+              
             let mkrf =
               function
               | Ast.ReRecursive -> Recursive
               | Ast.ReNil -> Nonrecursive
               | _ -> assert false
               
-            let mkli s =
+            let mkli sloc s list =
               let rec loop f =
                 function | i :: il -> loop (ldot (f i)) il | [] -> f s
-              in loop lident
+              in with_loc (loop lident list) sloc
               
             let rec ctyp_fa al =
               function
@@ -14242,6 +14257,9 @@ module Struct =
             let ident_tag ?(conv_lid = fun x -> x) i =
               let rec self i acc =
                 match i with
+                | Ast.IdAcc (_, (Ast.IdLid (_, "*predef*")),
+                    (Ast.IdLid (_, "option"))) ->
+                    ((ldot (lident "*predef*") "option"), `lident)
                 | Ast.IdAcc (_, i1, i2) -> self i2 (Some (self i1 acc))
                 | Ast.IdApp (_, i1, i2) ->
                     let i' =
@@ -14272,27 +14290,33 @@ module Struct =
                 | _ -> error (loc_of_ident i) "invalid long identifier"
               in self i None
               
-            let ident ?conv_lid i = fst (ident_tag ?conv_lid i)
+            let ident_noloc ?conv_lid i = fst (ident_tag ?conv_lid i)
               
-            let long_lident msg i =
-              match ident_tag i with
-              | (i, `lident) -> i
-              | _ -> error (loc_of_ident i) msg
+            let ident ?conv_lid i =
+              with_loc (ident_noloc ?conv_lid i) (loc_of_ident i)
+              
+            let long_lident msg id =
+              match ident_tag id with
+              | (i, `lident) -> with_loc i (loc_of_ident id)
+              | _ -> error (loc_of_ident id) msg
               
             let long_type_ident = long_lident "invalid long identifier type"
               
             let long_class_ident = long_lident "invalid class name"
               
-            let long_uident ?(conv_con = fun x -> x) i =
+            let long_uident_noloc ?(conv_con = fun x -> x) i =
               match ident_tag i with
               | (Ldot (i, s), `uident) -> ldot i (conv_con s)
               | (Lident s, `uident) -> lident (conv_con s)
               | (i, `app) -> i
               | _ -> error (loc_of_ident i) "uppercase identifier expected"
               
+            let long_uident ?conv_con i =
+              with_loc (long_uident_noloc ?conv_con i) (loc_of_ident i)
+              
             let rec ctyp_long_id_prefix t =
               match t with
-              | Ast.TyId (_, i) -> ident i
+              | Ast.TyId (_, i) -> ident_noloc i
               | Ast.TyApp (_, m1, m2) ->
                   let li1 = ctyp_long_id_prefix m1 in
                   let li2 = ctyp_long_id_prefix m2 in Lapply (li1, li2)
@@ -14312,6 +14336,13 @@ module Struct =
               | Ast.TyQuo (_, s) -> [ s ]
               | _ -> assert false
               
+            let predef_option loc =
+              TyId
+                ((loc,
+                  (IdAcc
+                     ((loc, (IdLid ((loc, "*predef*"))),
+                       (IdLid ((loc, "option"))))))))
+              
             let rec ctyp =
               function
               | TyId (loc, i) ->
@@ -14335,9 +14366,7 @@ module Struct =
               | TyArr (loc, (TyLab (_, lab, t1)), t2) ->
                   mktyp loc (Ptyp_arrow (lab, (ctyp t1), (ctyp t2)))
               | TyArr (loc, (TyOlb (loc1, lab, t1)), t2) ->
-                  let t1 =
-                    TyApp (loc1,
-                      (Ast.TyId (loc1, (Ast.IdLid (loc1, "option")))), t1)
+                  let t1 = TyApp (loc1, (predef_option loc1), t1)
                   in
                     mktyp loc
                       (Ptyp_arrow (("?" ^ lab), (ctyp t1), (ctyp t2)))
@@ -14421,8 +14450,8 @@ module Struct =
             and package_type_constraints wc acc =
               match wc with
               | Ast.WcNil _ -> acc
-              | Ast.WcTyp (_, (Ast.TyId (_, (Ast.IdLid (_, id)))), ct) ->
-                  (Lident id, (ctyp ct)) :: acc
+              | Ast.WcTyp (_, (Ast.TyId (_, id)), ct) ->
+                  ((ident id), (ctyp ct)) :: acc
               | Ast.WcAnd (_, wc1, wc2) ->
                   package_type_constraints wc1
                     (package_type_constraints wc2 acc)
@@ -14459,26 +14488,30 @@ module Struct =
               
             let mktrecord =
               function
-              | Ast.TyCol (loc, (Ast.TyId (_, (Ast.IdLid (_, s)))),
+              | Ast.TyCol (loc, (Ast.TyId (_, (Ast.IdLid (sloc, s)))),
                   (Ast.TyMut (_, t))) ->
-                  (s, Mutable, (mkpolytype (ctyp t)), (mkloc loc))
-              | Ast.TyCol (loc, (Ast.TyId (_, (Ast.IdLid (_, s)))), t) ->
-                  (s, Immutable, (mkpolytype (ctyp t)), (mkloc loc))
+                  ((with_loc s sloc), Mutable, (mkpolytype (ctyp t)),
+                   (mkloc loc))
+              | Ast.TyCol (loc, (Ast.TyId (_, (Ast.IdLid (sloc, s)))), t) ->
+                  ((with_loc s sloc), Immutable, (mkpolytype (ctyp t)),
+                   (mkloc loc))
               | _ -> assert false
               
             let mkvariant =
               function
-              | Ast.TyId (loc, (Ast.IdUid (_, s))) ->
-                  ((conv_con s), [], None, (mkloc loc))
-              | Ast.TyOf (loc, (Ast.TyId (_, (Ast.IdUid (_, s)))), t) ->
-                  ((conv_con s), (List.map ctyp (list_of_ctyp t [])), None,
-                   (mkloc loc))
-              | Ast.TyCol (loc, (Ast.TyId (_, (Ast.IdUid (_, s)))),
+              | Ast.TyId (loc, (Ast.IdUid (sloc, s))) ->
+                  ((with_loc (conv_con s) sloc), [], None, (mkloc loc))
+              | Ast.TyOf (loc, (Ast.TyId (_, (Ast.IdUid (sloc, s)))), t) ->
+                  ((with_loc (conv_con s) sloc),
+                   (List.map ctyp (list_of_ctyp t [])), None, (mkloc loc))
+              | Ast.TyCol (loc, (Ast.TyId (_, (Ast.IdUid (sloc, s)))),
                   (Ast.TyArr (_, t, u))) ->
-                  ((conv_con s), (List.map ctyp (list_of_ctyp t [])),
-                   (Some (ctyp u)), (mkloc loc))
-              | Ast.TyCol (loc, (Ast.TyId (_, (Ast.IdUid (_, s)))), t) ->
-                  ((conv_con s), [], (Some (ctyp t)), (mkloc loc))
+                  ((with_loc (conv_con s) sloc),
+                   (List.map ctyp (list_of_ctyp t [])), (Some (ctyp u)),
+                   (mkloc loc))
+              | Ast.TyCol (loc, (Ast.TyId (_, (Ast.IdUid (sloc, s)))), t) ->
+                  ((with_loc (conv_con s) sloc), [], (Some (ctyp t)),
+                   (mkloc loc))
               | _ -> assert false
               
             let rec type_decl tl cl loc m pflag =
@@ -14505,10 +14538,10 @@ module Struct =
                        | _ -> Some (ctyp t)
                      in mktype loc tl cl Ptype_abstract (mkprivate' pflag) m)
               
-            let type_decl tl cl t =
-              type_decl tl cl (loc_of_ctyp t) None false t
+            let type_decl tl cl t loc = type_decl tl cl loc None false t
               
-            let mkvalue_desc t p = { pval_type = ctyp t; pval_prim = p; }
+            let mkvalue_desc loc t p =
+              { pval_type = ctyp t; pval_prim = p; pval_loc = mkloc loc; }
               
             let rec list_of_meta_list =
               function
@@ -14550,11 +14583,14 @@ module Struct =
               | Ast.TyApp (_, t1, t2) ->
                   optional_type_parameters t1
                     (optional_type_parameters t2 acc)
-              | Ast.TyQuP (_, s) -> ((Some s), (true, false)) :: acc
+              | Ast.TyQuP (loc, s) ->
+                  ((Some (with_loc s loc)), (true, false)) :: acc
               | Ast.TyAnP _loc -> (None, (true, false)) :: acc
-              | Ast.TyQuM (_, s) -> ((Some s), (false, true)) :: acc
+              | Ast.TyQuM (loc, s) ->
+                  ((Some (with_loc s loc)), (false, true)) :: acc
               | Ast.TyAnM _loc -> (None, (false, true)) :: acc
-              | Ast.TyQuo (_, s) -> ((Some s), (false, false)) :: acc
+              | Ast.TyQuo (loc, s) ->
+                  ((Some (with_loc s loc)), (false, false)) :: acc
               | Ast.TyAny _loc -> (None, (false, false)) :: acc
               | _ -> assert false
               
@@ -14562,9 +14598,12 @@ module Struct =
               match t with
               | Ast.TyCom (_, t1, t2) ->
                   class_parameters t1 (class_parameters t2 acc)
-              | Ast.TyQuP (_, s) -> (s, (true, false)) :: acc
-              | Ast.TyQuM (_, s) -> (s, (false, true)) :: acc
-              | Ast.TyQuo (_, s) -> (s, (false, false)) :: acc
+              | Ast.TyQuP (loc, s) ->
+                  ((with_loc s loc), (true, false)) :: acc
+              | Ast.TyQuM (loc, s) ->
+                  ((with_loc s loc), (false, true)) :: acc
+              | Ast.TyQuo (loc, s) ->
+                  ((with_loc s loc), (false, false)) :: acc
               | _ -> assert false
               
             let rec type_parameters_and_type_name t acc =
@@ -14636,7 +14675,8 @@ module Struct =
               
             let rec patt =
               function
-              | Ast.PaId (loc, (Ast.IdLid (_, s))) -> mkpat loc (Ppat_var s)
+              | Ast.PaId (loc, (Ast.IdLid (sloc, s))) ->
+                  mkpat loc (Ppat_var (with_loc s sloc))
               | Ast.PaId (loc, i) ->
                   let p =
                     Ppat_construct ((long_uident ~conv_con i), None,
@@ -14645,16 +14685,18 @@ module Struct =
               | PaAli (loc, p1, p2) ->
                   let (p, i) =
                     (match (p1, p2) with
-                     | (p, Ast.PaId (_, (Ast.IdLid (_, s)))) -> (p, s)
-                     | (Ast.PaId (_, (Ast.IdLid (_, s))), p) -> (p, s)
+                     | (p, Ast.PaId (_, (Ast.IdLid (sloc, s)))) ->
+                         (p, (with_loc s sloc))
+                     | (Ast.PaId (_, (Ast.IdLid (sloc, s))), p) ->
+                         (p, (with_loc s sloc))
                      | _ -> error loc "invalid alias pattern")
                   in mkpat loc (Ppat_alias ((patt p), i))
               | PaAnt (loc, _) -> error loc "antiquotation not allowed here"
               | PaAny loc -> mkpat loc Ppat_any
-              | Ast.PaApp (loc, (Ast.PaId (_, (Ast.IdUid (_, s)))),
+              | Ast.PaApp (loc, (Ast.PaId (_, (Ast.IdUid (sloc, s)))),
                   (Ast.PaTup (_, (Ast.PaAny loc_any)))) ->
                   mkpat loc
-                    (Ppat_construct ((lident (conv_con s)),
+                    (Ppat_construct ((lident_with_loc (conv_con s) sloc),
                        (Some (mkpat loc_any Ppat_any)), false))
               | (PaApp (loc, _, _) as f) ->
                   let (f, al) = patt_fa [] f in
@@ -14762,9 +14804,10 @@ module Struct =
               | PaTyc (loc, p, t) ->
                   mkpat loc (Ppat_constraint ((patt p), (ctyp t)))
               | PaTyp (loc, i) -> mkpat loc (Ppat_type (long_type_ident i))
-              | PaVrn (loc, s) -> mkpat loc (Ppat_variant (s, None))
+              | PaVrn (loc, s) ->
+                  mkpat loc (Ppat_variant ((conv_con s), None))
               | PaLaz (loc, p) -> mkpat loc (Ppat_lazy (patt p))
-              | PaMod (loc, m) -> mkpat loc (Ppat_unpack m)
+              | PaMod (loc, m) -> mkpat loc (Ppat_unpack (with_loc m loc))
               | (PaEq (_, _, _) | PaSem (_, _, _) | PaCom (_, _, _) | PaNil _
                  as p) -> error (loc_of_patt p) "invalid pattern"
             and mklabpat =
@@ -14824,8 +14867,8 @@ module Struct =
                   | Ptyp_arrow (label, core_type, core_type') ->
                       Ptyp_arrow (label, (loop core_type), (loop core_type'))
                   | Ptyp_tuple lst -> Ptyp_tuple (List.map loop lst)
-                  | Ptyp_constr ((Lident s), []) when List.mem s var_names ->
-                      Ptyp_var ("&" ^ s)
+                  | Ptyp_constr ({ txt = Lident s }, []) when
+                      List.mem s var_names -> Ptyp_var ("&" ^ s)
                   | Ptyp_constr (longident, lst) ->
                       Ptyp_constr (longident, (List.map loop lst))
                   | Ptyp_object lst ->
@@ -14862,33 +14905,35 @@ module Struct =
               function
               | Ast.ExAcc (loc, x, (Ast.ExId (_, (Ast.IdLid (_, "val"))))) ->
                   mkexp loc
-                    (Pexp_apply ((mkexp loc (Pexp_ident (Lident "!"))),
+                    (Pexp_apply
+                       ((mkexp loc (Pexp_ident (lident_with_loc "!" loc))),
                        [ ("", (expr x)) ]))
               | (ExAcc (loc, _, _) | Ast.ExId (loc, (Ast.IdAcc (_, _, _))) as
                  e) ->
                   let (e, l) =
                     (match sep_expr_acc [] e with
-                     | (loc, ml, Ast.ExId (_, (Ast.IdUid (_, s)))) :: l ->
+                     | (loc, ml, Ast.ExId (sloc, (Ast.IdUid (_, s)))) :: l ->
                          let ca = constructors_arity ()
                          in
                            ((mkexp loc
-                               (Pexp_construct ((mkli (conv_con s) ml), None,
-                                  ca))),
+                               (Pexp_construct ((mkli sloc (conv_con s) ml),
+                                  None, ca))),
                             l)
-                     | (loc, ml, Ast.ExId (_, (Ast.IdLid (_, s)))) :: l ->
-                         ((mkexp loc (Pexp_ident (mkli s ml))), l)
+                     | (loc, ml, Ast.ExId (sloc, (Ast.IdLid (_, s)))) :: l ->
+                         ((mkexp loc (Pexp_ident (mkli sloc s ml))), l)
                      | (_, [], e) :: l -> ((expr e), l)
                      | _ -> error loc "bad ast in expression") in
                   let (_, e) =
                     List.fold_left
                       (fun (loc_bp, e1) (loc_ep, ml, e2) ->
                          match e2 with
-                         | Ast.ExId (_, (Ast.IdLid (_, s))) ->
+                         | Ast.ExId (sloc, (Ast.IdLid (_, s))) ->
                              let loc = Loc.merge loc_bp loc_ep
                              in
                                (loc,
                                 (mkexp loc
-                                   (Pexp_field (e1, (mkli (conv_lab s) ml)))))
+                                   (Pexp_field (e1,
+                                      (mkli sloc (conv_lab s) ml)))))
                          | _ ->
                              error (loc_of_expr e2)
                                "lowercase identifier expected")
@@ -14931,7 +14976,7 @@ module Struct =
                   mkexp loc
                     (Pexp_apply
                        ((mkexp loc
-                           (Pexp_ident (array_function "Array" "get"))),
+                           (Pexp_ident (array_function loc "Array" "get"))),
                        [ ("", (expr e1)); ("", (expr e2)) ]))
               | ExArr (loc, e) ->
                   mkexp loc (Pexp_array (List.map expr (list_of_expr e [])))
@@ -14941,24 +14986,27 @@ module Struct =
                     (match e with
                      | Ast.ExAcc (loc, x,
                          (Ast.ExId (_, (Ast.IdLid (_, "val"))))) ->
-                         Pexp_apply ((mkexp loc (Pexp_ident (Lident ":="))),
+                         Pexp_apply
+                           ((mkexp loc
+                               (Pexp_ident (lident_with_loc ":=" loc))),
                            [ ("", (expr x)); ("", (expr v)) ])
                      | ExAcc (loc, _, _) ->
                          (match (expr e).pexp_desc with
                           | Pexp_field (e, lab) ->
                               Pexp_setfield (e, lab, (expr v))
                           | _ -> error loc "bad record access")
-                     | ExAre (_, e1, e2) ->
+                     | ExAre (loc, e1, e2) ->
                          Pexp_apply
                            ((mkexp loc
-                               (Pexp_ident (array_function "Array" "set"))),
+                               (Pexp_ident (array_function loc "Array" "set"))),
                            [ ("", (expr e1)); ("", (expr e2)); ("", (expr v)) ])
-                     | Ast.ExId (_, (Ast.IdLid (_, lab))) ->
-                         Pexp_setinstvar (lab, (expr v))
-                     | ExSte (_, e1, e2) ->
+                     | Ast.ExId (_, (Ast.IdLid (lloc, lab))) ->
+                         Pexp_setinstvar ((with_loc lab lloc), (expr v))
+                     | ExSte (loc, e1, e2) ->
                          Pexp_apply
                            ((mkexp loc
-                               (Pexp_ident (array_function "String" "set"))),
+                               (Pexp_ident
+                                  (array_function loc "String" "set"))),
                            [ ("", (expr e1)); ("", (expr e2)); ("", (expr v)) ])
                      | _ -> error loc "bad left part of assignment")
                   in mkexp loc e
@@ -14979,8 +15027,8 @@ module Struct =
                   let e3 = ExSeq (loc, el)
                   in
                     mkexp loc
-                      (Pexp_for (i, (expr e1), (expr e2), (mkdirection df),
-                         (expr e3)))
+                      (Pexp_for ((with_loc i loc), (expr e1), (expr e2),
+                         (mkdirection df), (expr e3)))
               | Ast.ExFun (loc, (Ast.McArr (_, (PaLab (_, lab, po)), w, e)))
                   ->
                   mkexp loc
@@ -15043,7 +15091,9 @@ module Struct =
               | ExLet (loc, rf, bi, e) ->
                   mkexp loc (Pexp_let ((mkrf rf), (binding bi []), (expr e)))
               | ExLmd (loc, i, me, e) ->
-                  mkexp loc (Pexp_letmodule (i, (module_expr me), (expr e)))
+                  mkexp loc
+                    (Pexp_letmodule ((with_loc i loc), (module_expr me),
+                       (expr e)))
               | ExMat (loc, e, a) ->
                   mkexp loc (Pexp_match ((expr e), (match_case a [])))
               | ExNew (loc, id) -> mkexp loc (Pexp_new (long_type_ident id))
@@ -15051,7 +15101,10 @@ module Struct =
                   let p =
                     (match po with | Ast.PaNil _ -> Ast.PaAny loc | p -> p) in
                   let cil = class_str_item cfl []
-                  in mkexp loc (Pexp_object (((patt p), cil)))
+                  in
+                    mkexp loc
+                      (Pexp_object
+                         { pcstr_pat = patt p; pcstr_fields = cil; })
               | ExOlb (loc, _, _) ->
                   error loc "labeled expression not allowed here"
               | ExOvr (loc, iel) ->
@@ -15079,7 +15132,7 @@ module Struct =
                   mkexp loc
                     (Pexp_apply
                        ((mkexp loc
-                           (Pexp_ident (array_function "String" "get"))),
+                           (Pexp_ident (array_function loc "String" "get"))),
                        [ ("", (expr e1)); ("", (expr e2)) ]))
               | ExStr (loc, s) ->
                   mkexp loc
@@ -15096,13 +15149,16 @@ module Struct =
                   mkexp loc
                     (Pexp_constraint ((expr e), (Some (ctyp t)), None))
               | Ast.ExId (loc, (Ast.IdUid (_, "()"))) ->
-                  mkexp loc (Pexp_construct ((lident "()"), None, true))
+                  mkexp loc
+                    (Pexp_construct ((lident_with_loc "()" loc), None, true))
               | Ast.ExId (loc, (Ast.IdLid (_, s))) ->
-                  mkexp loc (Pexp_ident (lident s))
+                  mkexp loc (Pexp_ident (lident_with_loc s loc))
               | Ast.ExId (loc, (Ast.IdUid (_, s))) ->
                   mkexp loc
-                    (Pexp_construct ((lident (conv_con s)), None, true))
-              | ExVrn (loc, s) -> mkexp loc (Pexp_variant (s, None))
+                    (Pexp_construct ((lident_with_loc (conv_con s) loc),
+                       None, true))
+              | ExVrn (loc, s) ->
+                  mkexp loc (Pexp_variant ((conv_con s), None))
               | ExWhi (loc, e1, el) ->
                   let e2 = ExSeq (loc, el)
                   in mkexp loc (Pexp_while ((expr e1), (expr e2)))
@@ -15142,7 +15198,8 @@ module Struct =
             and binding x acc =
               match x with
               | Ast.BiAnd (_, x, y) -> binding x (binding y acc)
-              | Ast.BiEq (_loc, (Ast.PaId (_, (Ast.IdLid (_, bind_name)))),
+              | Ast.BiEq (_loc,
+                  (Ast.PaId (sloc, (Ast.IdLid (_, bind_name)))),
                   (Ast.ExTyc (_, e, (TyTypePol (_, vs, ty))))) ->
                   let rec id_to_string x =
                     (match x with
@@ -15152,11 +15209,6 @@ module Struct =
                      | _ -> assert false) in
                   let vars = id_to_string vs in
                   let ampersand_vars = List.map (fun x -> "&" ^ x) vars in
-                  let rec merge_quoted_vars lst =
-                    (match lst with
-                     | [ x ] -> x
-                     | x :: y -> Ast.TyApp (_loc, x, (merge_quoted_vars y))
-                     | [] -> assert false) in
                   let ty' = varify_constructors vars (ctyp ty) in
                   let mkexp = mkexp _loc in
                   let mkpat = mkpat _loc in
@@ -15173,7 +15225,7 @@ module Struct =
                   let pat =
                     mkpat
                       (Ppat_constraint
-                         (((mkpat (Ppat_var bind_name)),
+                         (((mkpat (Ppat_var (with_loc bind_name sloc))),
                            (mktyp _loc (Ptyp_poly (ampersand_vars, ty')))))) in
                   let e = mk_newtypes vars in (pat, e) :: acc
               | Ast.BiEq (_loc, p,
@@ -15203,12 +15255,13 @@ module Struct =
               match x with
               | Ast.RbNil _ -> acc
               | Ast.RbSem (_, x, y) -> mkideexp x (mkideexp y acc)
-              | Ast.RbEq (_, (Ast.IdLid (_, s)), e) -> (s, (expr e)) :: acc
+              | Ast.RbEq (_, (Ast.IdLid (sloc, s)), e) ->
+                  ((with_loc s sloc), (expr e)) :: acc
               | _ -> assert false
             and mktype_decl x acc =
               match x with
               | Ast.TyAnd (_, x, y) -> mktype_decl x (mktype_decl y acc)
-              | Ast.TyDcl (_, c, tl, td, cl) ->
+              | Ast.TyDcl (cloc, c, tl, td, cl) ->
                   let cl =
                     List.map
                       (fun (t1, t2) ->
@@ -15217,10 +15270,10 @@ module Struct =
                          in ((ctyp t1), (ctyp t2), (mkloc loc)))
                       cl
                   in
-                    (c,
+                    ((with_loc c cloc),
                      (type_decl
                         (List.fold_right optional_type_parameters tl []) cl
-                        td)) ::
+                        td cloc)) ::
                       acc
               | _ -> assert false
             and module_type =
@@ -15230,7 +15283,8 @@ module Struct =
               | Ast.MtId (loc, i) -> mkmty loc (Pmty_ident (long_uident i))
               | Ast.MtFun (loc, n, nt, mt) ->
                   mkmty loc
-                    (Pmty_functor (n, (module_type nt), (module_type mt)))
+                    (Pmty_functor ((with_loc n loc), (module_type nt),
+                       (module_type mt)))
               | Ast.MtQuo (loc, _) ->
                   error loc "module type variable not allowed here"
               | Ast.MtSig (loc, sl) ->
@@ -15258,22 +15312,27 @@ module Struct =
               | Ast.SgSem (_, sg1, sg2) -> sig_item sg1 (sig_item sg2 l)
               | SgDir (_, _, _) -> l
               | Ast.SgExc (loc, (Ast.TyId (_, (Ast.IdUid (_, s))))) ->
-                  (mksig loc (Psig_exception ((conv_con s), []))) :: l
+                  (mksig loc
+                     (Psig_exception ((with_loc (conv_con s) loc), []))) ::
+                    l
               | Ast.SgExc (loc,
                   (Ast.TyOf (_, (Ast.TyId (_, (Ast.IdUid (_, s)))), t))) ->
                   (mksig loc
-                     (Psig_exception ((conv_con s),
+                     (Psig_exception ((with_loc (conv_con s) loc),
                         (List.map ctyp (list_of_ctyp t []))))) ::
                     l
               | SgExc (_, _) -> assert false
               | SgExt (loc, n, t, sl) ->
                   (mksig loc
-                     (Psig_value (n, (mkvalue_desc t (list_of_meta_list sl))))) ::
+                     (Psig_value ((with_loc n loc),
+                        (mkvalue_desc loc t (list_of_meta_list sl))))) ::
                     l
               | SgInc (loc, mt) ->
                   (mksig loc (Psig_include (module_type mt))) :: l
               | SgMod (loc, n, mt) ->
-                  (mksig loc (Psig_module (n, (module_type mt)))) :: l
+                  (mksig loc
+                     (Psig_module ((with_loc n loc), (module_type mt)))) ::
+                    l
               | SgRecMod (loc, mb) ->
                   (mksig loc (Psig_recmodule (module_sig_binding mb []))) ::
                     l
@@ -15282,26 +15341,30 @@ module Struct =
                     (match mt with
                      | MtQuo (_, _) -> Pmodtype_abstract
                      | _ -> Pmodtype_manifest (module_type mt))
-                  in (mksig loc (Psig_modtype (n, si))) :: l
+                  in (mksig loc (Psig_modtype ((with_loc n loc), si))) :: l
               | SgOpn (loc, id) ->
                   (mksig loc (Psig_open (long_uident id))) :: l
               | SgTyp (loc, tdl) ->
                   (mksig loc (Psig_type (mktype_decl tdl []))) :: l
               | SgVal (loc, n, t) ->
-                  (mksig loc (Psig_value (n, (mkvalue_desc t [])))) :: l
+                  (mksig loc
+                     (Psig_value ((with_loc n loc), (mkvalue_desc loc t [])))) ::
+                    l
               | Ast.SgAnt (loc, _) -> error loc "antiquotation in sig_item"
             and module_sig_binding x acc =
               match x with
               | Ast.MbAnd (_, x, y) ->
                   module_sig_binding x (module_sig_binding y acc)
-              | Ast.MbCol (_, s, mt) -> (s, (module_type mt)) :: acc
+              | Ast.MbCol (loc, s, mt) ->
+                  ((with_loc s loc), (module_type mt)) :: acc
               | _ -> assert false
             and module_str_binding x acc =
               match x with
               | Ast.MbAnd (_, x, y) ->
                   module_str_binding x (module_str_binding y acc)
-              | Ast.MbColEq (_, s, mt, me) ->
-                  (s, (module_type mt), (module_expr me)) :: acc
+              | Ast.MbColEq (loc, s, mt, me) ->
+                  ((with_loc s loc), (module_type mt), (module_expr me)) ::
+                    acc
               | _ -> assert false
             and module_expr =
               function
@@ -15312,7 +15375,8 @@ module Struct =
                     (Pmod_apply ((module_expr me1), (module_expr me2)))
               | Ast.MeFun (loc, n, mt, me) ->
                   mkmod loc
-                    (Pmod_functor (n, (module_type mt), (module_expr me)))
+                    (Pmod_functor ((with_loc n loc), (module_type mt),
+                       (module_expr me)))
               | Ast.MeStr (loc, sl) ->
                   mkmod loc (Pmod_structure (str_item sl []))
               | Ast.MeTyc (loc, me, mt) ->
@@ -15349,17 +15413,21 @@ module Struct =
               | StDir (_, _, _) -> l
               | Ast.StExc (loc, (Ast.TyId (_, (Ast.IdUid (_, s)))), Ast.
                   ONone) ->
-                  (mkstr loc (Pstr_exception ((conv_con s), []))) :: l
+                  (mkstr loc
+                     (Pstr_exception ((with_loc (conv_con s) loc), []))) ::
+                    l
               | Ast.StExc (loc,
                   (Ast.TyOf (_, (Ast.TyId (_, (Ast.IdUid (_, s)))), t)), Ast.
                   ONone) ->
                   (mkstr loc
-                     (Pstr_exception ((conv_con s),
+                     (Pstr_exception ((with_loc (conv_con s) loc),
                         (List.map ctyp (list_of_ctyp t []))))) ::
                     l
               | Ast.StExc (loc, (Ast.TyId (_, (Ast.IdUid (_, s)))),
                   (Ast.OSome i)) ->
-                  (mkstr loc (Pstr_exn_rebind ((conv_con s), (ident i)))) ::
+                  (mkstr loc
+                     (Pstr_exn_rebind ((with_loc (conv_con s) loc),
+                        (ident i)))) ::
                     l
               | Ast.StExc (loc,
                   (Ast.TyOf (_, (Ast.TyId (_, (Ast.IdUid (_, _)))), _)),
@@ -15368,18 +15436,22 @@ module Struct =
               | StExp (loc, e) -> (mkstr loc (Pstr_eval (expr e))) :: l
               | StExt (loc, n, t, sl) ->
                   (mkstr loc
-                     (Pstr_primitive (n,
-                        (mkvalue_desc t (list_of_meta_list sl))))) ::
+                     (Pstr_primitive ((with_loc n loc),
+                        (mkvalue_desc loc t (list_of_meta_list sl))))) ::
                     l
               | StInc (loc, me) ->
                   (mkstr loc (Pstr_include (module_expr me))) :: l
               | StMod (loc, n, me) ->
-                  (mkstr loc (Pstr_module (n, (module_expr me)))) :: l
+                  (mkstr loc
+                     (Pstr_module ((with_loc n loc), (module_expr me)))) ::
+                    l
               | StRecMod (loc, mb) ->
                   (mkstr loc (Pstr_recmodule (module_str_binding mb []))) ::
                     l
               | StMty (loc, n, mt) ->
-                  (mkstr loc (Pstr_modtype (n, (module_type mt)))) :: l
+                  (mkstr loc
+                     (Pstr_modtype ((with_loc n loc), (module_type mt)))) ::
+                    l
               | StOpn (loc, id) ->
                   (mkstr loc (Pstr_open (long_uident id))) :: l
               | StTyp (loc, tdl) ->
@@ -15396,9 +15468,7 @@ module Struct =
               | CtFun (loc, (TyLab (_, lab, t)), ct) ->
                   mkcty loc (Pcty_fun (lab, (ctyp t), (class_type ct)))
               | CtFun (loc, (TyOlb (loc1, lab, t)), ct) ->
-                  let t =
-                    TyApp (loc1,
-                      (Ast.TyId (loc1, (Ast.IdLid (loc1, "option")))), t)
+                  let t = TyApp (loc1, (predef_option loc1), t)
                   in
                     mkcty loc
                       (Pcty_fun (("?" ^ lab), (ctyp t), (class_type ct)))
@@ -15408,15 +15478,22 @@ module Struct =
                   let t =
                     (match t_o with | Ast.TyNil _ -> Ast.TyAny loc | t -> t) in
                   let cil = class_sig_item ctfl []
-                  in mkcty loc (Pcty_signature (((ctyp t), cil)))
+                  in
+                    mkcty loc
+                      (Pcty_signature
+                         {
+                           pcsig_self = ctyp t;
+                           pcsig_fields = cil;
+                           pcsig_loc = mkloc loc;
+                         })
               | CtCon (loc, _, _, _) ->
                   error loc "invalid virtual class inside a class type"
               | CtAnt (_, _) | CtEq (_, _, _) | CtCol (_, _, _) |
                   CtAnd (_, _, _) | CtNil _ -> assert false
             and class_info_class_expr ci =
               match ci with
-              | CeEq (_, (CeCon (loc, vir, (IdLid (_, name)), params)), ce)
-                  ->
+              | CeEq (_, (CeCon (loc, vir, (IdLid (nloc, name)), params)),
+                  ce) ->
                   let (loc_params, (params, variance)) =
                     (match params with
                      | Ast.TyNil _ -> (loc, ([], []))
@@ -15427,7 +15504,7 @@ module Struct =
                     {
                       pci_virt = mkvirtual vir;
                       pci_params = (params, (mkloc loc_params));
-                      pci_name = name;
+                      pci_name = with_loc name nloc;
                       pci_expr = class_expr ce;
                       pci_loc = mkloc loc;
                       pci_variance = variance;
@@ -15435,8 +15512,9 @@ module Struct =
               | ce -> error (loc_of_class_expr ce) "bad class definition"
             and class_info_class_type ci =
               match ci with
-              | CtEq (_, (CtCon (loc, vir, (IdLid (_, name)), params)), ct) |
-                  CtCol (_, (CtCon (loc, vir, (IdLid (_, name)), params)),
+              | CtEq (_, (CtCon (loc, vir, (IdLid (nloc, name)), params)),
+                  ct) |
+                  CtCol (_, (CtCon (loc, vir, (IdLid (nloc, name)), params)),
                     ct)
                   ->
                   let (loc_params, (params, variance)) =
@@ -15449,7 +15527,7 @@ module Struct =
                     {
                       pci_virt = mkvirtual vir;
                       pci_params = (params, (mkloc loc_params));
-                      pci_name = name;
+                      pci_name = with_loc name nloc;
                       pci_expr = class_type ct;
                       pci_loc = mkloc loc;
                       pci_variance = variance;
@@ -15461,22 +15539,22 @@ module Struct =
               match c with
               | Ast.CgNil _ -> l
               | CgCtr (loc, t1, t2) ->
-                  (Pctf_cstr (((ctyp t1), (ctyp t2), (mkloc loc)))) :: l
+                  (mkctf loc (Pctf_cstr (((ctyp t1), (ctyp t2))))) :: l
               | Ast.CgSem (_, csg1, csg2) ->
                   class_sig_item csg1 (class_sig_item csg2 l)
-              | CgInh (_, ct) -> (Pctf_inher (class_type ct)) :: l
+              | CgInh (loc, ct) ->
+                  (mkctf loc (Pctf_inher (class_type ct))) :: l
               | CgMth (loc, s, pf, t) ->
-                  (Pctf_meth
-                     ((s, (mkprivate pf), (mkpolytype (ctyp t)), (mkloc loc)))) ::
+                  (mkctf loc
+                     (Pctf_meth ((s, (mkprivate pf), (mkpolytype (ctyp t)))))) ::
                     l
               | CgVal (loc, s, b, v, t) ->
-                  (Pctf_val
-                     ((s, (mkmutable b), (mkvirtual v), (ctyp t),
-                       (mkloc loc)))) ::
+                  (mkctf loc
+                     (Pctf_val ((s, (mkmutable b), (mkvirtual v), (ctyp t))))) ::
                     l
               | CgVir (loc, s, b, t) ->
-                  (Pctf_virt
-                     ((s, (mkprivate b), (mkpolytype (ctyp t)), (mkloc loc)))) ::
+                  (mkctf loc
+                     (Pctf_virt ((s, (mkprivate b), (mkpolytype (ctyp t)))))) ::
                     l
               | CgAnt (_, _) -> assert false
             and class_expr =
@@ -15484,39 +15562,42 @@ module Struct =
               | (CeApp (loc, _, _) as c) ->
                   let (ce, el) = class_expr_fa [] c in
                   let el = List.map label_expr el
-                  in mkpcl loc (Pcl_apply ((class_expr ce), el))
+                  in mkcl loc (Pcl_apply ((class_expr ce), el))
               | CeCon (loc, ViNil, id, tl) ->
-                  mkpcl loc
+                  mkcl loc
                     (Pcl_constr ((long_class_ident id),
                        (List.map ctyp (list_of_opt_ctyp tl []))))
               | CeFun (loc, (PaLab (_, lab, po)), ce) ->
-                  mkpcl loc
+                  mkcl loc
                     (Pcl_fun (lab, None, (patt_of_lab loc lab po),
                        (class_expr ce)))
               | CeFun (loc, (PaOlbi (_, lab, p, e)), ce) ->
                   let lab = paolab lab p
                   in
-                    mkpcl loc
+                    mkcl loc
                       (Pcl_fun (("?" ^ lab), (Some (expr e)), (patt p),
                          (class_expr ce)))
               | CeFun (loc, (PaOlb (_, lab, p)), ce) ->
                   let lab = paolab lab p
                   in
-                    mkpcl loc
+                    mkcl loc
                       (Pcl_fun (("?" ^ lab), None, (patt_of_lab loc lab p),
                          (class_expr ce)))
               | CeFun (loc, p, ce) ->
-                  mkpcl loc (Pcl_fun ("", None, (patt p), (class_expr ce)))
+                  mkcl loc (Pcl_fun ("", None, (patt p), (class_expr ce)))
               | CeLet (loc, rf, bi, ce) ->
-                  mkpcl loc
+                  mkcl loc
                     (Pcl_let ((mkrf rf), (binding bi []), (class_expr ce)))
               | CeStr (loc, po, cfl) ->
                   let p =
                     (match po with | Ast.PaNil _ -> Ast.PaAny loc | p -> p) in
                   let cil = class_str_item cfl []
-                  in mkpcl loc (Pcl_structure (((patt p), cil)))
+                  in
+                    mkcl loc
+                      (Pcl_structure
+                         { pcstr_pat = patt p; pcstr_fields = cil; })
               | CeTyc (loc, ce, ct) ->
-                  mkpcl loc
+                  mkcl loc
                     (Pcl_constraint ((class_expr ce), (class_type ct)))
               | CeCon (loc, _, _, _) ->
                   error loc "invalid virtual class inside a class expression"
@@ -15526,15 +15607,17 @@ module Struct =
               match c with
               | CrNil _ -> l
               | CrCtr (loc, t1, t2) ->
-                  (Pcf_cstr (((ctyp t1), (ctyp t2), (mkloc loc)))) :: l
+                  (mkcf loc (Pcf_constr (((ctyp t1), (ctyp t2))))) :: l
               | Ast.CrSem (_, cst1, cst2) ->
                   class_str_item cst1 (class_str_item cst2 l)
               | CrInh (loc, ov, ce, pb) ->
                   let opb = if pb = "" then None else Some pb
                   in
-                    (Pcf_inher ((override_flag loc ov), (class_expr ce), opb)) ::
+                    (mkcf loc
+                       (Pcf_inher ((override_flag loc ov), (class_expr ce),
+                          opb))) ::
                       l
-              | CrIni (_, e) -> (Pcf_init (expr e)) :: l
+              | CrIni (loc, e) -> (mkcf loc (Pcf_init (expr e))) :: l
               | CrMth (loc, s, ov, pf, e, t) ->
                   let t =
                     (match t with
@@ -15542,21 +15625,27 @@ module Struct =
                      | t -> Some (mkpolytype (ctyp t))) in
                   let e = mkexp loc (Pexp_poly ((expr e), t))
                   in
-                    (Pcf_meth
-                       ((s, (mkprivate pf), (override_flag loc ov), e,
-                         (mkloc loc)))) ::
+                    (mkcf loc
+                       (Pcf_meth
+                          (((with_loc s loc), (mkprivate pf),
+                            (override_flag loc ov), e)))) ::
                       l
               | CrVal (loc, s, ov, mf, e) ->
-                  (Pcf_val
-                     ((s, (mkmutable mf), (override_flag loc ov), (expr e),
-                       (mkloc loc)))) ::
+                  (mkcf loc
+                     (Pcf_val
+                        (((with_loc s loc), (mkmutable mf),
+                          (override_flag loc ov), (expr e))))) ::
                     l
               | CrVir (loc, s, pf, t) ->
-                  (Pcf_virt
-                     ((s, (mkprivate pf), (mkpolytype (ctyp t)), (mkloc loc)))) ::
+                  (mkcf loc
+                     (Pcf_virt
+                        (((with_loc s loc), (mkprivate pf),
+                          (mkpolytype (ctyp t)))))) ::
                     l
               | CrVvr (loc, s, mf, t) ->
-                  (Pcf_valvirt ((s, (mkmutable mf), (ctyp t), (mkloc loc)))) ::
+                  (mkcf loc
+                     (Pcf_valvirt
+                        (((with_loc s loc), (mkmutable mf), (ctyp t))))) ::
                     l
               | CrAnt (_, _) -> assert false
               
@@ -15571,7 +15660,7 @@ module Struct =
               | ExInt (_, i) -> Pdir_int (int_of_string i)
               | Ast.ExId (_, (Ast.IdUid (_, "True"))) -> Pdir_bool true
               | Ast.ExId (_, (Ast.IdUid (_, "False"))) -> Pdir_bool false
-              | e -> Pdir_ident (ident (ident_of_expr e))
+              | e -> Pdir_ident (ident_noloc (ident_of_expr e))
               
             let phrase =
               function
@@ -16986,9 +17075,14 @@ module Struct =
                 let drop_prev_loc = Tools.drop_prev_loc
                   
                 let add_loc bp parse_fun strm =
+                  let count1 = Stream.count strm in
                   let x = parse_fun strm in
-                  let ep = loc_ep strm in
-                  let loc = Loc.merge bp ep in (x, loc)
+                  let count2 = Stream.count strm in
+                  let loc =
+                    if count1 < count2
+                    then (let ep = loc_ep strm in Loc.merge bp ep)
+                    else Loc.join bp
+                  in (x, loc)
                   
                 let stream_peek_nth strm n =
                   let rec loop i =
@@ -17799,13 +17893,6 @@ module Struct =
                                  in Some t
                              | None -> None)
                     | LocAct (_, _) | DeadEnd -> None
-                  and insert_new =
-                    function
-                    | s :: sl ->
-                        Node
-                          { node = s; son = insert_new sl; brother = DeadEnd;
-                          }
-                    | [] -> LocAct (action, [])
                   in insert gsymbols tree
                   
                 let insert_level entry e1 symbols action slev =
@@ -18868,7 +18955,7 @@ module Printers =
                        "Cannot print %S this identifier does not respect OCaml lexing rules (%s)"
                        str (Lexer.Error.to_string exn))
               
-            let ocaml_char = function | "'" -> "\\'" | c -> c
+            let ocaml_char x = match x with | "'" -> "\\'" | c -> c
               
             let rec get_expr_args a al =
               match a with
@@ -19150,7 +19237,16 @@ module Printers =
                   fun f t ->
                     match Ast.list_of_ctyp t [] with
                     | [] -> ()
-                    | ts -> pp f "@[<hv0>| %a@]" (list o#ctyp "@ | ") ts
+                    | ts ->
+                        pp f "@[<hv0>| %a@]"
+                          (list o#constructor_declaration "@ | ") ts
+                method private constructor_declaration =
+                  fun f t ->
+                    match t with
+                    | Ast.TyCol (_, t1, (Ast.TyArr (_, t2, t3))) ->
+                        pp f "@[<2>%a :@ @[<2>%a@ ->@ %a@]@]" o#ctyp t1
+                          o#constructor_type t2 o#ctyp t3
+                    | t -> o#ctyp f t
                 method string = fun f -> pp f "%s"
                 method quoted_string = fun f -> pp f "%S"
                 method numeric =
@@ -19388,7 +19484,7 @@ module Printers =
                       | Ast.ExInt64 (_, s) -> o#numeric f s "L"
                       | Ast.ExInt32 (_, s) -> o#numeric f s "l"
                       | Ast.ExFlo (_, s) -> o#numeric f s ""
-                      | Ast.ExChr (_, s) -> pp f "'%s'" (ocaml_char s)
+                      | Ast.ExChr (_, s) -> pp f "'%s'" s
                       | Ast.ExId (_, i) -> o#var_ident f i
                       | Ast.ExRec (_, b, (Ast.ExNil _)) ->
                           pp f "@[<hv0>@[<hv2>{%a@]@ }@]" o#record_binding b
@@ -19533,7 +19629,7 @@ module Printers =
                       | Ast.PaInt32 (_, s) -> o#numeric f s "l"
                       | Ast.PaInt (_, s) -> o#numeric f s ""
                       | Ast.PaFlo (_, s) -> o#numeric f s ""
-                      | Ast.PaChr (_, s) -> pp f "'%s'" (ocaml_char s)
+                      | Ast.PaChr (_, s) -> pp f "'%s'" s
                       | Ast.PaLab (_, s, (Ast.PaNil _)) -> pp f "~%s" s
                       | Ast.PaVrn (_, s) -> pp f "`%a" o#var s
                       | Ast.PaTyp (_, i) -> pp f "@[<2>#%a@]" o#ident i
@@ -19889,7 +19985,7 @@ module Printers =
                     in
                       match ce with
                       | Ast.CeApp (_, ce, e) ->
-                          pp f "@[<2>%a@ %a@]" o#class_expr ce o#expr e
+                          pp f "@[<2>%a@ %a@]" o#class_expr ce o#apply_expr e
                       | Ast.CeCon (_, Ast.ViNil, i, (Ast.TyNil _)) ->
                           pp f "@[<2>%a@]" o#ident i
                       | Ast.CeCon (_, Ast.ViNil, i, t) ->
index acb8afd3cba256b17bbd5e6d6adc0c4db3942b51..fb49d01b5631dd58c5e5759eb34dbafc323210ae 100644 (file)
@@ -471,11 +471,10 @@ module Make (Loc : Sig.Loc) : Sig.Camlp4Ast with module Loc = Loc =
             value meta_loc = meta_loc_expr;
             module Expr =
               struct
-                value meta_string _loc s =
-                  Ast.ExStr _loc (safe_string_escaped s);
+                value meta_string _loc s = Ast.ExStr _loc s;
                 value meta_int _loc s = Ast.ExInt _loc s;
                 value meta_float _loc s = Ast.ExFlo _loc s;
-                value meta_char _loc s = Ast.ExChr _loc (String.escaped s);
+                value meta_char _loc s = Ast.ExChr _loc s;
                 value meta_bool _loc =
                   fun
                   [ False -> Ast.ExId _loc (Ast.IdUid _loc "False")
@@ -5048,6 +5047,8 @@ module Make (Loc : Sig.Loc) : Sig.Camlp4Ast with module Loc = Loc =
             (*  source tree.                                                            *)
             (*                                                                          *)
             (****************************************************************************)
+            (* Note: when you modify these types you must increment
+   ast magic numbers defined in Camlp4_config.ml. *)
             'a 'a_out.
             ('self_type -> 'a -> 'a_out) ->
               meta_option 'a -> meta_option 'a_out =
index 6cc5466c0ede1daeaa74e64e9670f0d67ba0894f..a434eea4f38baac645c2b5539625e77606bfe5b6 100644 (file)
@@ -588,6 +588,12 @@ New syntax:\
         let stopped_at _loc = Some (Loc.move_line 1 _loc)
           
         (* FIXME be more precise *)
+        let rec generalized_type_of_type =
+          function
+          | Ast.TyArr (_, t1, t2) ->
+              let (tl, rt) = generalized_type_of_type t2 in ((t1 :: tl), rt)
+          | t -> ([], t)
+          
         let symbolchar =
           let list =
             [ '$'; '!'; '%'; '&'; '*'; '+'; '-'; '.'; '/'; ':'; '<'; '=';
@@ -676,8 +682,8 @@ New syntax:\
                  (match Stream.peek __strm with
                   | Some
                       ((KEYWORD
-                          (("mod" | "land" | "lor" | "lxor" | "lsl" | "lsr" |
-                              "asr"
+                          (("or" | "mod" | "land" | "lor" | "lxor" | "lsl" |
+                              "lsr" | "asr"
                             as i)),
                         _loc))
                       ->
@@ -3027,16 +3033,8 @@ New syntax:\
                     [ (None, (Some Camlp4.Sig.Grammar.RightA),
                        [ ([ Gram.Snterm
                               (Gram.Entry.obj
-                                 (cvalue_binding :
-                                   'cvalue_binding Gram.Entry.t)) ],
-                          (Gram.Action.mk
-                             (fun (bi : 'cvalue_binding) (_loc : Gram.Loc.t)
-                                -> (bi : 'fun_binding))));
-                         ([ Gram.Stry
-                              (Gram.Snterm
-                                 (Gram.Entry.obj
-                                    (labeled_ipatt :
-                                      'labeled_ipatt Gram.Entry.t)));
+                                 (labeled_ipatt :
+                                   'labeled_ipatt Gram.Entry.t));
                             Gram.Sself ],
                           (Gram.Action.mk
                              (fun (e : 'fun_binding) (p : 'labeled_ipatt)
@@ -3044,6 +3042,14 @@ New syntax:\
                                 (Ast.ExFun (_loc,
                                    (Ast.McArr (_loc, p, (Ast.ExNil _loc), e))) :
                                   'fun_binding))));
+                         ([ Gram.Stry
+                              (Gram.Snterm
+                                 (Gram.Entry.obj
+                                    (cvalue_binding :
+                                      'cvalue_binding Gram.Entry.t))) ],
+                          (Gram.Action.mk
+                             (fun (bi : 'cvalue_binding) (_loc : Gram.Loc.t)
+                                -> (bi : 'fun_binding))));
                          ([ Gram.Stry
                               (Gram.srules fun_binding
                                  [ ([ Gram.Skeyword "("; Gram.Skeyword "type" ],
@@ -4291,6 +4297,25 @@ New syntax:\
                           (Gram.Action.mk
                              (fun _ (p1 : 'label_ipatt) (_loc : Gram.Loc.t)
                                 -> (p1 : 'label_ipatt_list))));
+                         ([ Gram.Snterm
+                              (Gram.Entry.obj
+                                 (label_ipatt : 'label_ipatt Gram.Entry.t));
+                            Gram.Skeyword ";"; Gram.Skeyword "_";
+                            Gram.Skeyword ";" ],
+                          (Gram.Action.mk
+                             (fun _ _ _ (p1 : 'label_ipatt)
+                                (_loc : Gram.Loc.t) ->
+                                (Ast.PaSem (_loc, p1, (Ast.PaAny _loc)) :
+                                  'label_ipatt_list))));
+                         ([ Gram.Snterm
+                              (Gram.Entry.obj
+                                 (label_ipatt : 'label_ipatt Gram.Entry.t));
+                            Gram.Skeyword ";"; Gram.Skeyword "_" ],
+                          (Gram.Action.mk
+                             (fun _ _ (p1 : 'label_ipatt) (_loc : Gram.Loc.t)
+                                ->
+                                (Ast.PaSem (_loc, p1, (Ast.PaAny _loc)) :
+                                  'label_ipatt_list))));
                          ([ Gram.Snterm
                               (Gram.Entry.obj
                                  (label_ipatt : 'label_ipatt Gram.Entry.t));
@@ -5036,41 +5061,17 @@ New syntax:\
                               (Gram.Entry.obj
                                  (a_UIDENT : 'a_UIDENT Gram.Entry.t));
                             Gram.Skeyword ":";
-                            Gram.Snterm
-                              (Gram.Entry.obj
-                                 (constructor_arg_list :
-                                   'constructor_arg_list Gram.Entry.t)) ],
-                          (Gram.Action.mk
-                             (fun (ret : 'constructor_arg_list) _
-                                (s : 'a_UIDENT) (_loc : Gram.Loc.t) ->
-                                (match Ast.list_of_ctyp ret [] with
-                                 | [ c ] ->
-                                     Ast.TyCol (_loc,
-                                       (Ast.TyId (_loc,
-                                          (Ast.IdUid (_loc, s)))),
-                                       c)
-                                 | _ ->
-                                     raise
-                                       (Stream.Error
-                                          "invalid generalized constructor type") :
-                                  'constructor_declarations))));
-                         ([ Gram.Snterm
-                              (Gram.Entry.obj
-                                 (a_UIDENT : 'a_UIDENT Gram.Entry.t));
-                            Gram.Skeyword ":";
-                            Gram.Snterm
-                              (Gram.Entry.obj
-                                 (constructor_arg_list :
-                                   'constructor_arg_list Gram.Entry.t));
-                            Gram.Skeyword "->";
                             Gram.Snterm
                               (Gram.Entry.obj (ctyp : 'ctyp Gram.Entry.t)) ],
                           (Gram.Action.mk
-                             (fun (ret : 'ctyp) _ (t : 'constructor_arg_list)
-                                _ (s : 'a_UIDENT) (_loc : Gram.Loc.t) ->
-                                (Ast.TyCol (_loc,
-                                   (Ast.TyId (_loc, (Ast.IdUid (_loc, s)))),
-                                   (Ast.TyArr (_loc, t, ret))) :
+                             (fun (t : 'ctyp) _ (s : 'a_UIDENT)
+                                (_loc : Gram.Loc.t) ->
+                                (let (tl, rt) = generalized_type_of_type t
+                                 in
+                                   Ast.TyCol (_loc,
+                                     (Ast.TyId (_loc, (Ast.IdUid (_loc, s)))),
+                                     (Ast.TyArr (_loc,
+                                        (Ast.tyAnd_of_list tl), rt))) :
                                   'constructor_declarations))));
                          ([ Gram.Snterm
                               (Gram.Entry.obj
@@ -8756,7 +8757,10 @@ New syntax:\
                           (Gram.Action.mk
                              (fun (st2 : 'str_item_quot) _ (st1 : 'str_item)
                                 (_loc : Gram.Loc.t) ->
-                                (Ast.StSem (_loc, st1, st2) : 'str_item_quot))));
+                                (match st2 with
+                                 | Ast.StNil _ -> st1
+                                 | _ -> Ast.StSem (_loc, st1, st2) :
+                                  'str_item_quot))));
                          ([ Gram.Skeyword "#";
                             Gram.Snterm
                               (Gram.Entry.obj
@@ -8792,7 +8796,10 @@ New syntax:\
                           (Gram.Action.mk
                              (fun (sg2 : 'sig_item_quot) _ (sg1 : 'sig_item)
                                 (_loc : Gram.Loc.t) ->
-                                (Ast.SgSem (_loc, sg1, sg2) : 'sig_item_quot))));
+                                (match sg2 with
+                                 | Ast.SgNil _ -> sg1
+                                 | _ -> Ast.SgSem (_loc, sg1, sg2) :
+                                  'sig_item_quot))));
                          ([ Gram.Skeyword "#";
                             Gram.Snterm
                               (Gram.Entry.obj
@@ -9232,7 +9239,9 @@ New syntax:\
                           (Gram.Action.mk
                              (fun (x2 : 'class_str_item_quot) _
                                 (x1 : 'class_str_item) (_loc : Gram.Loc.t) ->
-                                (Ast.CrSem (_loc, x1, x2) :
+                                (match x2 with
+                                 | Ast.CrNil _ -> x1
+                                 | _ -> Ast.CrSem (_loc, x1, x2) :
                                   'class_str_item_quot)))) ]) ]))
                   ());
              Gram.extend
@@ -9261,7 +9270,9 @@ New syntax:\
                           (Gram.Action.mk
                              (fun (x2 : 'class_sig_item_quot) _
                                 (x1 : 'class_sig_item) (_loc : Gram.Loc.t) ->
-                                (Ast.CgSem (_loc, x1, x2) :
+                                (match x2 with
+                                 | Ast.CgNil _ -> x1
+                                 | _ -> Ast.CgSem (_loc, x1, x2) :
                                   'class_sig_item_quot)))) ]) ]))
                   ());
              Gram.extend (with_constr_quot : 'with_constr_quot Gram.Entry.t)
@@ -13692,6 +13703,7 @@ Added statements:
      DEFINE <lident> = <expression> IN <expression>
      __FILE__
      __LOCATION__
+     LOCATION_OF <parameter>
 
   In patterns:
 
@@ -13724,6 +13736,10 @@ Added statements:
 
   The expression __FILE__ returns the current compiled file name.
   The expression __LOCATION__ returns the current location of itself.
+  If used inside a macro, it returns the location where the macro is
+  called.
+  The expression (LOCATION_OF parameter) returns the location of the given
+  macro parameter. It cannot be used outside a macro definition.
 
 *)
     open Camlp4
@@ -13794,6 +13810,48 @@ Added statements:
                    Ast.ExId (_, (Ast.IdUid (_, x)))
                  as e) ->
                   (try List.assoc x env with | Not_found -> super#expr e)
+              | (Ast.ExApp (_loc,
+                   (Ast.ExId (_, (Ast.IdUid (_, "LOCATION_OF")))),
+                   (Ast.ExId (_, (Ast.IdLid (_, x))))) |
+                   Ast.ExApp (_loc,
+                     (Ast.ExId (_, (Ast.IdUid (_, "LOCATION_OF")))),
+                     (Ast.ExId (_, (Ast.IdUid (_, x)))))
+                 as e) ->
+                  (try
+                     let loc = Ast.loc_of_expr (List.assoc x env) in
+                     let (a, b, c, d, e, f, g, h) = Loc.to_tuple loc
+                     in
+                       Ast.ExApp (_loc,
+                         (Ast.ExId (_loc,
+                            (Ast.IdAcc (_loc, (Ast.IdUid (_loc, "Loc")),
+                               (Ast.IdLid (_loc, "of_tuple")))))),
+                         (Ast.ExTup (_loc,
+                            (Ast.ExCom (_loc,
+                               (Ast.ExStr (_loc, (Ast.safe_string_escaped a))),
+                               (Ast.ExCom (_loc,
+                                  (Ast.ExCom (_loc,
+                                     (Ast.ExCom (_loc,
+                                        (Ast.ExCom (_loc,
+                                           (Ast.ExCom (_loc,
+                                              (Ast.ExCom (_loc,
+                                                 (Ast.ExInt (_loc,
+                                                    (string_of_int b))),
+                                                 (Ast.ExInt (_loc,
+                                                    (string_of_int c))))),
+                                              (Ast.ExInt (_loc,
+                                                 (string_of_int d))))),
+                                           (Ast.ExInt (_loc,
+                                              (string_of_int e))))),
+                                        (Ast.ExInt (_loc, (string_of_int f))))),
+                                     (Ast.ExInt (_loc, (string_of_int g))))),
+                                  (if h
+                                   then
+                                     Ast.ExId (_loc,
+                                       (Ast.IdUid (_loc, "True")))
+                                   else
+                                     Ast.ExId (_loc,
+                                       (Ast.IdUid (_loc, "False")))))))))))
+                   with | Not_found -> super#expr e)
               | e -> super#expr e
             method patt =
               function
@@ -14541,87 +14599,6 @@ Added statements:
                                 (i : 'uident) _ (_loc : Gram.Loc.t) ->
                                 (if is_defined i then e1 else e2 : 'expr)))) ]) ]))
                   ());
-             Gram.extend (expr : 'expr Gram.Entry.t)
-               ((fun () ->
-                   ((Some (Camlp4.Sig.Grammar.Level "simple")),
-                    [ (None, None,
-                       [ ([ Gram.Stoken
-                              (((function
-                                 | LIDENT "__LOCATION__" -> true
-                                 | _ -> false),
-                                "LIDENT \"__LOCATION__\"")) ],
-                          (Gram.Action.mk
-                             (fun (__camlp4_0 : Gram.Token.t)
-                                (_loc : Gram.Loc.t) ->
-                                match __camlp4_0 with
-                                | LIDENT "__LOCATION__" ->
-                                    (let (a, b, c, d, e, f, g, h) =
-                                       Loc.to_tuple _loc
-                                     in
-                                       Ast.ExApp (_loc,
-                                         (Ast.ExId (_loc,
-                                            (Ast.IdAcc (_loc,
-                                               (Ast.IdUid (_loc, "Loc")),
-                                               (Ast.IdLid (_loc, "of_tuple")))))),
-                                         (Ast.ExTup (_loc,
-                                            (Ast.ExCom (_loc,
-                                               (Ast.ExStr (_loc,
-                                                  (Ast.safe_string_escaped a))),
-                                               (Ast.ExCom (_loc,
-                                                  (Ast.ExCom (_loc,
-                                                     (Ast.ExCom (_loc,
-                                                        (Ast.ExCom (_loc,
-                                                           (Ast.ExCom (_loc,
-                                                              (Ast.ExCom
-                                                                 (_loc,
-                                                                 (Ast.ExInt
-                                                                    (_loc,
-                                                                    (
-                                                                    string_of_int
-                                                                    b))),
-                                                                 (Ast.ExInt
-                                                                    (_loc,
-                                                                    (
-                                                                    string_of_int
-                                                                    c))))),
-                                                              (Ast.ExInt
-                                                                 (_loc,
-                                                                 (string_of_int
-                                                                    d))))),
-                                                           (Ast.ExInt (_loc,
-                                                              (string_of_int
-                                                                 e))))),
-                                                        (Ast.ExInt (_loc,
-                                                           (string_of_int f))))),
-                                                     (Ast.ExInt (_loc,
-                                                        (string_of_int g))))),
-                                                  (if h
-                                                   then
-                                                     Ast.ExId (_loc,
-                                                       (Ast.IdUid (_loc,
-                                                          "True")))
-                                                   else
-                                                     Ast.ExId (_loc,
-                                                       (Ast.IdUid (_loc,
-                                                          "False"))))))))))) :
-                                      'expr)
-                                | _ -> assert false)));
-                         ([ Gram.Stoken
-                              (((function
-                                 | LIDENT "__FILE__" -> true
-                                 | _ -> false),
-                                "LIDENT \"__FILE__\"")) ],
-                          (Gram.Action.mk
-                             (fun (__camlp4_0 : Gram.Token.t)
-                                (_loc : Gram.Loc.t) ->
-                                match __camlp4_0 with
-                                | LIDENT "__FILE__" ->
-                                    (Ast.ExStr (_loc,
-                                       (Ast.safe_string_escaped
-                                          (Loc.file_name _loc))) :
-                                      'expr)
-                                | _ -> assert false))) ]) ]))
-                  ());
              Gram.extend (patt : 'patt Gram.Entry.t)
                ((fun () ->
                    (None,
@@ -14790,17 +14767,47 @@ Added statements:
           
         open Ast
           
-        let remove_nothings =
+        (* Remove NOTHING and expanse __FILE__ and __LOCATION__ *)
+        let map_expr =
           function
           | Ast.ExApp (_, e, (Ast.ExId (_, (Ast.IdUid (_, "NOTHING"))))) |
               Ast.ExFun (_,
                 (Ast.McArr (_, (Ast.PaId (_, (Ast.IdUid (_, "NOTHING")))),
                    (Ast.ExNil _), e)))
               -> e
+          | Ast.ExId (_loc, (Ast.IdLid (_, "__FILE__"))) ->
+              Ast.ExStr (_loc,
+                (Ast.safe_string_escaped (Loc.file_name _loc)))
+          | Ast.ExId (_loc, (Ast.IdLid (_, "__LOCATION__"))) ->
+              let (a, b, c, d, e, f, g, h) = Loc.to_tuple _loc
+              in
+                Ast.ExApp (_loc,
+                  (Ast.ExId (_loc,
+                     (Ast.IdAcc (_loc, (Ast.IdUid (_loc, "Loc")),
+                        (Ast.IdLid (_loc, "of_tuple")))))),
+                  (Ast.ExTup (_loc,
+                     (Ast.ExCom (_loc,
+                        (Ast.ExStr (_loc, (Ast.safe_string_escaped a))),
+                        (Ast.ExCom (_loc,
+                           (Ast.ExCom (_loc,
+                              (Ast.ExCom (_loc,
+                                 (Ast.ExCom (_loc,
+                                    (Ast.ExCom (_loc,
+                                       (Ast.ExCom (_loc,
+                                          (Ast.ExInt (_loc,
+                                             (string_of_int b))),
+                                          (Ast.ExInt (_loc,
+                                             (string_of_int c))))),
+                                       (Ast.ExInt (_loc, (string_of_int d))))),
+                                    (Ast.ExInt (_loc, (string_of_int e))))),
+                                 (Ast.ExInt (_loc, (string_of_int f))))),
+                              (Ast.ExInt (_loc, (string_of_int g))))),
+                           (if h
+                            then Ast.ExId (_loc, (Ast.IdUid (_loc, "True")))
+                            else Ast.ExId (_loc, (Ast.IdUid (_loc, "False")))))))))))
           | e -> e
           
-        let _ =
-          register_str_item_filter (Ast.map_expr remove_nothings)#str_item
+        let _ = register_str_item_filter (Ast.map_expr map_expr)#str_item
           
       end
       
index 664ca9f758d69ad85fffccaefc994f7a340e1b4b..52c544a02e384de9b8059e3f6ae83d3551ba4260 100644 (file)
@@ -11,7 +11,7 @@
 .\"*                                                                     *
 .\"***********************************************************************
 .\"
-.\" $Id$
+.\" $Id: camlp4.1.tpl 11156 2011-07-27 14:17:02Z doligez $
 .\"
 .TH CAMLP4 1  "" "INRIA"
 .SH NAME
diff --git a/camlp4/test/fixtures/assert.ml b/camlp4/test/fixtures/assert.ml
deleted file mode 100644 (file)
index 8d9ea49..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-module MySet = Set.Make(String);;
-let set = MySet.empty;;
-assert (MySet.is_empty set);;
diff --git a/camlp4/test/fixtures/backquoted_irrefutable_tuple.ml b/camlp4/test/fixtures/backquoted_irrefutable_tuple.ml
deleted file mode 100644 (file)
index f6764cb..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-EXTEND Gram
-  abc: [ [ `(x,y) -> x + y ] ];
-END;
diff --git a/camlp4/test/fixtures/backquoted_record.ml b/camlp4/test/fixtures/backquoted_record.ml
deleted file mode 100644 (file)
index e056f73..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-EXTEND Gram
-  raw_string:
-  [[ `QUOTATION { Sig.Quotation.q_contents = c; q_name = n } -> (c, n) ]];
-END;
diff --git a/camlp4/test/fixtures/backquoted_tuple.ml b/camlp4/test/fixtures/backquoted_tuple.ml
deleted file mode 100644 (file)
index 72ae1a6..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-EXTEND Gram
-  abc: [ [ `(A,y) -> y ] ];
-END;
diff --git a/camlp4/test/fixtures/big-tab1.ml b/camlp4/test/fixtures/big-tab1.ml
deleted file mode 100644 (file)
index 254da82..0000000
+++ /dev/null
@@ -1,704 +0,0 @@
-[|
-aaa;
-aab;
-aac;
-aad;
-aae;
-aaf;
-aag;
-aah;
-aai;
-aaj;
-aak;
-aal;
-aam;
-aan;
-aao;
-aap;
-aaq;
-aar;
-aas;
-aat;
-aau;
-aav;
-aaw;
-aax;
-aay;
-aaz;
-aba;
-abb;
-abc;
-abd;
-abe;
-abf;
-abg;
-abh;
-abi;
-abj;
-abk;
-abl;
-abm;
-abn;
-abo;
-abp;
-abq;
-abr;
-abs;
-abt;
-abu;
-abv;
-abw;
-abx;
-aby;
-abz;
-aca;
-acb;
-acc;
-acd;
-ace;
-acf;
-acg;
-ach;
-aci;
-acj;
-ack;
-acl;
-acm;
-acn;
-aco;
-acp;
-acq;
-acr;
-acs;
-act;
-acu;
-acv;
-acw;
-acx;
-acy;
-acz;
-ada;
-adb;
-adc;
-add;
-ade;
-adf;
-adg;
-adh;
-adi;
-adj;
-adk;
-adl;
-adm;
-adn;
-ado;
-adp;
-adq;
-adr;
-ads;
-adt;
-adu;
-adv;
-adw;
-adx;
-ady;
-adz;
-aea;
-aeb;
-aec;
-aed;
-aee;
-aef;
-aeg;
-aeh;
-aei;
-aej;
-aek;
-ael;
-aem;
-aen;
-aeo;
-aep;
-aeq;
-aer;
-aes;
-aet;
-aeu;
-aev;
-aew;
-aex;
-aey;
-aez;
-afa;
-afb;
-afc;
-afd;
-afe;
-aff;
-afg;
-afh;
-afi;
-afj;
-afk;
-afl;
-afm;
-afn;
-afo;
-afp;
-afq;
-afr;
-afs;
-aft;
-afu;
-afv;
-afw;
-afx;
-afy;
-afz;
-aga;
-agb;
-agc;
-agd;
-age;
-agf;
-agg;
-agh;
-agi;
-agj;
-agk;
-agl;
-agm;
-agn;
-ago;
-agp;
-agq;
-agr;
-ags;
-agt;
-agu;
-agv;
-agw;
-agx;
-agy;
-agz;
-aha;
-ahb;
-ahc;
-ahd;
-ahe;
-ahf;
-ahg;
-ahh;
-ahi;
-ahj;
-ahk;
-ahl;
-ahm;
-ahn;
-aho;
-ahp;
-ahq;
-ahr;
-ahs;
-aht;
-ahu;
-ahv;
-ahw;
-ahx;
-ahy;
-ahz;
-aia;
-aib;
-aic;
-aid;
-aie;
-aif;
-aig;
-aih;
-aii;
-aij;
-aik;
-ail;
-aim;
-ain;
-aio;
-aip;
-aiq;
-air;
-ais;
-ait;
-aiu;
-aiv;
-aiw;
-aix;
-aiy;
-aiz;
-aja;
-ajb;
-ajc;
-ajd;
-aje;
-ajf;
-ajg;
-ajh;
-aji;
-ajj;
-ajk;
-ajl;
-ajm;
-ajn;
-ajo;
-ajp;
-ajq;
-ajr;
-ajs;
-ajt;
-aju;
-ajv;
-ajw;
-ajx;
-ajy;
-ajz;
-aka;
-akb;
-akc;
-akd;
-ake;
-akf;
-akg;
-akh;
-aki;
-akj;
-akk;
-akl;
-akm;
-akn;
-ako;
-akp;
-akq;
-akr;
-aks;
-akt;
-aku;
-akv;
-akw;
-akx;
-aky;
-akz;
-ala;
-alb;
-alc;
-ald;
-ale;
-alf;
-alg;
-alh;
-ali;
-alj;
-alk;
-all;
-alm;
-aln;
-alo;
-alp;
-alq;
-alr;
-als;
-alt;
-alu;
-alv;
-alw;
-alx;
-aly;
-alz;
-ama;
-amb;
-amc;
-amd;
-ame;
-amf;
-amg;
-amh;
-ami;
-amj;
-amk;
-aml;
-amm;
-amn;
-amo;
-amp;
-amq;
-amr;
-ams;
-amt;
-amu;
-amv;
-amw;
-amx;
-amy;
-amz;
-ana;
-anb;
-anc;
-ane;
-anf;
-ang;
-anh;
-ani;
-anj;
-ank;
-anl;
-anm;
-ann;
-ano;
-anp;
-anq;
-anr;
-ans;
-ant;
-anu;
-anv;
-anw;
-anx;
-any;
-anz;
-aoa;
-aob;
-aoc;
-aod;
-aoe;
-aof;
-aog;
-aoh;
-aoi;
-aoj;
-aok;
-aol;
-aom;
-aon;
-aoo;
-aop;
-aoq;
-aor;
-aos;
-aot;
-aou;
-aov;
-aow;
-aox;
-aoy;
-aoz;
-apa;
-apb;
-apc;
-apd;
-ape;
-apf;
-apg;
-aph;
-api;
-apj;
-apk;
-apl;
-apm;
-apn;
-apo;
-app;
-apq;
-apr;
-aps;
-apt;
-apu;
-apv;
-apw;
-apx;
-apy;
-apz;
-aqa;
-aqb;
-aqc;
-aqd;
-aqe;
-aqf;
-aqg;
-aqh;
-aqi;
-aqj;
-aqk;
-aql;
-aqm;
-aqn;
-aqo;
-aqp;
-aqq;
-aqr;
-aqs;
-aqt;
-aqu;
-aqv;
-aqw;
-aqx;
-aqy;
-aqz;
-ara;
-arb;
-arc;
-ard;
-are;
-arf;
-arg;
-arh;
-ari;
-arj;
-ark;
-arl;
-arm;
-arn;
-aro;
-arp;
-arq;
-arr;
-ars;
-art;
-aru;
-arv;
-arw;
-arx;
-ary;
-arz;
-asa;
-asb;
-asc;
-asd;
-ase;
-asf;
-asg;
-ash;
-asi;
-asj;
-ask;
-asl;
-asm;
-asn;
-aso;
-asp;
-asq;
-ass;
-ast;
-asu;
-asv;
-asw;
-asx;
-asy;
-asz;
-ata;
-atb;
-atc;
-atd;
-ate;
-atf;
-atg;
-ath;
-ati;
-atj;
-atk;
-atl;
-atm;
-atn;
-ato;
-atp;
-atq;
-atr;
-ats;
-att;
-atu;
-atv;
-atw;
-atx;
-aty;
-atz;
-aua;
-aub;
-auc;
-aud;
-aue;
-auf;
-aug;
-auh;
-aui;
-auj;
-auk;
-aul;
-aum;
-aun;
-auo;
-aup;
-auq;
-aur;
-aus;
-aut;
-auu;
-auv;
-auw;
-aux;
-auy;
-auz;
-ava;
-avb;
-avc;
-avd;
-ave;
-avf;
-avg;
-avh;
-avi;
-avj;
-avk;
-avl;
-avm;
-avn;
-avo;
-avp;
-avq;
-avr;
-avs;
-avt;
-avu;
-avv;
-avw;
-avx;
-avy;
-avz;
-awa;
-awb;
-awc;
-awd;
-awe;
-awf;
-awg;
-awh;
-awi;
-awj;
-awk;
-awl;
-awm;
-awn;
-awo;
-awp;
-awq;
-awr;
-aws;
-awt;
-awu;
-awv;
-aww;
-awx;
-awy;
-awz;
-axa;
-axb;
-axc;
-axd;
-axe;
-axf;
-axg;
-axh;
-axi;
-axj;
-axk;
-axl;
-axm;
-axn;
-axo;
-axp;
-axq;
-axr;
-axs;
-axt;
-axu;
-axv;
-axw;
-axx;
-axy;
-axz;
-aya;
-ayb;
-ayc;
-ayd;
-aye;
-ayf;
-ayg;
-ayh;
-ayi;
-ayj;
-ayk;
-ayl;
-aym;
-ayn;
-ayo;
-ayp;
-ayq;
-ayr;
-ays;
-ayt;
-ayu;
-ayv;
-ayw;
-ayx;
-ayy;
-ayz;
-aza;
-azb;
-azc;
-azd;
-aze;
-azf;
-azg;
-azh;
-azi;
-azj;
-azk;
-azl;
-azm;
-azn;
-azo;
-azp;
-azq;
-azr;
-azs;
-azt;
-azu;
-azv;
-azw;
-azx;
-azy;
-azz;
-baa;
-bab;
-bac;
-bad;
-bae;
-baf;
-bag;
-bah;
-bai;
-baj;
-bak;
-bal;
-bam;
-ban;
-bao;
-bap;
-baq;
-bar;
-bas;
-bat;
-bau;
-bav;
-baw;
-bax;
-bay;
-baz;
-bba;
-bbb
-|];
diff --git a/camlp4/test/fixtures/big-tab2.ml b/camlp4/test/fixtures/big-tab2.ml
deleted file mode 100644 (file)
index e640f34..0000000
+++ /dev/null
@@ -1,18282 +0,0 @@
-[|
-aaaa;
-aaab;
-aaac;
-aaad;
-aaae;
-aaaf;
-aaag;
-aaah;
-aaai;
-aaaj;
-aaak;
-aaal;
-aaam;
-aaan;
-aaao;
-aaap;
-aaaq;
-aaar;
-aaas;
-aaat;
-aaau;
-aaav;
-aaaw;
-aaax;
-aaay;
-aaaz;
-aaba;
-aabb;
-aabc;
-aabd;
-aabe;
-aabf;
-aabg;
-aabh;
-aabi;
-aabj;
-aabk;
-aabl;
-aabm;
-aabn;
-aabo;
-aabp;
-aabq;
-aabr;
-aabs;
-aabt;
-aabu;
-aabv;
-aabw;
-aabx;
-aaby;
-aabz;
-aaca;
-aacb;
-aacc;
-aacd;
-aace;
-aacf;
-aacg;
-aach;
-aaci;
-aacj;
-aack;
-aacl;
-aacm;
-aacn;
-aaco;
-aacp;
-aacq;
-aacr;
-aacs;
-aact;
-aacu;
-aacv;
-aacw;
-aacx;
-aacy;
-aacz;
-aada;
-aadb;
-aadc;
-aadd;
-aade;
-aadf;
-aadg;
-aadh;
-aadi;
-aadj;
-aadk;
-aadl;
-aadm;
-aadn;
-aado;
-aadp;
-aadq;
-aadr;
-aads;
-aadt;
-aadu;
-aadv;
-aadw;
-aadx;
-aady;
-aadz;
-aaea;
-aaeb;
-aaec;
-aaed;
-aaee;
-aaef;
-aaeg;
-aaeh;
-aaei;
-aaej;
-aaek;
-aael;
-aaem;
-aaen;
-aaeo;
-aaep;
-aaeq;
-aaer;
-aaes;
-aaet;
-aaeu;
-aaev;
-aaew;
-aaex;
-aaey;
-aaez;
-aafa;
-aafb;
-aafc;
-aafd;
-aafe;
-aaff;
-aafg;
-aafh;
-aafi;
-aafj;
-aafk;
-aafl;
-aafm;
-aafn;
-aafo;
-aafp;
-aafq;
-aafr;
-aafs;
-aaft;
-aafu;
-aafv;
-aafw;
-aafx;
-aafy;
-aafz;
-aaga;
-aagb;
-aagc;
-aagd;
-aage;
-aagf;
-aagg;
-aagh;
-aagi;
-aagj;
-aagk;
-aagl;
-aagm;
-aagn;
-aago;
-aagp;
-aagq;
-aagr;
-aags;
-aagt;
-aagu;
-aagv;
-aagw;
-aagx;
-aagy;
-aagz;
-aaha;
-aahb;
-aahc;
-aahd;
-aahe;
-aahf;
-aahg;
-aahh;
-aahi;
-aahj;
-aahk;
-aahl;
-aahm;
-aahn;
-aaho;
-aahp;
-aahq;
-aahr;
-aahs;
-aaht;
-aahu;
-aahv;
-aahw;
-aahx;
-aahy;
-aahz;
-aaia;
-aaib;
-aaic;
-aaid;
-aaie;
-aaif;
-aaig;
-aaih;
-aaii;
-aaij;
-aaik;
-aail;
-aaim;
-aain;
-aaio;
-aaip;
-aaiq;
-aair;
-aais;
-aait;
-aaiu;
-aaiv;
-aaiw;
-aaix;
-aaiy;
-aaiz;
-aaja;
-aajb;
-aajc;
-aajd;
-aaje;
-aajf;
-aajg;
-aajh;
-aaji;
-aajj;
-aajk;
-aajl;
-aajm;
-aajn;
-aajo;
-aajp;
-aajq;
-aajr;
-aajs;
-aajt;
-aaju;
-aajv;
-aajw;
-aajx;
-aajy;
-aajz;
-aaka;
-aakb;
-aakc;
-aakd;
-aake;
-aakf;
-aakg;
-aakh;
-aaki;
-aakj;
-aakk;
-aakl;
-aakm;
-aakn;
-aako;
-aakp;
-aakq;
-aakr;
-aaks;
-aakt;
-aaku;
-aakv;
-aakw;
-aakx;
-aaky;
-aakz;
-aala;
-aalb;
-aalc;
-aald;
-aale;
-aalf;
-aalg;
-aalh;
-aali;
-aalj;
-aalk;
-aall;
-aalm;
-aaln;
-aalo;
-aalp;
-aalq;
-aalr;
-aals;
-aalt;
-aalu;
-aalv;
-aalw;
-aalx;
-aaly;
-aalz;
-aama;
-aamb;
-aamc;
-aamd;
-aame;
-aamf;
-aamg;
-aamh;
-aami;
-aamj;
-aamk;
-aaml;
-aamm;
-aamn;
-aamo;
-aamp;
-aamq;
-aamr;
-aams;
-aamt;
-aamu;
-aamv;
-aamw;
-aamx;
-aamy;
-aamz;
-aana;
-aanb;
-aanc;
-aand;
-aane;
-aanf;
-aang;
-aanh;
-aani;
-aanj;
-aank;
-aanl;
-aanm;
-aann;
-aano;
-aanp;
-aanq;
-aanr;
-aans;
-aant;
-aanu;
-aanv;
-aanw;
-aanx;
-aany;
-aanz;
-aaoa;
-aaob;
-aaoc;
-aaod;
-aaoe;
-aaof;
-aaog;
-aaoh;
-aaoi;
-aaoj;
-aaok;
-aaol;
-aaom;
-aaon;
-aaoo;
-aaop;
-aaoq;
-aaor;
-aaos;
-aaot;
-aaou;
-aaov;
-aaow;
-aaox;
-aaoy;
-aaoz;
-aapa;
-aapb;
-aapc;
-aapd;
-aape;
-aapf;
-aapg;
-aaph;
-aapi;
-aapj;
-aapk;
-aapl;
-aapm;
-aapn;
-aapo;
-aapp;
-aapq;
-aapr;
-aaps;
-aapt;
-aapu;
-aapv;
-aapw;
-aapx;
-aapy;
-aapz;
-aaqa;
-aaqb;
-aaqc;
-aaqd;
-aaqe;
-aaqf;
-aaqg;
-aaqh;
-aaqi;
-aaqj;
-aaqk;
-aaql;
-aaqm;
-aaqn;
-aaqo;
-aaqp;
-aaqq;
-aaqr;
-aaqs;
-aaqt;
-aaqu;
-aaqv;
-aaqw;
-aaqx;
-aaqy;
-aaqz;
-aara;
-aarb;
-aarc;
-aard;
-aare;
-aarf;
-aarg;
-aarh;
-aari;
-aarj;
-aark;
-aarl;
-aarm;
-aarn;
-aaro;
-aarp;
-aarq;
-aarr;
-aars;
-aart;
-aaru;
-aarv;
-aarw;
-aarx;
-aary;
-aarz;
-aasa;
-aasb;
-aasc;
-aasd;
-aase;
-aasf;
-aasg;
-aash;
-aasi;
-aasj;
-aask;
-aasl;
-aasm;
-aasn;
-aaso;
-aasp;
-aasq;
-aasr;
-aass;
-aast;
-aasu;
-aasv;
-aasw;
-aasx;
-aasy;
-aasz;
-aata;
-aatb;
-aatc;
-aatd;
-aate;
-aatf;
-aatg;
-aath;
-aati;
-aatj;
-aatk;
-aatl;
-aatm;
-aatn;
-aato;
-aatp;
-aatq;
-aatr;
-aats;
-aatt;
-aatu;
-aatv;
-aatw;
-aatx;
-aaty;
-aatz;
-aaua;
-aaub;
-aauc;
-aaud;
-aaue;
-aauf;
-aaug;
-aauh;
-aaui;
-aauj;
-aauk;
-aaul;
-aaum;
-aaun;
-aauo;
-aaup;
-aauq;
-aaur;
-aaus;
-aaut;
-aauu;
-aauv;
-aauw;
-aaux;
-aauy;
-aauz;
-aava;
-aavb;
-aavc;
-aavd;
-aave;
-aavf;
-aavg;
-aavh;
-aavi;
-aavj;
-aavk;
-aavl;
-aavm;
-aavn;
-aavo;
-aavp;
-aavq;
-aavr;
-aavs;
-aavt;
-aavu;
-aavv;
-aavw;
-aavx;
-aavy;
-aavz;
-aawa;
-aawb;
-aawc;
-aawd;
-aawe;
-aawf;
-aawg;
-aawh;
-aawi;
-aawj;
-aawk;
-aawl;
-aawm;
-aawn;
-aawo;
-aawp;
-aawq;
-aawr;
-aaws;
-aawt;
-aawu;
-aawv;
-aaww;
-aawx;
-aawy;
-aawz;
-aaxa;
-aaxb;
-aaxc;
-aaxd;
-aaxe;
-aaxf;
-aaxg;
-aaxh;
-aaxi;
-aaxj;
-aaxk;
-aaxl;
-aaxm;
-aaxn;
-aaxo;
-aaxp;
-aaxq;
-aaxr;
-aaxs;
-aaxt;
-aaxu;
-aaxv;
-aaxw;
-aaxx;
-aaxy;
-aaxz;
-aaya;
-aayb;
-aayc;
-aayd;
-aaye;
-aayf;
-aayg;
-aayh;
-aayi;
-aayj;
-aayk;
-aayl;
-aaym;
-aayn;
-aayo;
-aayp;
-aayq;
-aayr;
-aays;
-aayt;
-aayu;
-aayv;
-aayw;
-aayx;
-aayy;
-aayz;
-aaza;
-aazb;
-aazc;
-aazd;
-aaze;
-aazf;
-aazg;
-aazh;
-aazi;
-aazj;
-aazk;
-aazl;
-aazm;
-aazn;
-aazo;
-aazp;
-aazq;
-aazr;
-aazs;
-aazt;
-aazu;
-aazv;
-aazw;
-aazx;
-aazy;
-aazz;
-abaa;
-abab;
-abac;
-abad;
-abae;
-abaf;
-abag;
-abah;
-abai;
-abaj;
-abak;
-abal;
-abam;
-aban;
-abao;
-abap;
-abaq;
-abar;
-abas;
-abat;
-abau;
-abav;
-abaw;
-abax;
-abay;
-abaz;
-abba;
-abbb;
-abbc;
-abbd;
-abbe;
-abbf;
-abbg;
-abbh;
-abbi;
-abbj;
-abbk;
-abbl;
-abbm;
-abbn;
-abbo;
-abbp;
-abbq;
-abbr;
-abbs;
-abbt;
-abbu;
-abbv;
-abbw;
-abbx;
-abby;
-abbz;
-abca;
-abcb;
-abcc;
-abcd;
-abce;
-abcf;
-abcg;
-abch;
-abci;
-abcj;
-abck;
-abcl;
-abcm;
-abcn;
-abco;
-abcp;
-abcq;
-abcr;
-abcs;
-abct;
-abcu;
-abcv;
-abcw;
-abcx;
-abcy;
-abcz;
-abda;
-abdb;
-abdc;
-abdd;
-abde;
-abdf;
-abdg;
-abdh;
-abdi;
-abdj;
-abdk;
-abdl;
-abdm;
-abdn;
-abdo;
-abdp;
-abdq;
-abdr;
-abds;
-abdt;
-abdu;
-abdv;
-abdw;
-abdx;
-abdy;
-abdz;
-abea;
-abeb;
-abec;
-abed;
-abee;
-abef;
-abeg;
-abeh;
-abei;
-abej;
-abek;
-abel;
-abem;
-aben;
-abeo;
-abep;
-abeq;
-aber;
-abes;
-abet;
-abeu;
-abev;
-abew;
-abex;
-abey;
-abez;
-abfa;
-abfb;
-abfc;
-abfd;
-abfe;
-abff;
-abfg;
-abfh;
-abfi;
-abfj;
-abfk;
-abfl;
-abfm;
-abfn;
-abfo;
-abfp;
-abfq;
-abfr;
-abfs;
-abft;
-abfu;
-abfv;
-abfw;
-abfx;
-abfy;
-abfz;
-abga;
-abgb;
-abgc;
-abgd;
-abge;
-abgf;
-abgg;
-abgh;
-abgi;
-abgj;
-abgk;
-abgl;
-abgm;
-abgn;
-abgo;
-abgp;
-abgq;
-abgr;
-abgs;
-abgt;
-abgu;
-abgv;
-abgw;
-abgx;
-abgy;
-abgz;
-abha;
-abhb;
-abhc;
-abhd;
-abhe;
-abhf;
-abhg;
-abhh;
-abhi;
-abhj;
-abhk;
-abhl;
-abhm;
-abhn;
-abho;
-abhp;
-abhq;
-abhr;
-abhs;
-abht;
-abhu;
-abhv;
-abhw;
-abhx;
-abhy;
-abhz;
-abia;
-abib;
-abic;
-abid;
-abie;
-abif;
-abig;
-abih;
-abii;
-abij;
-abik;
-abil;
-abim;
-abin;
-abio;
-abip;
-abiq;
-abir;
-abis;
-abit;
-abiu;
-abiv;
-abiw;
-abix;
-abiy;
-abiz;
-abja;
-abjb;
-abjc;
-abjd;
-abje;
-abjf;
-abjg;
-abjh;
-abji;
-abjj;
-abjk;
-abjl;
-abjm;
-abjn;
-abjo;
-abjp;
-abjq;
-abjr;
-abjs;
-abjt;
-abju;
-abjv;
-abjw;
-abjx;
-abjy;
-abjz;
-abka;
-abkb;
-abkc;
-abkd;
-abke;
-abkf;
-abkg;
-abkh;
-abki;
-abkj;
-abkk;
-abkl;
-abkm;
-abkn;
-abko;
-abkp;
-abkq;
-abkr;
-abks;
-abkt;
-abku;
-abkv;
-abkw;
-abkx;
-abky;
-abkz;
-abla;
-ablb;
-ablc;
-abld;
-able;
-ablf;
-ablg;
-ablh;
-abli;
-ablj;
-ablk;
-abll;
-ablm;
-abln;
-ablo;
-ablp;
-ablq;
-ablr;
-abls;
-ablt;
-ablu;
-ablv;
-ablw;
-ablx;
-ably;
-ablz;
-abma;
-abmb;
-abmc;
-abmd;
-abme;
-abmf;
-abmg;
-abmh;
-abmi;
-abmj;
-abmk;
-abml;
-abmm;
-abmn;
-abmo;
-abmp;
-abmq;
-abmr;
-abms;
-abmt;
-abmu;
-abmv;
-abmw;
-abmx;
-abmy;
-abmz;
-abna;
-abnb;
-abnc;
-abnd;
-abne;
-abnf;
-abng;
-abnh;
-abni;
-abnj;
-abnk;
-abnl;
-abnm;
-abnn;
-abno;
-abnp;
-abnq;
-abnr;
-abns;
-abnt;
-abnu;
-abnv;
-abnw;
-abnx;
-abny;
-abnz;
-aboa;
-abob;
-aboc;
-abod;
-aboe;
-abof;
-abog;
-aboh;
-aboi;
-aboj;
-abok;
-abol;
-abom;
-abon;
-aboo;
-abop;
-aboq;
-abor;
-abos;
-abot;
-abou;
-abov;
-abow;
-abox;
-aboy;
-aboz;
-abpa;
-abpb;
-abpc;
-abpd;
-abpe;
-abpf;
-abpg;
-abph;
-abpi;
-abpj;
-abpk;
-abpl;
-abpm;
-abpn;
-abpo;
-abpp;
-abpq;
-abpr;
-abps;
-abpt;
-abpu;
-abpv;
-abpw;
-abpx;
-abpy;
-abpz;
-abqa;
-abqb;
-abqc;
-abqd;
-abqe;
-abqf;
-abqg;
-abqh;
-abqi;
-abqj;
-abqk;
-abql;
-abqm;
-abqn;
-abqo;
-abqp;
-abqq;
-abqr;
-abqs;
-abqt;
-abqu;
-abqv;
-abqw;
-abqx;
-abqy;
-abqz;
-abra;
-abrb;
-abrc;
-abrd;
-abre;
-abrf;
-abrg;
-abrh;
-abri;
-abrj;
-abrk;
-abrl;
-abrm;
-abrn;
-abro;
-abrp;
-abrq;
-abrr;
-abrs;
-abrt;
-abru;
-abrv;
-abrw;
-abrx;
-abry;
-abrz;
-absa;
-absb;
-absc;
-absd;
-abse;
-absf;
-absg;
-absh;
-absi;
-absj;
-absk;
-absl;
-absm;
-absn;
-abso;
-absp;
-absq;
-absr;
-abss;
-abst;
-absu;
-absv;
-absw;
-absx;
-absy;
-absz;
-abta;
-abtb;
-abtc;
-abtd;
-abte;
-abtf;
-abtg;
-abth;
-abti;
-abtj;
-abtk;
-abtl;
-abtm;
-abtn;
-abto;
-abtp;
-abtq;
-abtr;
-abts;
-abtt;
-abtu;
-abtv;
-abtw;
-abtx;
-abty;
-abtz;
-abua;
-abub;
-abuc;
-abud;
-abue;
-abuf;
-abug;
-abuh;
-abui;
-abuj;
-abuk;
-abul;
-abum;
-abun;
-abuo;
-abup;
-abuq;
-abur;
-abus;
-abut;
-abuu;
-abuv;
-abuw;
-abux;
-abuy;
-abuz;
-abva;
-abvb;
-abvc;
-abvd;
-abve;
-abvf;
-abvg;
-abvh;
-abvi;
-abvj;
-abvk;
-abvl;
-abvm;
-abvn;
-abvo;
-abvp;
-abvq;
-abvr;
-abvs;
-abvt;
-abvu;
-abvv;
-abvw;
-abvx;
-abvy;
-abvz;
-abwa;
-abwb;
-abwc;
-abwd;
-abwe;
-abwf;
-abwg;
-abwh;
-abwi;
-abwj;
-abwk;
-abwl;
-abwm;
-abwn;
-abwo;
-abwp;
-abwq;
-abwr;
-abws;
-abwt;
-abwu;
-abwv;
-abww;
-abwx;
-abwy;
-abwz;
-abxa;
-abxb;
-abxc;
-abxd;
-abxe;
-abxf;
-abxg;
-abxh;
-abxi;
-abxj;
-abxk;
-abxl;
-abxm;
-abxn;
-abxo;
-abxp;
-abxq;
-abxr;
-abxs;
-abxt;
-abxu;
-abxv;
-abxw;
-abxx;
-abxy;
-abxz;
-abya;
-abyb;
-abyc;
-abyd;
-abye;
-abyf;
-abyg;
-abyh;
-abyi;
-abyj;
-abyk;
-abyl;
-abym;
-abyn;
-abyo;
-abyp;
-abyq;
-abyr;
-abys;
-abyt;
-abyu;
-abyv;
-abyw;
-abyx;
-abyy;
-abyz;
-abza;
-abzb;
-abzc;
-abzd;
-abze;
-abzf;
-abzg;
-abzh;
-abzi;
-abzj;
-abzk;
-abzl;
-abzm;
-abzn;
-abzo;
-abzp;
-abzq;
-abzr;
-abzs;
-abzt;
-abzu;
-abzv;
-abzw;
-abzx;
-abzy;
-abzz;
-acaa;
-acab;
-acac;
-acad;
-acae;
-acaf;
-acag;
-acah;
-acai;
-acaj;
-acak;
-acal;
-acam;
-acan;
-acao;
-acap;
-acaq;
-acar;
-acas;
-acat;
-acau;
-acav;
-acaw;
-acax;
-acay;
-acaz;
-acba;
-acbb;
-acbc;
-acbd;
-acbe;
-acbf;
-acbg;
-acbh;
-acbi;
-acbj;
-acbk;
-acbl;
-acbm;
-acbn;
-acbo;
-acbp;
-acbq;
-acbr;
-acbs;
-acbt;
-acbu;
-acbv;
-acbw;
-acbx;
-acby;
-acbz;
-acca;
-accb;
-accc;
-accd;
-acce;
-accf;
-accg;
-acch;
-acci;
-accj;
-acck;
-accl;
-accm;
-accn;
-acco;
-accp;
-accq;
-accr;
-accs;
-acct;
-accu;
-accv;
-accw;
-accx;
-accy;
-accz;
-acda;
-acdb;
-acdc;
-acdd;
-acde;
-acdf;
-acdg;
-acdh;
-acdi;
-acdj;
-acdk;
-acdl;
-acdm;
-acdn;
-acdo;
-acdp;
-acdq;
-acdr;
-acds;
-acdt;
-acdu;
-acdv;
-acdw;
-acdx;
-acdy;
-acdz;
-acea;
-aceb;
-acec;
-aced;
-acee;
-acef;
-aceg;
-aceh;
-acei;
-acej;
-acek;
-acel;
-acem;
-acen;
-aceo;
-acep;
-aceq;
-acer;
-aces;
-acet;
-aceu;
-acev;
-acew;
-acex;
-acey;
-acez;
-acfa;
-acfb;
-acfc;
-acfd;
-acfe;
-acff;
-acfg;
-acfh;
-acfi;
-acfj;
-acfk;
-acfl;
-acfm;
-acfn;
-acfo;
-acfp;
-acfq;
-acfr;
-acfs;
-acft;
-acfu;
-acfv;
-acfw;
-acfx;
-acfy;
-acfz;
-acga;
-acgb;
-acgc;
-acgd;
-acge;
-acgf;
-acgg;
-acgh;
-acgi;
-acgj;
-acgk;
-acgl;
-acgm;
-acgn;
-acgo;
-acgp;
-acgq;
-acgr;
-acgs;
-acgt;
-acgu;
-acgv;
-acgw;
-acgx;
-acgy;
-acgz;
-acha;
-achb;
-achc;
-achd;
-ache;
-achf;
-achg;
-achh;
-achi;
-achj;
-achk;
-achl;
-achm;
-achn;
-acho;
-achp;
-achq;
-achr;
-achs;
-acht;
-achu;
-achv;
-achw;
-achx;
-achy;
-achz;
-acia;
-acib;
-acic;
-acid;
-acie;
-acif;
-acig;
-acih;
-acii;
-acij;
-acik;
-acil;
-acim;
-acin;
-acio;
-acip;
-aciq;
-acir;
-acis;
-acit;
-aciu;
-aciv;
-aciw;
-acix;
-aciy;
-aciz;
-acja;
-acjb;
-acjc;
-acjd;
-acje;
-acjf;
-acjg;
-acjh;
-acji;
-acjj;
-acjk;
-acjl;
-acjm;
-acjn;
-acjo;
-acjp;
-acjq;
-acjr;
-acjs;
-acjt;
-acju;
-acjv;
-acjw;
-acjx;
-acjy;
-acjz;
-acka;
-ackb;
-ackc;
-ackd;
-acke;
-ackf;
-ackg;
-ackh;
-acki;
-ackj;
-ackk;
-ackl;
-ackm;
-ackn;
-acko;
-ackp;
-ackq;
-ackr;
-acks;
-ackt;
-acku;
-ackv;
-ackw;
-ackx;
-acky;
-ackz;
-acla;
-aclb;
-aclc;
-acld;
-acle;
-aclf;
-aclg;
-aclh;
-acli;
-aclj;
-aclk;
-acll;
-aclm;
-acln;
-aclo;
-aclp;
-aclq;
-aclr;
-acls;
-aclt;
-aclu;
-aclv;
-aclw;
-aclx;
-acly;
-aclz;
-acma;
-acmb;
-acmc;
-acmd;
-acme;
-acmf;
-acmg;
-acmh;
-acmi;
-acmj;
-acmk;
-acml;
-acmm;
-acmn;
-acmo;
-acmp;
-acmq;
-acmr;
-acms;
-acmt;
-acmu;
-acmv;
-acmw;
-acmx;
-acmy;
-acmz;
-acna;
-acnb;
-acnc;
-acnd;
-acne;
-acnf;
-acng;
-acnh;
-acni;
-acnj;
-acnk;
-acnl;
-acnm;
-acnn;
-acno;
-acnp;
-acnq;
-acnr;
-acns;
-acnt;
-acnu;
-acnv;
-acnw;
-acnx;
-acny;
-acnz;
-acoa;
-acob;
-acoc;
-acod;
-acoe;
-acof;
-acog;
-acoh;
-acoi;
-acoj;
-acok;
-acol;
-acom;
-acon;
-acoo;
-acop;
-acoq;
-acor;
-acos;
-acot;
-acou;
-acov;
-acow;
-acox;
-acoy;
-acoz;
-acpa;
-acpb;
-acpc;
-acpd;
-acpe;
-acpf;
-acpg;
-acph;
-acpi;
-acpj;
-acpk;
-acpl;
-acpm;
-acpn;
-acpo;
-acpp;
-acpq;
-acpr;
-acps;
-acpt;
-acpu;
-acpv;
-acpw;
-acpx;
-acpy;
-acpz;
-acqa;
-acqb;
-acqc;
-acqd;
-acqe;
-acqf;
-acqg;
-acqh;
-acqi;
-acqj;
-acqk;
-acql;
-acqm;
-acqn;
-acqo;
-acqp;
-acqq;
-acqr;
-acqs;
-acqt;
-acqu;
-acqv;
-acqw;
-acqx;
-acqy;
-acqz;
-acra;
-acrb;
-acrc;
-acrd;
-acre;
-acrf;
-acrg;
-acrh;
-acri;
-acrj;
-acrk;
-acrl;
-acrm;
-acrn;
-acro;
-acrp;
-acrq;
-acrr;
-acrs;
-acrt;
-acru;
-acrv;
-acrw;
-acrx;
-acry;
-acrz;
-acsa;
-acsb;
-acsc;
-acsd;
-acse;
-acsf;
-acsg;
-acsh;
-acsi;
-acsj;
-acsk;
-acsl;
-acsm;
-acsn;
-acso;
-acsp;
-acsq;
-acsr;
-acss;
-acst;
-acsu;
-acsv;
-acsw;
-acsx;
-acsy;
-acsz;
-acta;
-actb;
-actc;
-actd;
-acte;
-actf;
-actg;
-acth;
-acti;
-actj;
-actk;
-actl;
-actm;
-actn;
-acto;
-actp;
-actq;
-actr;
-acts;
-actt;
-actu;
-actv;
-actw;
-actx;
-acty;
-actz;
-acua;
-acub;
-acuc;
-acud;
-acue;
-acuf;
-acug;
-acuh;
-acui;
-acuj;
-acuk;
-acul;
-acum;
-acun;
-acuo;
-acup;
-acuq;
-acur;
-acus;
-acut;
-acuu;
-acuv;
-acuw;
-acux;
-acuy;
-acuz;
-acva;
-acvb;
-acvc;
-acvd;
-acve;
-acvf;
-acvg;
-acvh;
-acvi;
-acvj;
-acvk;
-acvl;
-acvm;
-acvn;
-acvo;
-acvp;
-acvq;
-acvr;
-acvs;
-acvt;
-acvu;
-acvv;
-acvw;
-acvx;
-acvy;
-acvz;
-acwa;
-acwb;
-acwc;
-acwd;
-acwe;
-acwf;
-acwg;
-acwh;
-acwi;
-acwj;
-acwk;
-acwl;
-acwm;
-acwn;
-acwo;
-acwp;
-acwq;
-acwr;
-acws;
-acwt;
-acwu;
-acwv;
-acww;
-acwx;
-acwy;
-acwz;
-acxa;
-acxb;
-acxc;
-acxd;
-acxe;
-acxf;
-acxg;
-acxh;
-acxi;
-acxj;
-acxk;
-acxl;
-acxm;
-acxn;
-acxo;
-acxp;
-acxq;
-acxr;
-acxs;
-acxt;
-acxu;
-acxv;
-acxw;
-acxx;
-acxy;
-acxz;
-acya;
-acyb;
-acyc;
-acyd;
-acye;
-acyf;
-acyg;
-acyh;
-acyi;
-acyj;
-acyk;
-acyl;
-acym;
-acyn;
-acyo;
-acyp;
-acyq;
-acyr;
-acys;
-acyt;
-acyu;
-acyv;
-acyw;
-acyx;
-acyy;
-acyz;
-acza;
-aczb;
-aczc;
-aczd;
-acze;
-aczf;
-aczg;
-aczh;
-aczi;
-aczj;
-aczk;
-aczl;
-aczm;
-aczn;
-aczo;
-aczp;
-aczq;
-aczr;
-aczs;
-aczt;
-aczu;
-aczv;
-aczw;
-aczx;
-aczy;
-aczz;
-adaa;
-adab;
-adac;
-adad;
-adae;
-adaf;
-adag;
-adah;
-adai;
-adaj;
-adak;
-adal;
-adam;
-adan;
-adao;
-adap;
-adaq;
-adar;
-adas;
-adat;
-adau;
-adav;
-adaw;
-adax;
-aday;
-adaz;
-adba;
-adbb;
-adbc;
-adbd;
-adbe;
-adbf;
-adbg;
-adbh;
-adbi;
-adbj;
-adbk;
-adbl;
-adbm;
-adbn;
-adbo;
-adbp;
-adbq;
-adbr;
-adbs;
-adbt;
-adbu;
-adbv;
-adbw;
-adbx;
-adby;
-adbz;
-adca;
-adcb;
-adcc;
-adcd;
-adce;
-adcf;
-adcg;
-adch;
-adci;
-adcj;
-adck;
-adcl;
-adcm;
-adcn;
-adco;
-adcp;
-adcq;
-adcr;
-adcs;
-adct;
-adcu;
-adcv;
-adcw;
-adcx;
-adcy;
-adcz;
-adda;
-addb;
-addc;
-addd;
-adde;
-addf;
-addg;
-addh;
-addi;
-addj;
-addk;
-addl;
-addm;
-addn;
-addo;
-addp;
-addq;
-addr;
-adds;
-addt;
-addu;
-addv;
-addw;
-addx;
-addy;
-addz;
-adea;
-adeb;
-adec;
-aded;
-adee;
-adef;
-adeg;
-adeh;
-adei;
-adej;
-adek;
-adel;
-adem;
-aden;
-adeo;
-adep;
-adeq;
-ader;
-ades;
-adet;
-adeu;
-adev;
-adew;
-adex;
-adey;
-adez;
-adfa;
-adfb;
-adfc;
-adfd;
-adfe;
-adff;
-adfg;
-adfh;
-adfi;
-adfj;
-adfk;
-adfl;
-adfm;
-adfn;
-adfo;
-adfp;
-adfq;
-adfr;
-adfs;
-adft;
-adfu;
-adfv;
-adfw;
-adfx;
-adfy;
-adfz;
-adga;
-adgb;
-adgc;
-adgd;
-adge;
-adgf;
-adgg;
-adgh;
-adgi;
-adgj;
-adgk;
-adgl;
-adgm;
-adgn;
-adgo;
-adgp;
-adgq;
-adgr;
-adgs;
-adgt;
-adgu;
-adgv;
-adgw;
-adgx;
-adgy;
-adgz;
-adha;
-adhb;
-adhc;
-adhd;
-adhe;
-adhf;
-adhg;
-adhh;
-adhi;
-adhj;
-adhk;
-adhl;
-adhm;
-adhn;
-adho;
-adhp;
-adhq;
-adhr;
-adhs;
-adht;
-adhu;
-adhv;
-adhw;
-adhx;
-adhy;
-adhz;
-adia;
-adib;
-adic;
-adid;
-adie;
-adif;
-adig;
-adih;
-adii;
-adij;
-adik;
-adil;
-adim;
-adin;
-adio;
-adip;
-adiq;
-adir;
-adis;
-adit;
-adiu;
-adiv;
-adiw;
-adix;
-adiy;
-adiz;
-adja;
-adjb;
-adjc;
-adjd;
-adje;
-adjf;
-adjg;
-adjh;
-adji;
-adjj;
-adjk;
-adjl;
-adjm;
-adjn;
-adjo;
-adjp;
-adjq;
-adjr;
-adjs;
-adjt;
-adju;
-adjv;
-adjw;
-adjx;
-adjy;
-adjz;
-adka;
-adkb;
-adkc;
-adkd;
-adke;
-adkf;
-adkg;
-adkh;
-adki;
-adkj;
-adkk;
-adkl;
-adkm;
-adkn;
-adko;
-adkp;
-adkq;
-adkr;
-adks;
-adkt;
-adku;
-adkv;
-adkw;
-adkx;
-adky;
-adkz;
-adla;
-adlb;
-adlc;
-adld;
-adle;
-adlf;
-adlg;
-adlh;
-adli;
-adlj;
-adlk;
-adll;
-adlm;
-adln;
-adlo;
-adlp;
-adlq;
-adlr;
-adls;
-adlt;
-adlu;
-adlv;
-adlw;
-adlx;
-adly;
-adlz;
-adma;
-admb;
-admc;
-admd;
-adme;
-admf;
-admg;
-admh;
-admi;
-admj;
-admk;
-adml;
-admm;
-admn;
-admo;
-admp;
-admq;
-admr;
-adms;
-admt;
-admu;
-admv;
-admw;
-admx;
-admy;
-admz;
-adna;
-adnb;
-adnc;
-adnd;
-adne;
-adnf;
-adng;
-adnh;
-adni;
-adnj;
-adnk;
-adnl;
-adnm;
-adnn;
-adno;
-adnp;
-adnq;
-adnr;
-adns;
-adnt;
-adnu;
-adnv;
-adnw;
-adnx;
-adny;
-adnz;
-adoa;
-adob;
-adoc;
-adod;
-adoe;
-adof;
-adog;
-adoh;
-adoi;
-adoj;
-adok;
-adol;
-adom;
-adon;
-adoo;
-adop;
-adoq;
-ador;
-ados;
-adot;
-adou;
-adov;
-adow;
-adox;
-adoy;
-adoz;
-adpa;
-adpb;
-adpc;
-adpd;
-adpe;
-adpf;
-adpg;
-adph;
-adpi;
-adpj;
-adpk;
-adpl;
-adpm;
-adpn;
-adpo;
-adpp;
-adpq;
-adpr;
-adps;
-adpt;
-adpu;
-adpv;
-adpw;
-adpx;
-adpy;
-adpz;
-adqa;
-adqb;
-adqc;
-adqd;
-adqe;
-adqf;
-adqg;
-adqh;
-adqi;
-adqj;
-adqk;
-adql;
-adqm;
-adqn;
-adqo;
-adqp;
-adqq;
-adqr;
-adqs;
-adqt;
-adqu;
-adqv;
-adqw;
-adqx;
-adqy;
-adqz;
-adra;
-adrb;
-adrc;
-adrd;
-adre;
-adrf;
-adrg;
-adrh;
-adri;
-adrj;
-adrk;
-adrl;
-adrm;
-adrn;
-adro;
-adrp;
-adrq;
-adrr;
-adrs;
-adrt;
-adru;
-adrv;
-adrw;
-adrx;
-adry;
-adrz;
-adsa;
-adsb;
-adsc;
-adsd;
-adse;
-adsf;
-adsg;
-adsh;
-adsi;
-adsj;
-adsk;
-adsl;
-adsm;
-adsn;
-adso;
-adsp;
-adsq;
-adsr;
-adss;
-adst;
-adsu;
-adsv;
-adsw;
-adsx;
-adsy;
-adsz;
-adta;
-adtb;
-adtc;
-adtd;
-adte;
-adtf;
-adtg;
-adth;
-adti;
-adtj;
-adtk;
-adtl;
-adtm;
-adtn;
-adto;
-adtp;
-adtq;
-adtr;
-adts;
-adtt;
-adtu;
-adtv;
-adtw;
-adtx;
-adty;
-adtz;
-adua;
-adub;
-aduc;
-adud;
-adue;
-aduf;
-adug;
-aduh;
-adui;
-aduj;
-aduk;
-adul;
-adum;
-adun;
-aduo;
-adup;
-aduq;
-adur;
-adus;
-adut;
-aduu;
-aduv;
-aduw;
-adux;
-aduy;
-aduz;
-adva;
-advb;
-advc;
-advd;
-adve;
-advf;
-advg;
-advh;
-advi;
-advj;
-advk;
-advl;
-advm;
-advn;
-advo;
-advp;
-advq;
-advr;
-advs;
-advt;
-advu;
-advv;
-advw;
-advx;
-advy;
-advz;
-adwa;
-adwb;
-adwc;
-adwd;
-adwe;
-adwf;
-adwg;
-adwh;
-adwi;
-adwj;
-adwk;
-adwl;
-adwm;
-adwn;
-adwo;
-adwp;
-adwq;
-adwr;
-adws;
-adwt;
-adwu;
-adwv;
-adww;
-adwx;
-adwy;
-adwz;
-adxa;
-adxb;
-adxc;
-adxd;
-adxe;
-adxf;
-adxg;
-adxh;
-adxi;
-adxj;
-adxk;
-adxl;
-adxm;
-adxn;
-adxo;
-adxp;
-adxq;
-adxr;
-adxs;
-adxt;
-adxu;
-adxv;
-adxw;
-adxx;
-adxy;
-adxz;
-adya;
-adyb;
-adyc;
-adyd;
-adye;
-adyf;
-adyg;
-adyh;
-adyi;
-adyj;
-adyk;
-adyl;
-adym;
-adyn;
-adyo;
-adyp;
-adyq;
-adyr;
-adys;
-adyt;
-adyu;
-adyv;
-adyw;
-adyx;
-adyy;
-adyz;
-adza;
-adzb;
-adzc;
-adzd;
-adze;
-adzf;
-adzg;
-adzh;
-adzi;
-adzj;
-adzk;
-adzl;
-adzm;
-adzn;
-adzo;
-adzp;
-adzq;
-adzr;
-adzs;
-adzt;
-adzu;
-adzv;
-adzw;
-adzx;
-adzy;
-adzz;
-aeaa;
-aeab;
-aeac;
-aead;
-aeae;
-aeaf;
-aeag;
-aeah;
-aeai;
-aeaj;
-aeak;
-aeal;
-aeam;
-aean;
-aeao;
-aeap;
-aeaq;
-aear;
-aeas;
-aeat;
-aeau;
-aeav;
-aeaw;
-aeax;
-aeay;
-aeaz;
-aeba;
-aebb;
-aebc;
-aebd;
-aebe;
-aebf;
-aebg;
-aebh;
-aebi;
-aebj;
-aebk;
-aebl;
-aebm;
-aebn;
-aebo;
-aebp;
-aebq;
-aebr;
-aebs;
-aebt;
-aebu;
-aebv;
-aebw;
-aebx;
-aeby;
-aebz;
-aeca;
-aecb;
-aecc;
-aecd;
-aece;
-aecf;
-aecg;
-aech;
-aeci;
-aecj;
-aeck;
-aecl;
-aecm;
-aecn;
-aeco;
-aecp;
-aecq;
-aecr;
-aecs;
-aect;
-aecu;
-aecv;
-aecw;
-aecx;
-aecy;
-aecz;
-aeda;
-aedb;
-aedc;
-aedd;
-aede;
-aedf;
-aedg;
-aedh;
-aedi;
-aedj;
-aedk;
-aedl;
-aedm;
-aedn;
-aedo;
-aedp;
-aedq;
-aedr;
-aeds;
-aedt;
-aedu;
-aedv;
-aedw;
-aedx;
-aedy;
-aedz;
-aeea;
-aeeb;
-aeec;
-aeed;
-aeee;
-aeef;
-aeeg;
-aeeh;
-aeei;
-aeej;
-aeek;
-aeel;
-aeem;
-aeen;
-aeeo;
-aeep;
-aeeq;
-aeer;
-aees;
-aeet;
-aeeu;
-aeev;
-aeew;
-aeex;
-aeey;
-aeez;
-aefa;
-aefb;
-aefc;
-aefd;
-aefe;
-aeff;
-aefg;
-aefh;
-aefi;
-aefj;
-aefk;
-aefl;
-aefm;
-aefn;
-aefo;
-aefp;
-aefq;
-aefr;
-aefs;
-aeft;
-aefu;
-aefv;
-aefw;
-aefx;
-aefy;
-aefz;
-aega;
-aegb;
-aegc;
-aegd;
-aege;
-aegf;
-aegg;
-aegh;
-aegi;
-aegj;
-aegk;
-aegl;
-aegm;
-aegn;
-aego;
-aegp;
-aegq;
-aegr;
-aegs;
-aegt;
-aegu;
-aegv;
-aegw;
-aegx;
-aegy;
-aegz;
-aeha;
-aehb;
-aehc;
-aehd;
-aehe;
-aehf;
-aehg;
-aehh;
-aehi;
-aehj;
-aehk;
-aehl;
-aehm;
-aehn;
-aeho;
-aehp;
-aehq;
-aehr;
-aehs;
-aeht;
-aehu;
-aehv;
-aehw;
-aehx;
-aehy;
-aehz;
-aeia;
-aeib;
-aeic;
-aeid;
-aeie;
-aeif;
-aeig;
-aeih;
-aeii;
-aeij;
-aeik;
-aeil;
-aeim;
-aein;
-aeio;
-aeip;
-aeiq;
-aeir;
-aeis;
-aeit;
-aeiu;
-aeiv;
-aeiw;
-aeix;
-aeiy;
-aeiz;
-aeja;
-aejb;
-aejc;
-aejd;
-aeje;
-aejf;
-aejg;
-aejh;
-aeji;
-aejj;
-aejk;
-aejl;
-aejm;
-aejn;
-aejo;
-aejp;
-aejq;
-aejr;
-aejs;
-aejt;
-aeju;
-aejv;
-aejw;
-aejx;
-aejy;
-aejz;
-aeka;
-aekb;
-aekc;
-aekd;
-aeke;
-aekf;
-aekg;
-aekh;
-aeki;
-aekj;
-aekk;
-aekl;
-aekm;
-aekn;
-aeko;
-aekp;
-aekq;
-aekr;
-aeks;
-aekt;
-aeku;
-aekv;
-aekw;
-aekx;
-aeky;
-aekz;
-aela;
-aelb;
-aelc;
-aeld;
-aele;
-aelf;
-aelg;
-aelh;
-aeli;
-aelj;
-aelk;
-aell;
-aelm;
-aeln;
-aelo;
-aelp;
-aelq;
-aelr;
-aels;
-aelt;
-aelu;
-aelv;
-aelw;
-aelx;
-aely;
-aelz;
-aema;
-aemb;
-aemc;
-aemd;
-aeme;
-aemf;
-aemg;
-aemh;
-aemi;
-aemj;
-aemk;
-aeml;
-aemm;
-aemn;
-aemo;
-aemp;
-aemq;
-aemr;
-aems;
-aemt;
-aemu;
-aemv;
-aemw;
-aemx;
-aemy;
-aemz;
-aena;
-aenb;
-aenc;
-aend;
-aene;
-aenf;
-aeng;
-aenh;
-aeni;
-aenj;
-aenk;
-aenl;
-aenm;
-aenn;
-aeno;
-aenp;
-aenq;
-aenr;
-aens;
-aent;
-aenu;
-aenv;
-aenw;
-aenx;
-aeny;
-aenz;
-aeoa;
-aeob;
-aeoc;
-aeod;
-aeoe;
-aeof;
-aeog;
-aeoh;
-aeoi;
-aeoj;
-aeok;
-aeol;
-aeom;
-aeon;
-aeoo;
-aeop;
-aeoq;
-aeor;
-aeos;
-aeot;
-aeou;
-aeov;
-aeow;
-aeox;
-aeoy;
-aeoz;
-aepa;
-aepb;
-aepc;
-aepd;
-aepe;
-aepf;
-aepg;
-aeph;
-aepi;
-aepj;
-aepk;
-aepl;
-aepm;
-aepn;
-aepo;
-aepp;
-aepq;
-aepr;
-aeps;
-aept;
-aepu;
-aepv;
-aepw;
-aepx;
-aepy;
-aepz;
-aeqa;
-aeqb;
-aeqc;
-aeqd;
-aeqe;
-aeqf;
-aeqg;
-aeqh;
-aeqi;
-aeqj;
-aeqk;
-aeql;
-aeqm;
-aeqn;
-aeqo;
-aeqp;
-aeqq;
-aeqr;
-aeqs;
-aeqt;
-aequ;
-aeqv;
-aeqw;
-aeqx;
-aeqy;
-aeqz;
-aera;
-aerb;
-aerc;
-aerd;
-aere;
-aerf;
-aerg;
-aerh;
-aeri;
-aerj;
-aerk;
-aerl;
-aerm;
-aern;
-aero;
-aerp;
-aerq;
-aerr;
-aers;
-aert;
-aeru;
-aerv;
-aerw;
-aerx;
-aery;
-aerz;
-aesa;
-aesb;
-aesc;
-aesd;
-aese;
-aesf;
-aesg;
-aesh;
-aesi;
-aesj;
-aesk;
-aesl;
-aesm;
-aesn;
-aeso;
-aesp;
-aesq;
-aesr;
-aess;
-aest;
-aesu;
-aesv;
-aesw;
-aesx;
-aesy;
-aesz;
-aeta;
-aetb;
-aetc;
-aetd;
-aete;
-aetf;
-aetg;
-aeth;
-aeti;
-aetj;
-aetk;
-aetl;
-aetm;
-aetn;
-aeto;
-aetp;
-aetq;
-aetr;
-aets;
-aett;
-aetu;
-aetv;
-aetw;
-aetx;
-aety;
-aetz;
-aeua;
-aeub;
-aeuc;
-aeud;
-aeue;
-aeuf;
-aeug;
-aeuh;
-aeui;
-aeuj;
-aeuk;
-aeul;
-aeum;
-aeun;
-aeuo;
-aeup;
-aeuq;
-aeur;
-aeus;
-aeut;
-aeuu;
-aeuv;
-aeuw;
-aeux;
-aeuy;
-aeuz;
-aeva;
-aevb;
-aevc;
-aevd;
-aeve;
-aevf;
-aevg;
-aevh;
-aevi;
-aevj;
-aevk;
-aevl;
-aevm;
-aevn;
-aevo;
-aevp;
-aevq;
-aevr;
-aevs;
-aevt;
-aevu;
-aevv;
-aevw;
-aevx;
-aevy;
-aevz;
-aewa;
-aewb;
-aewc;
-aewd;
-aewe;
-aewf;
-aewg;
-aewh;
-aewi;
-aewj;
-aewk;
-aewl;
-aewm;
-aewn;
-aewo;
-aewp;
-aewq;
-aewr;
-aews;
-aewt;
-aewu;
-aewv;
-aeww;
-aewx;
-aewy;
-aewz;
-aexa;
-aexb;
-aexc;
-aexd;
-aexe;
-aexf;
-aexg;
-aexh;
-aexi;
-aexj;
-aexk;
-aexl;
-aexm;
-aexn;
-aexo;
-aexp;
-aexq;
-aexr;
-aexs;
-aext;
-aexu;
-aexv;
-aexw;
-aexx;
-aexy;
-aexz;
-aeya;
-aeyb;
-aeyc;
-aeyd;
-aeye;
-aeyf;
-aeyg;
-aeyh;
-aeyi;
-aeyj;
-aeyk;
-aeyl;
-aeym;
-aeyn;
-aeyo;
-aeyp;
-aeyq;
-aeyr;
-aeys;
-aeyt;
-aeyu;
-aeyv;
-aeyw;
-aeyx;
-aeyy;
-aeyz;
-aeza;
-aezb;
-aezc;
-aezd;
-aeze;
-aezf;
-aezg;
-aezh;
-aezi;
-aezj;
-aezk;
-aezl;
-aezm;
-aezn;
-aezo;
-aezp;
-aezq;
-aezr;
-aezs;
-aezt;
-aezu;
-aezv;
-aezw;
-aezx;
-aezy;
-aezz;
-afaa;
-afab;
-afac;
-afad;
-afae;
-afaf;
-afag;
-afah;
-afai;
-afaj;
-afak;
-afal;
-afam;
-afan;
-afao;
-afap;
-afaq;
-afar;
-afas;
-afat;
-afau;
-afav;
-afaw;
-afax;
-afay;
-afaz;
-afba;
-afbb;
-afbc;
-afbd;
-afbe;
-afbf;
-afbg;
-afbh;
-afbi;
-afbj;
-afbk;
-afbl;
-afbm;
-afbn;
-afbo;
-afbp;
-afbq;
-afbr;
-afbs;
-afbt;
-afbu;
-afbv;
-afbw;
-afbx;
-afby;
-afbz;
-afca;
-afcb;
-afcc;
-afcd;
-afce;
-afcf;
-afcg;
-afch;
-afci;
-afcj;
-afck;
-afcl;
-afcm;
-afcn;
-afco;
-afcp;
-afcq;
-afcr;
-afcs;
-afct;
-afcu;
-afcv;
-afcw;
-afcx;
-afcy;
-afcz;
-afda;
-afdb;
-afdc;
-afdd;
-afde;
-afdf;
-afdg;
-afdh;
-afdi;
-afdj;
-afdk;
-afdl;
-afdm;
-afdn;
-afdo;
-afdp;
-afdq;
-afdr;
-afds;
-afdt;
-afdu;
-afdv;
-afdw;
-afdx;
-afdy;
-afdz;
-afea;
-afeb;
-afec;
-afed;
-afee;
-afef;
-afeg;
-afeh;
-afei;
-afej;
-afek;
-afel;
-afem;
-afen;
-afeo;
-afep;
-afeq;
-afer;
-afes;
-afet;
-afeu;
-afev;
-afew;
-afex;
-afey;
-afez;
-affa;
-affb;
-affc;
-affd;
-affe;
-afff;
-affg;
-affh;
-affi;
-affj;
-affk;
-affl;
-affm;
-affn;
-affo;
-affp;
-affq;
-affr;
-affs;
-afft;
-affu;
-affv;
-affw;
-affx;
-affy;
-affz;
-afga;
-afgb;
-afgc;
-afgd;
-afge;
-afgf;
-afgg;
-afgh;
-afgi;
-afgj;
-afgk;
-afgl;
-afgm;
-afgn;
-afgo;
-afgp;
-afgq;
-afgr;
-afgs;
-afgt;
-afgu;
-afgv;
-afgw;
-afgx;
-afgy;
-afgz;
-afha;
-afhb;
-afhc;
-afhd;
-afhe;
-afhf;
-afhg;
-afhh;
-afhi;
-afhj;
-afhk;
-afhl;
-afhm;
-afhn;
-afho;
-afhp;
-afhq;
-afhr;
-afhs;
-afht;
-afhu;
-afhv;
-afhw;
-afhx;
-afhy;
-afhz;
-afia;
-afib;
-afic;
-afid;
-afie;
-afif;
-afig;
-afih;
-afii;
-afij;
-afik;
-afil;
-afim;
-afin;
-afio;
-afip;
-afiq;
-afir;
-afis;
-afit;
-afiu;
-afiv;
-afiw;
-afix;
-afiy;
-afiz;
-afja;
-afjb;
-afjc;
-afjd;
-afje;
-afjf;
-afjg;
-afjh;
-afji;
-afjj;
-afjk;
-afjl;
-afjm;
-afjn;
-afjo;
-afjp;
-afjq;
-afjr;
-afjs;
-afjt;
-afju;
-afjv;
-afjw;
-afjx;
-afjy;
-afjz;
-afka;
-afkb;
-afkc;
-afkd;
-afke;
-afkf;
-afkg;
-afkh;
-afki;
-afkj;
-afkk;
-afkl;
-afkm;
-afkn;
-afko;
-afkp;
-afkq;
-afkr;
-afks;
-afkt;
-afku;
-afkv;
-afkw;
-afkx;
-afky;
-afkz;
-afla;
-aflb;
-aflc;
-afld;
-afle;
-aflf;
-aflg;
-aflh;
-afli;
-aflj;
-aflk;
-afll;
-aflm;
-afln;
-aflo;
-aflp;
-aflq;
-aflr;
-afls;
-aflt;
-aflu;
-aflv;
-aflw;
-aflx;
-afly;
-aflz;
-afma;
-afmb;
-afmc;
-afmd;
-afme;
-afmf;
-afmg;
-afmh;
-afmi;
-afmj;
-afmk;
-afml;
-afmm;
-afmn;
-afmo;
-afmp;
-afmq;
-afmr;
-afms;
-afmt;
-afmu;
-afmv;
-afmw;
-afmx;
-afmy;
-afmz;
-afna;
-afnb;
-afnc;
-afnd;
-afne;
-afnf;
-afng;
-afnh;
-afni;
-afnj;
-afnk;
-afnl;
-afnm;
-afnn;
-afno;
-afnp;
-afnq;
-afnr;
-afns;
-afnt;
-afnu;
-afnv;
-afnw;
-afnx;
-afny;
-afnz;
-afoa;
-afob;
-afoc;
-afod;
-afoe;
-afof;
-afog;
-afoh;
-afoi;
-afoj;
-afok;
-afol;
-afom;
-afon;
-afoo;
-afop;
-afoq;
-afor;
-afos;
-afot;
-afou;
-afov;
-afow;
-afox;
-afoy;
-afoz;
-afpa;
-afpb;
-afpc;
-afpd;
-afpe;
-afpf;
-afpg;
-afph;
-afpi;
-afpj;
-afpk;
-afpl;
-afpm;
-afpn;
-afpo;
-afpp;
-afpq;
-afpr;
-afps;
-afpt;
-afpu;
-afpv;
-afpw;
-afpx;
-afpy;
-afpz;
-afqa;
-afqb;
-afqc;
-afqd;
-afqe;
-afqf;
-afqg;
-afqh;
-afqi;
-afqj;
-afqk;
-afql;
-afqm;
-afqn;
-afqo;
-afqp;
-afqq;
-afqr;
-afqs;
-afqt;
-afqu;
-afqv;
-afqw;
-afqx;
-afqy;
-afqz;
-afra;
-afrb;
-afrc;
-afrd;
-afre;
-afrf;
-afrg;
-afrh;
-afri;
-afrj;
-afrk;
-afrl;
-afrm;
-afrn;
-afro;
-afrp;
-afrq;
-afrr;
-afrs;
-afrt;
-afru;
-afrv;
-afrw;
-afrx;
-afry;
-afrz;
-afsa;
-afsb;
-afsc;
-afsd;
-afse;
-afsf;
-afsg;
-afsh;
-afsi;
-afsj;
-afsk;
-afsl;
-afsm;
-afsn;
-afso;
-afsp;
-afsq;
-afsr;
-afss;
-afst;
-afsu;
-afsv;
-afsw;
-afsx;
-afsy;
-afsz;
-afta;
-aftb;
-aftc;
-aftd;
-afte;
-aftf;
-aftg;
-afth;
-afti;
-aftj;
-aftk;
-aftl;
-aftm;
-aftn;
-afto;
-aftp;
-aftq;
-aftr;
-afts;
-aftt;
-aftu;
-aftv;
-aftw;
-aftx;
-afty;
-aftz;
-afua;
-afub;
-afuc;
-afud;
-afue;
-afuf;
-afug;
-afuh;
-afui;
-afuj;
-afuk;
-aful;
-afum;
-afun;
-afuo;
-afup;
-afuq;
-afur;
-afus;
-afut;
-afuu;
-afuv;
-afuw;
-afux;
-afuy;
-afuz;
-afva;
-afvb;
-afvc;
-afvd;
-afve;
-afvf;
-afvg;
-afvh;
-afvi;
-afvj;
-afvk;
-afvl;
-afvm;
-afvn;
-afvo;
-afvp;
-afvq;
-afvr;
-afvs;
-afvt;
-afvu;
-afvv;
-afvw;
-afvx;
-afvy;
-afvz;
-afwa;
-afwb;
-afwc;
-afwd;
-afwe;
-afwf;
-afwg;
-afwh;
-afwi;
-afwj;
-afwk;
-afwl;
-afwm;
-afwn;
-afwo;
-afwp;
-afwq;
-afwr;
-afws;
-afwt;
-afwu;
-afwv;
-afww;
-afwx;
-afwy;
-afwz;
-afxa;
-afxb;
-afxc;
-afxd;
-afxe;
-afxf;
-afxg;
-afxh;
-afxi;
-afxj;
-afxk;
-afxl;
-afxm;
-afxn;
-afxo;
-afxp;
-afxq;
-afxr;
-afxs;
-afxt;
-afxu;
-afxv;
-afxw;
-afxx;
-afxy;
-afxz;
-afya;
-afyb;
-afyc;
-afyd;
-afye;
-afyf;
-afyg;
-afyh;
-afyi;
-afyj;
-afyk;
-afyl;
-afym;
-afyn;
-afyo;
-afyp;
-afyq;
-afyr;
-afys;
-afyt;
-afyu;
-afyv;
-afyw;
-afyx;
-afyy;
-afyz;
-afza;
-afzb;
-afzc;
-afzd;
-afze;
-afzf;
-afzg;
-afzh;
-afzi;
-afzj;
-afzk;
-afzl;
-afzm;
-afzn;
-afzo;
-afzp;
-afzq;
-afzr;
-afzs;
-afzt;
-afzu;
-afzv;
-afzw;
-afzx;
-afzy;
-afzz;
-agaa;
-agab;
-agac;
-agad;
-agae;
-agaf;
-agag;
-agah;
-agai;
-agaj;
-agak;
-agal;
-agam;
-agan;
-agao;
-agap;
-agaq;
-agar;
-agas;
-agat;
-agau;
-agav;
-agaw;
-agax;
-agay;
-agaz;
-agba;
-agbb;
-agbc;
-agbd;
-agbe;
-agbf;
-agbg;
-agbh;
-agbi;
-agbj;
-agbk;
-agbl;
-agbm;
-agbn;
-agbo;
-agbp;
-agbq;
-agbr;
-agbs;
-agbt;
-agbu;
-agbv;
-agbw;
-agbx;
-agby;
-agbz;
-agca;
-agcb;
-agcc;
-agcd;
-agce;
-agcf;
-agcg;
-agch;
-agci;
-agcj;
-agck;
-agcl;
-agcm;
-agcn;
-agco;
-agcp;
-agcq;
-agcr;
-agcs;
-agct;
-agcu;
-agcv;
-agcw;
-agcx;
-agcy;
-agcz;
-agda;
-agdb;
-agdc;
-agdd;
-agde;
-agdf;
-agdg;
-agdh;
-agdi;
-agdj;
-agdk;
-agdl;
-agdm;
-agdn;
-agdo;
-agdp;
-agdq;
-agdr;
-agds;
-agdt;
-agdu;
-agdv;
-agdw;
-agdx;
-agdy;
-agdz;
-agea;
-ageb;
-agec;
-aged;
-agee;
-agef;
-ageg;
-ageh;
-agei;
-agej;
-agek;
-agel;
-agem;
-agen;
-ageo;
-agep;
-ageq;
-ager;
-ages;
-aget;
-ageu;
-agev;
-agew;
-agex;
-agey;
-agez;
-agfa;
-agfb;
-agfc;
-agfd;
-agfe;
-agff;
-agfg;
-agfh;
-agfi;
-agfj;
-agfk;
-agfl;
-agfm;
-agfn;
-agfo;
-agfp;
-agfq;
-agfr;
-agfs;
-agft;
-agfu;
-agfv;
-agfw;
-agfx;
-agfy;
-agfz;
-agga;
-aggb;
-aggc;
-aggd;
-agge;
-aggf;
-aggg;
-aggh;
-aggi;
-aggj;
-aggk;
-aggl;
-aggm;
-aggn;
-aggo;
-aggp;
-aggq;
-aggr;
-aggs;
-aggt;
-aggu;
-aggv;
-aggw;
-aggx;
-aggy;
-aggz;
-agha;
-aghb;
-aghc;
-aghd;
-aghe;
-aghf;
-aghg;
-aghh;
-aghi;
-aghj;
-aghk;
-aghl;
-aghm;
-aghn;
-agho;
-aghp;
-aghq;
-aghr;
-aghs;
-aght;
-aghu;
-aghv;
-aghw;
-aghx;
-aghy;
-aghz;
-agia;
-agib;
-agic;
-agid;
-agie;
-agif;
-agig;
-agih;
-agii;
-agij;
-agik;
-agil;
-agim;
-agin;
-agio;
-agip;
-agiq;
-agir;
-agis;
-agit;
-agiu;
-agiv;
-agiw;
-agix;
-agiy;
-agiz;
-agja;
-agjb;
-agjc;
-agjd;
-agje;
-agjf;
-agjg;
-agjh;
-agji;
-agjj;
-agjk;
-agjl;
-agjm;
-agjn;
-agjo;
-agjp;
-agjq;
-agjr;
-agjs;
-agjt;
-agju;
-agjv;
-agjw;
-agjx;
-agjy;
-agjz;
-agka;
-agkb;
-agkc;
-agkd;
-agke;
-agkf;
-agkg;
-agkh;
-agki;
-agkj;
-agkk;
-agkl;
-agkm;
-agkn;
-agko;
-agkp;
-agkq;
-agkr;
-agks;
-agkt;
-agku;
-agkv;
-agkw;
-agkx;
-agky;
-agkz;
-agla;
-aglb;
-aglc;
-agld;
-agle;
-aglf;
-aglg;
-aglh;
-agli;
-aglj;
-aglk;
-agll;
-aglm;
-agln;
-aglo;
-aglp;
-aglq;
-aglr;
-agls;
-aglt;
-aglu;
-aglv;
-aglw;
-aglx;
-agly;
-aglz;
-agma;
-agmb;
-agmc;
-agmd;
-agme;
-agmf;
-agmg;
-agmh;
-agmi;
-agmj;
-agmk;
-agml;
-agmm;
-agmn;
-agmo;
-agmp;
-agmq;
-agmr;
-agms;
-agmt;
-agmu;
-agmv;
-agmw;
-agmx;
-agmy;
-agmz;
-agna;
-agnb;
-agnc;
-agnd;
-agne;
-agnf;
-agng;
-agnh;
-agni;
-agnj;
-agnk;
-agnl;
-agnm;
-agnn;
-agno;
-agnp;
-agnq;
-agnr;
-agns;
-agnt;
-agnu;
-agnv;
-agnw;
-agnx;
-agny;
-agnz;
-agoa;
-agob;
-agoc;
-agod;
-agoe;
-agof;
-agog;
-agoh;
-agoi;
-agoj;
-agok;
-agol;
-agom;
-agon;
-agoo;
-agop;
-agoq;
-agor;
-agos;
-agot;
-agou;
-agov;
-agow;
-agox;
-agoy;
-agoz;
-agpa;
-agpb;
-agpc;
-agpd;
-agpe;
-agpf;
-agpg;
-agph;
-agpi;
-agpj;
-agpk;
-agpl;
-agpm;
-agpn;
-agpo;
-agpp;
-agpq;
-agpr;
-agps;
-agpt;
-agpu;
-agpv;
-agpw;
-agpx;
-agpy;
-agpz;
-agqa;
-agqb;
-agqc;
-agqd;
-agqe;
-agqf;
-agqg;
-agqh;
-agqi;
-agqj;
-agqk;
-agql;
-agqm;
-agqn;
-agqo;
-agqp;
-agqq;
-agqr;
-agqs;
-agqt;
-agqu;
-agqv;
-agqw;
-agqx;
-agqy;
-agqz;
-agra;
-agrb;
-agrc;
-agrd;
-agre;
-agrf;
-agrg;
-agrh;
-agri;
-agrj;
-agrk;
-agrl;
-agrm;
-agrn;
-agro;
-agrp;
-agrq;
-agrr;
-agrs;
-agrt;
-agru;
-agrv;
-agrw;
-agrx;
-agry;
-agrz;
-agsa;
-agsb;
-agsc;
-agsd;
-agse;
-agsf;
-agsg;
-agsh;
-agsi;
-agsj;
-agsk;
-agsl;
-agsm;
-agsn;
-agso;
-agsp;
-agsq;
-agsr;
-agss;
-agst;
-agsu;
-agsv;
-agsw;
-agsx;
-agsy;
-agsz;
-agta;
-agtb;
-agtc;
-agtd;
-agte;
-agtf;
-agtg;
-agth;
-agti;
-agtj;
-agtk;
-agtl;
-agtm;
-agtn;
-agto;
-agtp;
-agtq;
-agtr;
-agts;
-agtt;
-agtu;
-agtv;
-agtw;
-agtx;
-agty;
-agtz;
-agua;
-agub;
-aguc;
-agud;
-ague;
-aguf;
-agug;
-aguh;
-agui;
-aguj;
-aguk;
-agul;
-agum;
-agun;
-aguo;
-agup;
-aguq;
-agur;
-agus;
-agut;
-aguu;
-aguv;
-aguw;
-agux;
-aguy;
-aguz;
-agva;
-agvb;
-agvc;
-agvd;
-agve;
-agvf;
-agvg;
-agvh;
-agvi;
-agvj;
-agvk;
-agvl;
-agvm;
-agvn;
-agvo;
-agvp;
-agvq;
-agvr;
-agvs;
-agvt;
-agvu;
-agvv;
-agvw;
-agvx;
-agvy;
-agvz;
-agwa;
-agwb;
-agwc;
-agwd;
-agwe;
-agwf;
-agwg;
-agwh;
-agwi;
-agwj;
-agwk;
-agwl;
-agwm;
-agwn;
-agwo;
-agwp;
-agwq;
-agwr;
-agws;
-agwt;
-agwu;
-agwv;
-agww;
-agwx;
-agwy;
-agwz;
-agxa;
-agxb;
-agxc;
-agxd;
-agxe;
-agxf;
-agxg;
-agxh;
-agxi;
-agxj;
-agxk;
-agxl;
-agxm;
-agxn;
-agxo;
-agxp;
-agxq;
-agxr;
-agxs;
-agxt;
-agxu;
-agxv;
-agxw;
-agxx;
-agxy;
-agxz;
-agya;
-agyb;
-agyc;
-agyd;
-agye;
-agyf;
-agyg;
-agyh;
-agyi;
-agyj;
-agyk;
-agyl;
-agym;
-agyn;
-agyo;
-agyp;
-agyq;
-agyr;
-agys;
-agyt;
-agyu;
-agyv;
-agyw;
-agyx;
-agyy;
-agyz;
-agza;
-agzb;
-agzc;
-agzd;
-agze;
-agzf;
-agzg;
-agzh;
-agzi;
-agzj;
-agzk;
-agzl;
-agzm;
-agzn;
-agzo;
-agzp;
-agzq;
-agzr;
-agzs;
-agzt;
-agzu;
-agzv;
-agzw;
-agzx;
-agzy;
-agzz;
-ahaa;
-ahab;
-ahac;
-ahad;
-ahae;
-ahaf;
-ahag;
-ahah;
-ahai;
-ahaj;
-ahak;
-ahal;
-aham;
-ahan;
-ahao;
-ahap;
-ahaq;
-ahar;
-ahas;
-ahat;
-ahau;
-ahav;
-ahaw;
-ahax;
-ahay;
-ahaz;
-ahba;
-ahbb;
-ahbc;
-ahbd;
-ahbe;
-ahbf;
-ahbg;
-ahbh;
-ahbi;
-ahbj;
-ahbk;
-ahbl;
-ahbm;
-ahbn;
-ahbo;
-ahbp;
-ahbq;
-ahbr;
-ahbs;
-ahbt;
-ahbu;
-ahbv;
-ahbw;
-ahbx;
-ahby;
-ahbz;
-ahca;
-ahcb;
-ahcc;
-ahcd;
-ahce;
-ahcf;
-ahcg;
-ahch;
-ahci;
-ahcj;
-ahck;
-ahcl;
-ahcm;
-ahcn;
-ahco;
-ahcp;
-ahcq;
-ahcr;
-ahcs;
-ahct;
-ahcu;
-ahcv;
-ahcw;
-ahcx;
-ahcy;
-ahcz;
-ahda;
-ahdb;
-ahdc;
-ahdd;
-ahde;
-ahdf;
-ahdg;
-ahdh;
-ahdi;
-ahdj;
-ahdk;
-ahdl;
-ahdm;
-ahdn;
-ahdo;
-ahdp;
-ahdq;
-ahdr;
-ahds;
-ahdt;
-ahdu;
-ahdv;
-ahdw;
-ahdx;
-ahdy;
-ahdz;
-ahea;
-aheb;
-ahec;
-ahed;
-ahee;
-ahef;
-aheg;
-aheh;
-ahei;
-ahej;
-ahek;
-ahel;
-ahem;
-ahen;
-aheo;
-ahep;
-aheq;
-aher;
-ahes;
-ahet;
-aheu;
-ahev;
-ahew;
-ahex;
-ahey;
-ahez;
-ahfa;
-ahfb;
-ahfc;
-ahfd;
-ahfe;
-ahff;
-ahfg;
-ahfh;
-ahfi;
-ahfj;
-ahfk;
-ahfl;
-ahfm;
-ahfn;
-ahfo;
-ahfp;
-ahfq;
-ahfr;
-ahfs;
-ahft;
-ahfu;
-ahfv;
-ahfw;
-ahfx;
-ahfy;
-ahfz;
-ahga;
-ahgb;
-ahgc;
-ahgd;
-ahge;
-ahgf;
-ahgg;
-ahgh;
-ahgi;
-ahgj;
-ahgk;
-ahgl;
-ahgm;
-ahgn;
-ahgo;
-ahgp;
-ahgq;
-ahgr;
-ahgs;
-ahgt;
-ahgu;
-ahgv;
-ahgw;
-ahgx;
-ahgy;
-ahgz;
-ahha;
-ahhb;
-ahhc;
-ahhd;
-ahhe;
-ahhf;
-ahhg;
-ahhh;
-ahhi;
-ahhj;
-ahhk;
-ahhl;
-ahhm;
-ahhn;
-ahho;
-ahhp;
-ahhq;
-ahhr;
-ahhs;
-ahht;
-ahhu;
-ahhv;
-ahhw;
-ahhx;
-ahhy;
-ahhz;
-ahia;
-ahib;
-ahic;
-ahid;
-ahie;
-ahif;
-ahig;
-ahih;
-ahii;
-ahij;
-ahik;
-ahil;
-ahim;
-ahin;
-ahio;
-ahip;
-ahiq;
-ahir;
-ahis;
-ahit;
-ahiu;
-ahiv;
-ahiw;
-ahix;
-ahiy;
-ahiz;
-ahja;
-ahjb;
-ahjc;
-ahjd;
-ahje;
-ahjf;
-ahjg;
-ahjh;
-ahji;
-ahjj;
-ahjk;
-ahjl;
-ahjm;
-ahjn;
-ahjo;
-ahjp;
-ahjq;
-ahjr;
-ahjs;
-ahjt;
-ahju;
-ahjv;
-ahjw;
-ahjx;
-ahjy;
-ahjz;
-ahka;
-ahkb;
-ahkc;
-ahkd;
-ahke;
-ahkf;
-ahkg;
-ahkh;
-ahki;
-ahkj;
-ahkk;
-ahkl;
-ahkm;
-ahkn;
-ahko;
-ahkp;
-ahkq;
-ahkr;
-ahks;
-ahkt;
-ahku;
-ahkv;
-ahkw;
-ahkx;
-ahky;
-ahkz;
-ahla;
-ahlb;
-ahlc;
-ahld;
-ahle;
-ahlf;
-ahlg;
-ahlh;
-ahli;
-ahlj;
-ahlk;
-ahll;
-ahlm;
-ahln;
-ahlo;
-ahlp;
-ahlq;
-ahlr;
-ahls;
-ahlt;
-ahlu;
-ahlv;
-ahlw;
-ahlx;
-ahly;
-ahlz;
-ahma;
-ahmb;
-ahmc;
-ahmd;
-ahme;
-ahmf;
-ahmg;
-ahmh;
-ahmi;
-ahmj;
-ahmk;
-ahml;
-ahmm;
-ahmn;
-ahmo;
-ahmp;
-ahmq;
-ahmr;
-ahms;
-ahmt;
-ahmu;
-ahmv;
-ahmw;
-ahmx;
-ahmy;
-ahmz;
-ahna;
-ahnb;
-ahnc;
-ahnd;
-ahne;
-ahnf;
-ahng;
-ahnh;
-ahni;
-ahnj;
-ahnk;
-ahnl;
-ahnm;
-ahnn;
-ahno;
-ahnp;
-ahnq;
-ahnr;
-ahns;
-ahnt;
-ahnu;
-ahnv;
-ahnw;
-ahnx;
-ahny;
-ahnz;
-ahoa;
-ahob;
-ahoc;
-ahod;
-ahoe;
-ahof;
-ahog;
-ahoh;
-ahoi;
-ahoj;
-ahok;
-ahol;
-ahom;
-ahon;
-ahoo;
-ahop;
-ahoq;
-ahor;
-ahos;
-ahot;
-ahou;
-ahov;
-ahow;
-ahox;
-ahoy;
-ahoz;
-ahpa;
-ahpb;
-ahpc;
-ahpd;
-ahpe;
-ahpf;
-ahpg;
-ahph;
-ahpi;
-ahpj;
-ahpk;
-ahpl;
-ahpm;
-ahpn;
-ahpo;
-ahpp;
-ahpq;
-ahpr;
-ahps;
-ahpt;
-ahpu;
-ahpv;
-ahpw;
-ahpx;
-ahpy;
-ahpz;
-ahqa;
-ahqb;
-ahqc;
-ahqd;
-ahqe;
-ahqf;
-ahqg;
-ahqh;
-ahqi;
-ahqj;
-ahqk;
-ahql;
-ahqm;
-ahqn;
-ahqo;
-ahqp;
-ahqq;
-ahqr;
-ahqs;
-ahqt;
-ahqu;
-ahqv;
-ahqw;
-ahqx;
-ahqy;
-ahqz;
-ahra;
-ahrb;
-ahrc;
-ahrd;
-ahre;
-ahrf;
-ahrg;
-ahrh;
-ahri;
-ahrj;
-ahrk;
-ahrl;
-ahrm;
-ahrn;
-ahro;
-ahrp;
-ahrq;
-ahrr;
-ahrs;
-ahrt;
-ahru;
-ahrv;
-ahrw;
-ahrx;
-ahry;
-ahrz;
-ahsa;
-ahsb;
-ahsc;
-ahsd;
-ahse;
-ahsf;
-ahsg;
-ahsh;
-ahsi;
-ahsj;
-ahsk;
-ahsl;
-ahsm;
-ahsn;
-ahso;
-ahsp;
-ahsq;
-ahsr;
-ahss;
-ahst;
-ahsu;
-ahsv;
-ahsw;
-ahsx;
-ahsy;
-ahsz;
-ahta;
-ahtb;
-ahtc;
-ahtd;
-ahte;
-ahtf;
-ahtg;
-ahth;
-ahti;
-ahtj;
-ahtk;
-ahtl;
-ahtm;
-ahtn;
-ahto;
-ahtp;
-ahtq;
-ahtr;
-ahts;
-ahtt;
-ahtu;
-ahtv;
-ahtw;
-ahtx;
-ahty;
-ahtz;
-ahua;
-ahub;
-ahuc;
-ahud;
-ahue;
-ahuf;
-ahug;
-ahuh;
-ahui;
-ahuj;
-ahuk;
-ahul;
-ahum;
-ahun;
-ahuo;
-ahup;
-ahuq;
-ahur;
-ahus;
-ahut;
-ahuu;
-ahuv;
-ahuw;
-ahux;
-ahuy;
-ahuz;
-ahva;
-ahvb;
-ahvc;
-ahvd;
-ahve;
-ahvf;
-ahvg;
-ahvh;
-ahvi;
-ahvj;
-ahvk;
-ahvl;
-ahvm;
-ahvn;
-ahvo;
-ahvp;
-ahvq;
-ahvr;
-ahvs;
-ahvt;
-ahvu;
-ahvv;
-ahvw;
-ahvx;
-ahvy;
-ahvz;
-ahwa;
-ahwb;
-ahwc;
-ahwd;
-ahwe;
-ahwf;
-ahwg;
-ahwh;
-ahwi;
-ahwj;
-ahwk;
-ahwl;
-ahwm;
-ahwn;
-ahwo;
-ahwp;
-ahwq;
-ahwr;
-ahws;
-ahwt;
-ahwu;
-ahwv;
-ahww;
-ahwx;
-ahwy;
-ahwz;
-ahxa;
-ahxb;
-ahxc;
-ahxd;
-ahxe;
-ahxf;
-ahxg;
-ahxh;
-ahxi;
-ahxj;
-ahxk;
-ahxl;
-ahxm;
-ahxn;
-ahxo;
-ahxp;
-ahxq;
-ahxr;
-ahxs;
-ahxt;
-ahxu;
-ahxv;
-ahxw;
-ahxx;
-ahxy;
-ahxz;
-ahya;
-ahyb;
-ahyc;
-ahyd;
-ahye;
-ahyf;
-ahyg;
-ahyh;
-ahyi;
-ahyj;
-ahyk;
-ahyl;
-ahym;
-ahyn;
-ahyo;
-ahyp;
-ahyq;
-ahyr;
-ahys;
-ahyt;
-ahyu;
-ahyv;
-ahyw;
-ahyx;
-ahyy;
-ahyz;
-ahza;
-ahzb;
-ahzc;
-ahzd;
-ahze;
-ahzf;
-ahzg;
-ahzh;
-ahzi;
-ahzj;
-ahzk;
-ahzl;
-ahzm;
-ahzn;
-ahzo;
-ahzp;
-ahzq;
-ahzr;
-ahzs;
-ahzt;
-ahzu;
-ahzv;
-ahzw;
-ahzx;
-ahzy;
-ahzz;
-aiaa;
-aiab;
-aiac;
-aiad;
-aiae;
-aiaf;
-aiag;
-aiah;
-aiai;
-aiaj;
-aiak;
-aial;
-aiam;
-aian;
-aiao;
-aiap;
-aiaq;
-aiar;
-aias;
-aiat;
-aiau;
-aiav;
-aiaw;
-aiax;
-aiay;
-aiaz;
-aiba;
-aibb;
-aibc;
-aibd;
-aibe;
-aibf;
-aibg;
-aibh;
-aibi;
-aibj;
-aibk;
-aibl;
-aibm;
-aibn;
-aibo;
-aibp;
-aibq;
-aibr;
-aibs;
-aibt;
-aibu;
-aibv;
-aibw;
-aibx;
-aiby;
-aibz;
-aica;
-aicb;
-aicc;
-aicd;
-aice;
-aicf;
-aicg;
-aich;
-aici;
-aicj;
-aick;
-aicl;
-aicm;
-aicn;
-aico;
-aicp;
-aicq;
-aicr;
-aics;
-aict;
-aicu;
-aicv;
-aicw;
-aicx;
-aicy;
-aicz;
-aida;
-aidb;
-aidc;
-aidd;
-aide;
-aidf;
-aidg;
-aidh;
-aidi;
-aidj;
-aidk;
-aidl;
-aidm;
-aidn;
-aido;
-aidp;
-aidq;
-aidr;
-aids;
-aidt;
-aidu;
-aidv;
-aidw;
-aidx;
-aidy;
-aidz;
-aiea;
-aieb;
-aiec;
-aied;
-aiee;
-aief;
-aieg;
-aieh;
-aiei;
-aiej;
-aiek;
-aiel;
-aiem;
-aien;
-aieo;
-aiep;
-aieq;
-aier;
-aies;
-aiet;
-aieu;
-aiev;
-aiew;
-aiex;
-aiey;
-aiez;
-aifa;
-aifb;
-aifc;
-aifd;
-aife;
-aiff;
-aifg;
-aifh;
-aifi;
-aifj;
-aifk;
-aifl;
-aifm;
-aifn;
-aifo;
-aifp;
-aifq;
-aifr;
-aifs;
-aift;
-aifu;
-aifv;
-aifw;
-aifx;
-aify;
-aifz;
-aiga;
-aigb;
-aigc;
-aigd;
-aige;
-aigf;
-aigg;
-aigh;
-aigi;
-aigj;
-aigk;
-aigl;
-aigm;
-aign;
-aigo;
-aigp;
-aigq;
-aigr;
-aigs;
-aigt;
-aigu;
-aigv;
-aigw;
-aigx;
-aigy;
-aigz;
-aiha;
-aihb;
-aihc;
-aihd;
-aihe;
-aihf;
-aihg;
-aihh;
-aihi;
-aihj;
-aihk;
-aihl;
-aihm;
-aihn;
-aiho;
-aihp;
-aihq;
-aihr;
-aihs;
-aiht;
-aihu;
-aihv;
-aihw;
-aihx;
-aihy;
-aihz;
-aiia;
-aiib;
-aiic;
-aiid;
-aiie;
-aiif;
-aiig;
-aiih;
-aiii;
-aiij;
-aiik;
-aiil;
-aiim;
-aiin;
-aiio;
-aiip;
-aiiq;
-aiir;
-aiis;
-aiit;
-aiiu;
-aiiv;
-aiiw;
-aiix;
-aiiy;
-aiiz;
-aija;
-aijb;
-aijc;
-aijd;
-aije;
-aijf;
-aijg;
-aijh;
-aiji;
-aijj;
-aijk;
-aijl;
-aijm;
-aijn;
-aijo;
-aijp;
-aijq;
-aijr;
-aijs;
-aijt;
-aiju;
-aijv;
-aijw;
-aijx;
-aijy;
-aijz;
-aika;
-aikb;
-aikc;
-aikd;
-aike;
-aikf;
-aikg;
-aikh;
-aiki;
-aikj;
-aikk;
-aikl;
-aikm;
-aikn;
-aiko;
-aikp;
-aikq;
-aikr;
-aiks;
-aikt;
-aiku;
-aikv;
-aikw;
-aikx;
-aiky;
-aikz;
-aila;
-ailb;
-ailc;
-aild;
-aile;
-ailf;
-ailg;
-ailh;
-aili;
-ailj;
-ailk;
-aill;
-ailm;
-ailn;
-ailo;
-ailp;
-ailq;
-ailr;
-ails;
-ailt;
-ailu;
-ailv;
-ailw;
-ailx;
-aily;
-ailz;
-aima;
-aimb;
-aimc;
-aimd;
-aime;
-aimf;
-aimg;
-aimh;
-aimi;
-aimj;
-aimk;
-aiml;
-aimm;
-aimn;
-aimo;
-aimp;
-aimq;
-aimr;
-aims;
-aimt;
-aimu;
-aimv;
-aimw;
-aimx;
-aimy;
-aimz;
-aina;
-ainb;
-ainc;
-aind;
-aine;
-ainf;
-aing;
-ainh;
-aini;
-ainj;
-aink;
-ainl;
-ainm;
-ainn;
-aino;
-ainp;
-ainq;
-ainr;
-ains;
-aint;
-ainu;
-ainv;
-ainw;
-ainx;
-ainy;
-ainz;
-aioa;
-aiob;
-aioc;
-aiod;
-aioe;
-aiof;
-aiog;
-aioh;
-aioi;
-aioj;
-aiok;
-aiol;
-aiom;
-aion;
-aioo;
-aiop;
-aioq;
-aior;
-aios;
-aiot;
-aiou;
-aiov;
-aiow;
-aiox;
-aioy;
-aioz;
-aipa;
-aipb;
-aipc;
-aipd;
-aipe;
-aipf;
-aipg;
-aiph;
-aipi;
-aipj;
-aipk;
-aipl;
-aipm;
-aipn;
-aipo;
-aipp;
-aipq;
-aipr;
-aips;
-aipt;
-aipu;
-aipv;
-aipw;
-aipx;
-aipy;
-aipz;
-aiqa;
-aiqb;
-aiqc;
-aiqd;
-aiqe;
-aiqf;
-aiqg;
-aiqh;
-aiqi;
-aiqj;
-aiqk;
-aiql;
-aiqm;
-aiqn;
-aiqo;
-aiqp;
-aiqq;
-aiqr;
-aiqs;
-aiqt;
-aiqu;
-aiqv;
-aiqw;
-aiqx;
-aiqy;
-aiqz;
-aira;
-airb;
-airc;
-aird;
-aire;
-airf;
-airg;
-airh;
-airi;
-airj;
-airk;
-airl;
-airm;
-airn;
-airo;
-airp;
-airq;
-airr;
-airs;
-airt;
-airu;
-airv;
-airw;
-airx;
-airy;
-airz;
-aisa;
-aisb;
-aisc;
-aisd;
-aise;
-aisf;
-aisg;
-aish;
-aisi;
-aisj;
-aisk;
-aisl;
-aism;
-aisn;
-aiso;
-aisp;
-aisq;
-aisr;
-aiss;
-aist;
-aisu;
-aisv;
-aisw;
-aisx;
-aisy;
-aisz;
-aita;
-aitb;
-aitc;
-aitd;
-aite;
-aitf;
-aitg;
-aith;
-aiti;
-aitj;
-aitk;
-aitl;
-aitm;
-aitn;
-aito;
-aitp;
-aitq;
-aitr;
-aits;
-aitt;
-aitu;
-aitv;
-aitw;
-aitx;
-aity;
-aitz;
-aiua;
-aiub;
-aiuc;
-aiud;
-aiue;
-aiuf;
-aiug;
-aiuh;
-aiui;
-aiuj;
-aiuk;
-aiul;
-aium;
-aiun;
-aiuo;
-aiup;
-aiuq;
-aiur;
-aius;
-aiut;
-aiuu;
-aiuv;
-aiuw;
-aiux;
-aiuy;
-aiuz;
-aiva;
-aivb;
-aivc;
-aivd;
-aive;
-aivf;
-aivg;
-aivh;
-aivi;
-aivj;
-aivk;
-aivl;
-aivm;
-aivn;
-aivo;
-aivp;
-aivq;
-aivr;
-aivs;
-aivt;
-aivu;
-aivv;
-aivw;
-aivx;
-aivy;
-aivz;
-aiwa;
-aiwb;
-aiwc;
-aiwd;
-aiwe;
-aiwf;
-aiwg;
-aiwh;
-aiwi;
-aiwj;
-aiwk;
-aiwl;
-aiwm;
-aiwn;
-aiwo;
-aiwp;
-aiwq;
-aiwr;
-aiws;
-aiwt;
-aiwu;
-aiwv;
-aiww;
-aiwx;
-aiwy;
-aiwz;
-aixa;
-aixb;
-aixc;
-aixd;
-aixe;
-aixf;
-aixg;
-aixh;
-aixi;
-aixj;
-aixk;
-aixl;
-aixm;
-aixn;
-aixo;
-aixp;
-aixq;
-aixr;
-aixs;
-aixt;
-aixu;
-aixv;
-aixw;
-aixx;
-aixy;
-aixz;
-aiya;
-aiyb;
-aiyc;
-aiyd;
-aiye;
-aiyf;
-aiyg;
-aiyh;
-aiyi;
-aiyj;
-aiyk;
-aiyl;
-aiym;
-aiyn;
-aiyo;
-aiyp;
-aiyq;
-aiyr;
-aiys;
-aiyt;
-aiyu;
-aiyv;
-aiyw;
-aiyx;
-aiyy;
-aiyz;
-aiza;
-aizb;
-aizc;
-aizd;
-aize;
-aizf;
-aizg;
-aizh;
-aizi;
-aizj;
-aizk;
-aizl;
-aizm;
-aizn;
-aizo;
-aizp;
-aizq;
-aizr;
-aizs;
-aizt;
-aizu;
-aizv;
-aizw;
-aizx;
-aizy;
-aizz;
-ajaa;
-ajab;
-ajac;
-ajad;
-ajae;
-ajaf;
-ajag;
-ajah;
-ajai;
-ajaj;
-ajak;
-ajal;
-ajam;
-ajan;
-ajao;
-ajap;
-ajaq;
-ajar;
-ajas;
-ajat;
-ajau;
-ajav;
-ajaw;
-ajax;
-ajay;
-ajaz;
-ajba;
-ajbb;
-ajbc;
-ajbd;
-ajbe;
-ajbf;
-ajbg;
-ajbh;
-ajbi;
-ajbj;
-ajbk;
-ajbl;
-ajbm;
-ajbn;
-ajbo;
-ajbp;
-ajbq;
-ajbr;
-ajbs;
-ajbt;
-ajbu;
-ajbv;
-ajbw;
-ajbx;
-ajby;
-ajbz;
-ajca;
-ajcb;
-ajcc;
-ajcd;
-ajce;
-ajcf;
-ajcg;
-ajch;
-ajci;
-ajcj;
-ajck;
-ajcl;
-ajcm;
-ajcn;
-ajco;
-ajcp;
-ajcq;
-ajcr;
-ajcs;
-ajct;
-ajcu;
-ajcv;
-ajcw;
-ajcx;
-ajcy;
-ajcz;
-ajda;
-ajdb;
-ajdc;
-ajdd;
-ajde;
-ajdf;
-ajdg;
-ajdh;
-ajdi;
-ajdj;
-ajdk;
-ajdl;
-ajdm;
-ajdn;
-ajdo;
-ajdp;
-ajdq;
-ajdr;
-ajds;
-ajdt;
-ajdu;
-ajdv;
-ajdw;
-ajdx;
-ajdy;
-ajdz;
-ajea;
-ajeb;
-ajec;
-ajed;
-ajee;
-ajef;
-ajeg;
-ajeh;
-ajei;
-ajej;
-ajek;
-ajel;
-ajem;
-ajen;
-ajeo;
-ajep;
-ajeq;
-ajer;
-ajes;
-ajet;
-ajeu;
-ajev;
-ajew;
-ajex;
-ajey;
-ajez;
-ajfa;
-ajfb;
-ajfc;
-ajfd;
-ajfe;
-ajff;
-ajfg;
-ajfh;
-ajfi;
-ajfj;
-ajfk;
-ajfl;
-ajfm;
-ajfn;
-ajfo;
-ajfp;
-ajfq;
-ajfr;
-ajfs;
-ajft;
-ajfu;
-ajfv;
-ajfw;
-ajfx;
-ajfy;
-ajfz;
-ajga;
-ajgb;
-ajgc;
-ajgd;
-ajge;
-ajgf;
-ajgg;
-ajgh;
-ajgi;
-ajgj;
-ajgk;
-ajgl;
-ajgm;
-ajgn;
-ajgo;
-ajgp;
-ajgq;
-ajgr;
-ajgs;
-ajgt;
-ajgu;
-ajgv;
-ajgw;
-ajgx;
-ajgy;
-ajgz;
-ajha;
-ajhb;
-ajhc;
-ajhd;
-ajhe;
-ajhf;
-ajhg;
-ajhh;
-ajhi;
-ajhj;
-ajhk;
-ajhl;
-ajhm;
-ajhn;
-ajho;
-ajhp;
-ajhq;
-ajhr;
-ajhs;
-ajht;
-ajhu;
-ajhv;
-ajhw;
-ajhx;
-ajhy;
-ajhz;
-ajia;
-ajib;
-ajic;
-ajid;
-ajie;
-ajif;
-ajig;
-ajih;
-ajii;
-ajij;
-ajik;
-ajil;
-ajim;
-ajin;
-ajio;
-ajip;
-ajiq;
-ajir;
-ajis;
-ajit;
-ajiu;
-ajiv;
-ajiw;
-ajix;
-ajiy;
-ajiz;
-ajja;
-ajjb;
-ajjc;
-ajjd;
-ajje;
-ajjf;
-ajjg;
-ajjh;
-ajji;
-ajjj;
-ajjk;
-ajjl;
-ajjm;
-ajjn;
-ajjo;
-ajjp;
-ajjq;
-ajjr;
-ajjs;
-ajjt;
-ajju;
-ajjv;
-ajjw;
-ajjx;
-ajjy;
-ajjz;
-ajka;
-ajkb;
-ajkc;
-ajkd;
-ajke;
-ajkf;
-ajkg;
-ajkh;
-ajki;
-ajkj;
-ajkk;
-ajkl;
-ajkm;
-ajkn;
-ajko;
-ajkp;
-ajkq;
-ajkr;
-ajks;
-ajkt;
-ajku;
-ajkv;
-ajkw;
-ajkx;
-ajky;
-ajkz;
-ajla;
-ajlb;
-ajlc;
-ajld;
-ajle;
-ajlf;
-ajlg;
-ajlh;
-ajli;
-ajlj;
-ajlk;
-ajll;
-ajlm;
-ajln;
-ajlo;
-ajlp;
-ajlq;
-ajlr;
-ajls;
-ajlt;
-ajlu;
-ajlv;
-ajlw;
-ajlx;
-ajly;
-ajlz;
-ajma;
-ajmb;
-ajmc;
-ajmd;
-ajme;
-ajmf;
-ajmg;
-ajmh;
-ajmi;
-ajmj;
-ajmk;
-ajml;
-ajmm;
-ajmn;
-ajmo;
-ajmp;
-ajmq;
-ajmr;
-ajms;
-ajmt;
-ajmu;
-ajmv;
-ajmw;
-ajmx;
-ajmy;
-ajmz;
-ajna;
-ajnb;
-ajnc;
-ajnd;
-ajne;
-ajnf;
-ajng;
-ajnh;
-ajni;
-ajnj;
-ajnk;
-ajnl;
-ajnm;
-ajnn;
-ajno;
-ajnp;
-ajnq;
-ajnr;
-ajns;
-ajnt;
-ajnu;
-ajnv;
-ajnw;
-ajnx;
-ajny;
-ajnz;
-ajoa;
-ajob;
-ajoc;
-ajod;
-ajoe;
-ajof;
-ajog;
-ajoh;
-ajoi;
-ajoj;
-ajok;
-ajol;
-ajom;
-ajon;
-ajoo;
-ajop;
-ajoq;
-ajor;
-ajos;
-ajot;
-ajou;
-ajov;
-ajow;
-ajox;
-ajoy;
-ajoz;
-ajpa;
-ajpb;
-ajpc;
-ajpd;
-ajpe;
-ajpf;
-ajpg;
-ajph;
-ajpi;
-ajpj;
-ajpk;
-ajpl;
-ajpm;
-ajpn;
-ajpo;
-ajpp;
-ajpq;
-ajpr;
-ajps;
-ajpt;
-ajpu;
-ajpv;
-ajpw;
-ajpx;
-ajpy;
-ajpz;
-ajqa;
-ajqb;
-ajqc;
-ajqd;
-ajqe;
-ajqf;
-ajqg;
-ajqh;
-ajqi;
-ajqj;
-ajqk;
-ajql;
-ajqm;
-ajqn;
-ajqo;
-ajqp;
-ajqq;
-ajqr;
-ajqs;
-ajqt;
-ajqu;
-ajqv;
-ajqw;
-ajqx;
-ajqy;
-ajqz;
-ajra;
-ajrb;
-ajrc;
-ajrd;
-ajre;
-ajrf;
-ajrg;
-ajrh;
-ajri;
-ajrj;
-ajrk;
-ajrl;
-ajrm;
-ajrn;
-ajro;
-ajrp;
-ajrq;
-ajrr;
-ajrs;
-ajrt;
-ajru;
-ajrv;
-ajrw;
-ajrx;
-ajry;
-ajrz;
-ajsa;
-ajsb;
-ajsc;
-ajsd;
-ajse;
-ajsf;
-ajsg;
-ajsh;
-ajsi;
-ajsj;
-ajsk;
-ajsl;
-ajsm;
-ajsn;
-ajso;
-ajsp;
-ajsq;
-ajsr;
-ajss;
-ajst;
-ajsu;
-ajsv;
-ajsw;
-ajsx;
-ajsy;
-ajsz;
-ajta;
-ajtb;
-ajtc;
-ajtd;
-ajte;
-ajtf;
-ajtg;
-ajth;
-ajti;
-ajtj;
-ajtk;
-ajtl;
-ajtm;
-ajtn;
-ajto;
-ajtp;
-ajtq;
-ajtr;
-ajts;
-ajtt;
-ajtu;
-ajtv;
-ajtw;
-ajtx;
-ajty;
-ajtz;
-ajua;
-ajub;
-ajuc;
-ajud;
-ajue;
-ajuf;
-ajug;
-ajuh;
-ajui;
-ajuj;
-ajuk;
-ajul;
-ajum;
-ajun;
-ajuo;
-ajup;
-ajuq;
-ajur;
-ajus;
-ajut;
-ajuu;
-ajuv;
-ajuw;
-ajux;
-ajuy;
-ajuz;
-ajva;
-ajvb;
-ajvc;
-ajvd;
-ajve;
-ajvf;
-ajvg;
-ajvh;
-ajvi;
-ajvj;
-ajvk;
-ajvl;
-ajvm;
-ajvn;
-ajvo;
-ajvp;
-ajvq;
-ajvr;
-ajvs;
-ajvt;
-ajvu;
-ajvv;
-ajvw;
-ajvx;
-ajvy;
-ajvz;
-ajwa;
-ajwb;
-ajwc;
-ajwd;
-ajwe;
-ajwf;
-ajwg;
-ajwh;
-ajwi;
-ajwj;
-ajwk;
-ajwl;
-ajwm;
-ajwn;
-ajwo;
-ajwp;
-ajwq;
-ajwr;
-ajws;
-ajwt;
-ajwu;
-ajwv;
-ajww;
-ajwx;
-ajwy;
-ajwz;
-ajxa;
-ajxb;
-ajxc;
-ajxd;
-ajxe;
-ajxf;
-ajxg;
-ajxh;
-ajxi;
-ajxj;
-ajxk;
-ajxl;
-ajxm;
-ajxn;
-ajxo;
-ajxp;
-ajxq;
-ajxr;
-ajxs;
-ajxt;
-ajxu;
-ajxv;
-ajxw;
-ajxx;
-ajxy;
-ajxz;
-ajya;
-ajyb;
-ajyc;
-ajyd;
-ajye;
-ajyf;
-ajyg;
-ajyh;
-ajyi;
-ajyj;
-ajyk;
-ajyl;
-ajym;
-ajyn;
-ajyo;
-ajyp;
-ajyq;
-ajyr;
-ajys;
-ajyt;
-ajyu;
-ajyv;
-ajyw;
-ajyx;
-ajyy;
-ajyz;
-ajza;
-ajzb;
-ajzc;
-ajzd;
-ajze;
-ajzf;
-ajzg;
-ajzh;
-ajzi;
-ajzj;
-ajzk;
-ajzl;
-ajzm;
-ajzn;
-ajzo;
-ajzp;
-ajzq;
-ajzr;
-ajzs;
-ajzt;
-ajzu;
-ajzv;
-ajzw;
-ajzx;
-ajzy;
-ajzz;
-akaa;
-akab;
-akac;
-akad;
-akae;
-akaf;
-akag;
-akah;
-akai;
-akaj;
-akak;
-akal;
-akam;
-akan;
-akao;
-akap;
-akaq;
-akar;
-akas;
-akat;
-akau;
-akav;
-akaw;
-akax;
-akay;
-akaz;
-akba;
-akbb;
-akbc;
-akbd;
-akbe;
-akbf;
-akbg;
-akbh;
-akbi;
-akbj;
-akbk;
-akbl;
-akbm;
-akbn;
-akbo;
-akbp;
-akbq;
-akbr;
-akbs;
-akbt;
-akbu;
-akbv;
-akbw;
-akbx;
-akby;
-akbz;
-akca;
-akcb;
-akcc;
-akcd;
-akce;
-akcf;
-akcg;
-akch;
-akci;
-akcj;
-akck;
-akcl;
-akcm;
-akcn;
-akco;
-akcp;
-akcq;
-akcr;
-akcs;
-akct;
-akcu;
-akcv;
-akcw;
-akcx;
-akcy;
-akcz;
-akda;
-akdb;
-akdc;
-akdd;
-akde;
-akdf;
-akdg;
-akdh;
-akdi;
-akdj;
-akdk;
-akdl;
-akdm;
-akdn;
-akdo;
-akdp;
-akdq;
-akdr;
-akds;
-akdt;
-akdu;
-akdv;
-akdw;
-akdx;
-akdy;
-akdz;
-akea;
-akeb;
-akec;
-aked;
-akee;
-akef;
-akeg;
-akeh;
-akei;
-akej;
-akek;
-akel;
-akem;
-aken;
-akeo;
-akep;
-akeq;
-aker;
-akes;
-aket;
-akeu;
-akev;
-akew;
-akex;
-akey;
-akez;
-akfa;
-akfb;
-akfc;
-akfd;
-akfe;
-akff;
-akfg;
-akfh;
-akfi;
-akfj;
-akfk;
-akfl;
-akfm;
-akfn;
-akfo;
-akfp;
-akfq;
-akfr;
-akfs;
-akft;
-akfu;
-akfv;
-akfw;
-akfx;
-akfy;
-akfz;
-akga;
-akgb;
-akgc;
-akgd;
-akge;
-akgf;
-akgg;
-akgh;
-akgi;
-akgj;
-akgk;
-akgl;
-akgm;
-akgn;
-akgo;
-akgp;
-akgq;
-akgr;
-akgs;
-akgt;
-akgu;
-akgv;
-akgw;
-akgx;
-akgy;
-akgz;
-akha;
-akhb;
-akhc;
-akhd;
-akhe;
-akhf;
-akhg;
-akhh;
-akhi;
-akhj;
-akhk;
-akhl;
-akhm;
-akhn;
-akho;
-akhp;
-akhq;
-akhr;
-akhs;
-akht;
-akhu;
-akhv;
-akhw;
-akhx;
-akhy;
-akhz;
-akia;
-akib;
-akic;
-akid;
-akie;
-akif;
-akig;
-akih;
-akii;
-akij;
-akik;
-akil;
-akim;
-akin;
-akio;
-akip;
-akiq;
-akir;
-akis;
-akit;
-akiu;
-akiv;
-akiw;
-akix;
-akiy;
-akiz;
-akja;
-akjb;
-akjc;
-akjd;
-akje;
-akjf;
-akjg;
-akjh;
-akji;
-akjj;
-akjk;
-akjl;
-akjm;
-akjn;
-akjo;
-akjp;
-akjq;
-akjr;
-akjs;
-akjt;
-akju;
-akjv;
-akjw;
-akjx;
-akjy;
-akjz;
-akka;
-akkb;
-akkc;
-akkd;
-akke;
-akkf;
-akkg;
-akkh;
-akki;
-akkj;
-akkk;
-akkl;
-akkm;
-akkn;
-akko;
-akkp;
-akkq;
-akkr;
-akks;
-akkt;
-akku;
-akkv;
-akkw;
-akkx;
-akky;
-akkz;
-akla;
-aklb;
-aklc;
-akld;
-akle;
-aklf;
-aklg;
-aklh;
-akli;
-aklj;
-aklk;
-akll;
-aklm;
-akln;
-aklo;
-aklp;
-aklq;
-aklr;
-akls;
-aklt;
-aklu;
-aklv;
-aklw;
-aklx;
-akly;
-aklz;
-akma;
-akmb;
-akmc;
-akmd;
-akme;
-akmf;
-akmg;
-akmh;
-akmi;
-akmj;
-akmk;
-akml;
-akmm;
-akmn;
-akmo;
-akmp;
-akmq;
-akmr;
-akms;
-akmt;
-akmu;
-akmv;
-akmw;
-akmx;
-akmy;
-akmz;
-akna;
-aknb;
-aknc;
-aknd;
-akne;
-aknf;
-akng;
-aknh;
-akni;
-aknj;
-aknk;
-aknl;
-aknm;
-aknn;
-akno;
-aknp;
-aknq;
-aknr;
-akns;
-aknt;
-aknu;
-aknv;
-aknw;
-aknx;
-akny;
-aknz;
-akoa;
-akob;
-akoc;
-akod;
-akoe;
-akof;
-akog;
-akoh;
-akoi;
-akoj;
-akok;
-akol;
-akom;
-akon;
-akoo;
-akop;
-akoq;
-akor;
-akos;
-akot;
-akou;
-akov;
-akow;
-akox;
-akoy;
-akoz;
-akpa;
-akpb;
-akpc;
-akpd;
-akpe;
-akpf;
-akpg;
-akph;
-akpi;
-akpj;
-akpk;
-akpl;
-akpm;
-akpn;
-akpo;
-akpp;
-akpq;
-akpr;
-akps;
-akpt;
-akpu;
-akpv;
-akpw;
-akpx;
-akpy;
-akpz;
-akqa;
-akqb;
-akqc;
-akqd;
-akqe;
-akqf;
-akqg;
-akqh;
-akqi;
-akqj;
-akqk;
-akql;
-akqm;
-akqn;
-akqo;
-akqp;
-akqq;
-akqr;
-akqs;
-akqt;
-akqu;
-akqv;
-akqw;
-akqx;
-akqy;
-akqz;
-akra;
-akrb;
-akrc;
-akrd;
-akre;
-akrf;
-akrg;
-akrh;
-akri;
-akrj;
-akrk;
-akrl;
-akrm;
-akrn;
-akro;
-akrp;
-akrq;
-akrr;
-akrs;
-akrt;
-akru;
-akrv;
-akrw;
-akrx;
-akry;
-akrz;
-aksa;
-aksb;
-aksc;
-aksd;
-akse;
-aksf;
-aksg;
-aksh;
-aksi;
-aksj;
-aksk;
-aksl;
-aksm;
-aksn;
-akso;
-aksp;
-aksq;
-aksr;
-akss;
-akst;
-aksu;
-aksv;
-aksw;
-aksx;
-aksy;
-aksz;
-akta;
-aktb;
-aktc;
-aktd;
-akte;
-aktf;
-aktg;
-akth;
-akti;
-aktj;
-aktk;
-aktl;
-aktm;
-aktn;
-akto;
-aktp;
-aktq;
-aktr;
-akts;
-aktt;
-aktu;
-aktv;
-aktw;
-aktx;
-akty;
-aktz;
-akua;
-akub;
-akuc;
-akud;
-akue;
-akuf;
-akug;
-akuh;
-akui;
-akuj;
-akuk;
-akul;
-akum;
-akun;
-akuo;
-akup;
-akuq;
-akur;
-akus;
-akut;
-akuu;
-akuv;
-akuw;
-akux;
-akuy;
-akuz;
-akva;
-akvb;
-akvc;
-akvd;
-akve;
-akvf;
-akvg;
-akvh;
-akvi;
-akvj;
-akvk;
-akvl;
-akvm;
-akvn;
-akvo;
-akvp;
-akvq;
-akvr;
-akvs;
-akvt;
-akvu;
-akvv;
-akvw;
-akvx;
-akvy;
-akvz;
-akwa;
-akwb;
-akwc;
-akwd;
-akwe;
-akwf;
-akwg;
-akwh;
-akwi;
-akwj;
-akwk;
-akwl;
-akwm;
-akwn;
-akwo;
-akwp;
-akwq;
-akwr;
-akws;
-akwt;
-akwu;
-akwv;
-akww;
-akwx;
-akwy;
-akwz;
-akxa;
-akxb;
-akxc;
-akxd;
-akxe;
-akxf;
-akxg;
-akxh;
-akxi;
-akxj;
-akxk;
-akxl;
-akxm;
-akxn;
-akxo;
-akxp;
-akxq;
-akxr;
-akxs;
-akxt;
-akxu;
-akxv;
-akxw;
-akxx;
-akxy;
-akxz;
-akya;
-akyb;
-akyc;
-akyd;
-akye;
-akyf;
-akyg;
-akyh;
-akyi;
-akyj;
-akyk;
-akyl;
-akym;
-akyn;
-akyo;
-akyp;
-akyq;
-akyr;
-akys;
-akyt;
-akyu;
-akyv;
-akyw;
-akyx;
-akyy;
-akyz;
-akza;
-akzb;
-akzc;
-akzd;
-akze;
-akzf;
-akzg;
-akzh;
-akzi;
-akzj;
-akzk;
-akzl;
-akzm;
-akzn;
-akzo;
-akzp;
-akzq;
-akzr;
-akzs;
-akzt;
-akzu;
-akzv;
-akzw;
-akzx;
-akzy;
-akzz;
-alaa;
-alab;
-alac;
-alad;
-alae;
-alaf;
-alag;
-alah;
-alai;
-alaj;
-alak;
-alal;
-alam;
-alan;
-alao;
-alap;
-alaq;
-alar;
-alas;
-alat;
-alau;
-alav;
-alaw;
-alax;
-alay;
-alaz;
-alba;
-albb;
-albc;
-albd;
-albe;
-albf;
-albg;
-albh;
-albi;
-albj;
-albk;
-albl;
-albm;
-albn;
-albo;
-albp;
-albq;
-albr;
-albs;
-albt;
-albu;
-albv;
-albw;
-albx;
-alby;
-albz;
-alca;
-alcb;
-alcc;
-alcd;
-alce;
-alcf;
-alcg;
-alch;
-alci;
-alcj;
-alck;
-alcl;
-alcm;
-alcn;
-alco;
-alcp;
-alcq;
-alcr;
-alcs;
-alct;
-alcu;
-alcv;
-alcw;
-alcx;
-alcy;
-alcz;
-alda;
-aldb;
-aldc;
-aldd;
-alde;
-aldf;
-aldg;
-aldh;
-aldi;
-aldj;
-aldk;
-aldl;
-aldm;
-aldn;
-aldo;
-aldp;
-aldq;
-aldr;
-alds;
-aldt;
-aldu;
-aldv;
-aldw;
-aldx;
-aldy;
-aldz;
-alea;
-aleb;
-alec;
-aled;
-alee;
-alef;
-aleg;
-aleh;
-alei;
-alej;
-alek;
-alel;
-alem;
-alen;
-aleo;
-alep;
-aleq;
-aler;
-ales;
-alet;
-aleu;
-alev;
-alew;
-alex;
-aley;
-alez;
-alfa;
-alfb;
-alfc;
-alfd;
-alfe;
-alff;
-alfg;
-alfh;
-alfi;
-alfj;
-alfk;
-alfl;
-alfm;
-alfn;
-alfo;
-alfp;
-alfq;
-alfr;
-alfs;
-alft;
-alfu;
-alfv;
-alfw;
-alfx;
-alfy;
-alfz;
-alga;
-algb;
-algc;
-algd;
-alge;
-algf;
-algg;
-algh;
-algi;
-algj;
-algk;
-algl;
-algm;
-algn;
-algo;
-algp;
-algq;
-algr;
-algs;
-algt;
-algu;
-algv;
-algw;
-algx;
-algy;
-algz;
-alha;
-alhb;
-alhc;
-alhd;
-alhe;
-alhf;
-alhg;
-alhh;
-alhi;
-alhj;
-alhk;
-alhl;
-alhm;
-alhn;
-alho;
-alhp;
-alhq;
-alhr;
-alhs;
-alht;
-alhu;
-alhv;
-alhw;
-alhx;
-alhy;
-alhz;
-alia;
-alib;
-alic;
-alid;
-alie;
-alif;
-alig;
-alih;
-alii;
-alij;
-alik;
-alil;
-alim;
-alin;
-alio;
-alip;
-aliq;
-alir;
-alis;
-alit;
-aliu;
-aliv;
-aliw;
-alix;
-aliy;
-aliz;
-alja;
-aljb;
-aljc;
-aljd;
-alje;
-aljf;
-aljg;
-aljh;
-alji;
-aljj;
-aljk;
-aljl;
-aljm;
-aljn;
-aljo;
-aljp;
-aljq;
-aljr;
-aljs;
-aljt;
-alju;
-aljv;
-aljw;
-aljx;
-aljy;
-aljz;
-alka;
-alkb;
-alkc;
-alkd;
-alke;
-alkf;
-alkg;
-alkh;
-alki;
-alkj;
-alkk;
-alkl;
-alkm;
-alkn;
-alko;
-alkp;
-alkq;
-alkr;
-alks;
-alkt;
-alku;
-alkv;
-alkw;
-alkx;
-alky;
-alkz;
-alla;
-allb;
-allc;
-alld;
-alle;
-allf;
-allg;
-allh;
-alli;
-allj;
-allk;
-alll;
-allm;
-alln;
-allo;
-allp;
-allq;
-allr;
-alls;
-allt;
-allu;
-allv;
-allw;
-allx;
-ally;
-allz;
-alma;
-almb;
-almc;
-almd;
-alme;
-almf;
-almg;
-almh;
-almi;
-almj;
-almk;
-alml;
-almm;
-almn;
-almo;
-almp;
-almq;
-almr;
-alms;
-almt;
-almu;
-almv;
-almw;
-almx;
-almy;
-almz;
-alna;
-alnb;
-alnc;
-alnd;
-alne;
-alnf;
-alng;
-alnh;
-alni;
-alnj;
-alnk;
-alnl;
-alnm;
-alnn;
-alno;
-alnp;
-alnq;
-alnr;
-alns;
-alnt;
-alnu;
-alnv;
-alnw;
-alnx;
-alny;
-alnz;
-aloa;
-alob;
-aloc;
-alod;
-aloe;
-alof;
-alog;
-aloh;
-aloi;
-aloj;
-alok;
-alol;
-alom;
-alon;
-aloo;
-alop;
-aloq;
-alor;
-alos;
-alot;
-alou;
-alov;
-alow;
-alox;
-aloy;
-aloz;
-alpa;
-alpb;
-alpc;
-alpd;
-alpe;
-alpf;
-alpg;
-alph;
-alpi;
-alpj;
-alpk;
-alpl;
-alpm;
-alpn;
-alpo;
-alpp;
-alpq;
-alpr;
-alps;
-alpt;
-alpu;
-alpv;
-alpw;
-alpx;
-alpy;
-alpz;
-alqa;
-alqb;
-alqc;
-alqd;
-alqe;
-alqf;
-alqg;
-alqh;
-alqi;
-alqj;
-alqk;
-alql;
-alqm;
-alqn;
-alqo;
-alqp;
-alqq;
-alqr;
-alqs;
-alqt;
-alqu;
-alqv;
-alqw;
-alqx;
-alqy;
-alqz;
-alra;
-alrb;
-alrc;
-alrd;
-alre;
-alrf;
-alrg;
-alrh;
-alri;
-alrj;
-alrk;
-alrl;
-alrm;
-alrn;
-alro;
-alrp;
-alrq;
-alrr;
-alrs;
-alrt;
-alru;
-alrv;
-alrw;
-alrx;
-alry;
-alrz;
-alsa;
-alsb;
-alsc;
-alsd;
-alse;
-alsf;
-alsg;
-alsh;
-alsi;
-alsj;
-alsk;
-alsl;
-alsm;
-alsn;
-also;
-alsp;
-alsq;
-alsr;
-alss;
-alst;
-alsu;
-alsv;
-alsw;
-alsx;
-alsy;
-alsz;
-alta;
-altb;
-altc;
-altd;
-alte;
-altf;
-altg;
-alth;
-alti;
-altj;
-altk;
-altl;
-altm;
-altn;
-alto;
-altp;
-altq;
-altr;
-alts;
-altt;
-altu;
-altv;
-altw;
-altx;
-alty;
-altz;
-alua;
-alub;
-aluc;
-alud;
-alue;
-aluf;
-alug;
-aluh;
-alui;
-aluj;
-aluk;
-alul;
-alum;
-alun;
-aluo;
-alup;
-aluq;
-alur;
-alus;
-alut;
-aluu;
-aluv;
-aluw;
-alux;
-aluy;
-aluz;
-alva;
-alvb;
-alvc;
-alvd;
-alve;
-alvf;
-alvg;
-alvh;
-alvi;
-alvj;
-alvk;
-alvl;
-alvm;
-alvn;
-alvo;
-alvp;
-alvq;
-alvr;
-alvs;
-alvt;
-alvu;
-alvv;
-alvw;
-alvx;
-alvy;
-alvz;
-alwa;
-alwb;
-alwc;
-alwd;
-alwe;
-alwf;
-alwg;
-alwh;
-alwi;
-alwj;
-alwk;
-alwl;
-alwm;
-alwn;
-alwo;
-alwp;
-alwq;
-alwr;
-alws;
-alwt;
-alwu;
-alwv;
-alww;
-alwx;
-alwy;
-alwz;
-alxa;
-alxb;
-alxc;
-alxd;
-alxe;
-alxf;
-alxg;
-alxh;
-alxi;
-alxj;
-alxk;
-alxl;
-alxm;
-alxn;
-alxo;
-alxp;
-alxq;
-alxr;
-alxs;
-alxt;
-alxu;
-alxv;
-alxw;
-alxx;
-alxy;
-alxz;
-alya;
-alyb;
-alyc;
-alyd;
-alye;
-alyf;
-alyg;
-alyh;
-alyi;
-alyj;
-alyk;
-alyl;
-alym;
-alyn;
-alyo;
-alyp;
-alyq;
-alyr;
-alys;
-alyt;
-alyu;
-alyv;
-alyw;
-alyx;
-alyy;
-alyz;
-alza;
-alzb;
-alzc;
-alzd;
-alze;
-alzf;
-alzg;
-alzh;
-alzi;
-alzj;
-alzk;
-alzl;
-alzm;
-alzn;
-alzo;
-alzp;
-alzq;
-alzr;
-alzs;
-alzt;
-alzu;
-alzv;
-alzw;
-alzx;
-alzy;
-alzz;
-amaa;
-amab;
-amac;
-amad;
-amae;
-amaf;
-amag;
-amah;
-amai;
-amaj;
-amak;
-amal;
-amam;
-aman;
-amao;
-amap;
-amaq;
-amar;
-amas;
-amat;
-amau;
-amav;
-amaw;
-amax;
-amay;
-amaz;
-amba;
-ambb;
-ambc;
-ambd;
-ambe;
-ambf;
-ambg;
-ambh;
-ambi;
-ambj;
-ambk;
-ambl;
-ambm;
-ambn;
-ambo;
-ambp;
-ambq;
-ambr;
-ambs;
-ambt;
-ambu;
-ambv;
-ambw;
-ambx;
-amby;
-ambz;
-amca;
-amcb;
-amcc;
-amcd;
-amce;
-amcf;
-amcg;
-amch;
-amci;
-amcj;
-amck;
-amcl;
-amcm;
-amcn;
-amco;
-amcp;
-amcq;
-amcr;
-amcs;
-amct;
-amcu;
-amcv;
-amcw;
-amcx;
-amcy;
-amcz;
-amda;
-amdb;
-amdc;
-amdd;
-amde;
-amdf;
-amdg;
-amdh;
-amdi;
-amdj;
-amdk;
-amdl;
-amdm;
-amdn;
-amdo;
-amdp;
-amdq;
-amdr;
-amds;
-amdt;
-amdu;
-amdv;
-amdw;
-amdx;
-amdy;
-amdz;
-amea;
-ameb;
-amec;
-amed;
-amee;
-amef;
-ameg;
-ameh;
-amei;
-amej;
-amek;
-amel;
-amem;
-amen;
-ameo;
-amep;
-ameq;
-amer;
-ames;
-amet;
-ameu;
-amev;
-amew;
-amex;
-amey;
-amez;
-amfa;
-amfb;
-amfc;
-amfd;
-amfe;
-amff;
-amfg;
-amfh;
-amfi;
-amfj;
-amfk;
-amfl;
-amfm;
-amfn;
-amfo;
-amfp;
-amfq;
-amfr;
-amfs;
-amft;
-amfu;
-amfv;
-amfw;
-amfx;
-amfy;
-amfz;
-amga;
-amgb;
-amgc;
-amgd;
-amge;
-amgf;
-amgg;
-amgh;
-amgi;
-amgj;
-amgk;
-amgl;
-amgm;
-amgn;
-amgo;
-amgp;
-amgq;
-amgr;
-amgs;
-amgt;
-amgu;
-amgv;
-amgw;
-amgx;
-amgy;
-amgz;
-amha;
-amhb;
-amhc;
-amhd;
-amhe;
-amhf;
-amhg;
-amhh;
-amhi;
-amhj;
-amhk;
-amhl;
-amhm;
-amhn;
-amho;
-amhp;
-amhq;
-amhr;
-amhs;
-amht;
-amhu;
-amhv;
-amhw;
-amhx;
-amhy;
-amhz;
-amia;
-amib;
-amic;
-amid;
-amie;
-amif;
-amig;
-amih;
-amii;
-amij;
-amik;
-amil;
-amim;
-amin;
-amio;
-amip;
-amiq;
-amir;
-amis;
-amit;
-amiu;
-amiv;
-amiw;
-amix;
-amiy;
-amiz;
-amja;
-amjb;
-amjc;
-amjd;
-amje;
-amjf;
-amjg;
-amjh;
-amji;
-amjj;
-amjk;
-amjl;
-amjm;
-amjn;
-amjo;
-amjp;
-amjq;
-amjr;
-amjs;
-amjt;
-amju;
-amjv;
-amjw;
-amjx;
-amjy;
-amjz;
-amka;
-amkb;
-amkc;
-amkd;
-amke;
-amkf;
-amkg;
-amkh;
-amki;
-amkj;
-amkk;
-amkl;
-amkm;
-amkn;
-amko;
-amkp;
-amkq;
-amkr;
-amks;
-amkt;
-amku;
-amkv;
-amkw;
-amkx;
-amky;
-amkz;
-amla;
-amlb;
-amlc;
-amld;
-amle;
-amlf;
-amlg;
-amlh;
-amli;
-amlj;
-amlk;
-amll;
-amlm;
-amln;
-amlo;
-amlp;
-amlq;
-amlr;
-amls;
-amlt;
-amlu;
-amlv;
-amlw;
-amlx;
-amly;
-amlz;
-amma;
-ammb;
-ammc;
-ammd;
-amme;
-ammf;
-ammg;
-ammh;
-ammi;
-ammj;
-ammk;
-amml;
-ammm;
-ammn;
-ammo;
-ammp;
-ammq;
-ammr;
-amms;
-ammt;
-ammu;
-ammv;
-ammw;
-ammx;
-ammy;
-ammz;
-amna;
-amnb;
-amnc;
-amnd;
-amne;
-amnf;
-amng;
-amnh;
-amni;
-amnj;
-amnk;
-amnl;
-amnm;
-amnn;
-amno;
-amnp;
-amnq;
-amnr;
-amns;
-amnt;
-amnu;
-amnv;
-amnw;
-amnx;
-amny;
-amnz;
-amoa;
-amob;
-amoc;
-amod;
-amoe;
-amof;
-amog;
-amoh;
-amoi;
-amoj;
-amok;
-amol;
-amom;
-amon;
-amoo;
-amop;
-amoq;
-amor;
-amos;
-amot;
-amou;
-amov;
-amow;
-amox;
-amoy;
-amoz;
-ampa;
-ampb;
-ampc;
-ampd;
-ampe;
-ampf;
-ampg;
-amph;
-ampi;
-ampj;
-ampk;
-ampl;
-ampm;
-ampn;
-ampo;
-ampp;
-ampq;
-ampr;
-amps;
-ampt;
-ampu;
-ampv;
-ampw;
-ampx;
-ampy;
-ampz;
-amqa;
-amqb;
-amqc;
-amqd;
-amqe;
-amqf;
-amqg;
-amqh;
-amqi;
-amqj;
-amqk;
-amql;
-amqm;
-amqn;
-amqo;
-amqp;
-amqq;
-amqr;
-amqs;
-amqt;
-amqu;
-amqv;
-amqw;
-amqx;
-amqy;
-amqz;
-amra;
-amrb;
-amrc;
-amrd;
-amre;
-amrf;
-amrg;
-amrh;
-amri;
-amrj;
-amrk;
-amrl;
-amrm;
-amrn;
-amro;
-amrp;
-amrq;
-amrr;
-amrs;
-amrt;
-amru;
-amrv;
-amrw;
-amrx;
-amry;
-amrz;
-amsa;
-amsb;
-amsc;
-amsd;
-amse;
-amsf;
-amsg;
-amsh;
-amsi;
-amsj;
-amsk;
-amsl;
-amsm;
-amsn;
-amso;
-amsp;
-amsq;
-amsr;
-amss;
-amst;
-amsu;
-amsv;
-amsw;
-amsx;
-amsy;
-amsz;
-amta;
-amtb;
-amtc;
-amtd;
-amte;
-amtf;
-amtg;
-amth;
-amti;
-amtj;
-amtk;
-amtl;
-amtm;
-amtn;
-amto;
-amtp;
-amtq;
-amtr;
-amts;
-amtt;
-amtu;
-amtv;
-amtw;
-amtx;
-amty;
-amtz;
-amua;
-amub;
-amuc;
-amud;
-amue;
-amuf;
-amug;
-amuh;
-amui;
-amuj;
-amuk;
-amul;
-amum;
-amun;
-amuo;
-amup;
-amuq;
-amur;
-amus;
-amut;
-amuu;
-amuv;
-amuw;
-amux;
-amuy;
-amuz;
-amva;
-amvb;
-amvc;
-amvd;
-amve;
-amvf;
-amvg;
-amvh;
-amvi;
-amvj;
-amvk;
-amvl;
-amvm;
-amvn;
-amvo;
-amvp;
-amvq;
-amvr;
-amvs;
-amvt;
-amvu;
-amvv;
-amvw;
-amvx;
-amvy;
-amvz;
-amwa;
-amwb;
-amwc;
-amwd;
-amwe;
-amwf;
-amwg;
-amwh;
-amwi;
-amwj;
-amwk;
-amwl;
-amwm;
-amwn;
-amwo;
-amwp;
-amwq;
-amwr;
-amws;
-amwt;
-amwu;
-amwv;
-amww;
-amwx;
-amwy;
-amwz;
-amxa;
-amxb;
-amxc;
-amxd;
-amxe;
-amxf;
-amxg;
-amxh;
-amxi;
-amxj;
-amxk;
-amxl;
-amxm;
-amxn;
-amxo;
-amxp;
-amxq;
-amxr;
-amxs;
-amxt;
-amxu;
-amxv;
-amxw;
-amxx;
-amxy;
-amxz;
-amya;
-amyb;
-amyc;
-amyd;
-amye;
-amyf;
-amyg;
-amyh;
-amyi;
-amyj;
-amyk;
-amyl;
-amym;
-amyn;
-amyo;
-amyp;
-amyq;
-amyr;
-amys;
-amyt;
-amyu;
-amyv;
-amyw;
-amyx;
-amyy;
-amyz;
-amza;
-amzb;
-amzc;
-amzd;
-amze;
-amzf;
-amzg;
-amzh;
-amzi;
-amzj;
-amzk;
-amzl;
-amzm;
-amzn;
-amzo;
-amzp;
-amzq;
-amzr;
-amzs;
-amzt;
-amzu;
-amzv;
-amzw;
-amzx;
-amzy;
-amzz;
-anaa;
-anab;
-anac;
-anad;
-anae;
-anaf;
-anag;
-anah;
-anai;
-anaj;
-anak;
-anal;
-anam;
-anan;
-anao;
-anap;
-anaq;
-anar;
-anas;
-anat;
-anau;
-anav;
-anaw;
-anax;
-anay;
-anaz;
-anba;
-anbb;
-anbc;
-anbd;
-anbe;
-anbf;
-anbg;
-anbh;
-anbi;
-anbj;
-anbk;
-anbl;
-anbm;
-anbn;
-anbo;
-anbp;
-anbq;
-anbr;
-anbs;
-anbt;
-anbu;
-anbv;
-anbw;
-anbx;
-anby;
-anbz;
-anca;
-ancb;
-ancc;
-ancd;
-ance;
-ancf;
-ancg;
-anch;
-anci;
-ancj;
-anck;
-ancl;
-ancm;
-ancn;
-anco;
-ancp;
-ancq;
-ancr;
-ancs;
-anct;
-ancu;
-ancv;
-ancw;
-ancx;
-ancy;
-ancz;
-anda;
-andb;
-andc;
-andd;
-ande;
-andf;
-andg;
-andh;
-andi;
-andj;
-andk;
-andl;
-andm;
-andn;
-ando;
-andp;
-andq;
-andr;
-ands;
-andt;
-andu;
-andv;
-andw;
-andx;
-andy;
-andz;
-anea;
-aneb;
-anec;
-aned;
-anee;
-anef;
-aneg;
-aneh;
-anei;
-anej;
-anek;
-anel;
-anem;
-anen;
-aneo;
-anep;
-aneq;
-aner;
-anes;
-anet;
-aneu;
-anev;
-anew;
-anex;
-aney;
-anez;
-anfa;
-anfb;
-anfc;
-anfd;
-anfe;
-anff;
-anfg;
-anfh;
-anfi;
-anfj;
-anfk;
-anfl;
-anfm;
-anfn;
-anfo;
-anfp;
-anfq;
-anfr;
-anfs;
-anft;
-anfu;
-anfv;
-anfw;
-anfx;
-anfy;
-anfz;
-anga;
-angb;
-angc;
-angd;
-ange;
-angf;
-angg;
-angh;
-angi;
-angj;
-angk;
-angl;
-angm;
-angn;
-ango;
-angp;
-angq;
-angr;
-angs;
-angt;
-angu;
-angv;
-angw;
-angx;
-angy;
-angz;
-anha;
-anhb;
-anhc;
-anhd;
-anhe;
-anhf;
-anhg;
-anhh;
-anhi;
-anhj;
-anhk;
-anhl;
-anhm;
-anhn;
-anho;
-anhp;
-anhq;
-anhr;
-anhs;
-anht;
-anhu;
-anhv;
-anhw;
-anhx;
-anhy;
-anhz;
-ania;
-anib;
-anic;
-anid;
-anie;
-anif;
-anig;
-anih;
-anii;
-anij;
-anik;
-anil;
-anim;
-anin;
-anio;
-anip;
-aniq;
-anir;
-anis;
-anit;
-aniu;
-aniv;
-aniw;
-anix;
-aniy;
-aniz;
-anja;
-anjb;
-anjc;
-anjd;
-anje;
-anjf;
-anjg;
-anjh;
-anji;
-anjj;
-anjk;
-anjl;
-anjm;
-anjn;
-anjo;
-anjp;
-anjq;
-anjr;
-anjs;
-anjt;
-anju;
-anjv;
-anjw;
-anjx;
-anjy;
-anjz;
-anka;
-ankb;
-ankc;
-ankd;
-anke;
-ankf;
-ankg;
-ankh;
-anki;
-ankj;
-ankk;
-ankl;
-ankm;
-ankn;
-anko;
-ankp;
-ankq;
-ankr;
-anks;
-ankt;
-anku;
-ankv;
-ankw;
-ankx;
-anky;
-ankz;
-anla;
-anlb;
-anlc;
-anld;
-anle;
-anlf;
-anlg;
-anlh;
-anli;
-anlj;
-anlk;
-anll;
-anlm;
-anln;
-anlo;
-anlp;
-anlq;
-anlr;
-anls;
-anlt;
-anlu;
-anlv;
-anlw;
-anlx;
-anly;
-anlz;
-anma;
-anmb;
-anmc;
-anmd;
-anme;
-anmf;
-anmg;
-anmh;
-anmi;
-anmj;
-anmk;
-anml;
-anmm;
-anmn;
-anmo;
-anmp;
-anmq;
-anmr;
-anms;
-anmt;
-anmu;
-anmv;
-anmw;
-anmx;
-anmy;
-anmz;
-anna;
-annb;
-annc;
-annd;
-anne;
-annf;
-anng;
-annh;
-anni;
-annj;
-annk;
-annl;
-annm;
-annn;
-anno;
-annp;
-annq;
-annr;
-anns;
-annt;
-annu;
-annv;
-annw;
-annx;
-anny;
-annz;
-anoa;
-anob;
-anoc;
-anod;
-anoe;
-anof;
-anog;
-anoh;
-anoi;
-anoj;
-anok;
-anol;
-anom;
-anon;
-anoo;
-anop;
-anoq;
-anor;
-anos;
-anot;
-anou;
-anov;
-anow;
-anox;
-anoy;
-anoz;
-anpa;
-anpb;
-anpc;
-anpd;
-anpe;
-anpf;
-anpg;
-anph;
-anpi;
-anpj;
-anpk;
-anpl;
-anpm;
-anpn;
-anpo;
-anpp;
-anpq;
-anpr;
-anps;
-anpt;
-anpu;
-anpv;
-anpw;
-anpx;
-anpy;
-anpz;
-anqa;
-anqb;
-anqc;
-anqd;
-anqe;
-anqf;
-anqg;
-anqh;
-anqi;
-anqj;
-anqk;
-anql;
-anqm;
-anqn;
-anqo;
-anqp;
-anqq;
-anqr;
-anqs;
-anqt;
-anqu;
-anqv;
-anqw;
-anqx;
-anqy;
-anqz;
-anra;
-anrb;
-anrc;
-anrd;
-anre;
-anrf;
-anrg;
-anrh;
-anri;
-anrj;
-anrk;
-anrl;
-anrm;
-anrn;
-anro;
-anrp;
-anrq;
-anrr;
-anrs;
-anrt;
-anru;
-anrv;
-anrw;
-anrx;
-anry;
-anrz;
-ansa;
-ansb;
-ansc;
-ansd;
-anse;
-ansf;
-ansg;
-ansh;
-ansi;
-ansj;
-ansk;
-ansl;
-ansm;
-ansn;
-anso;
-ansp;
-ansq;
-ansr;
-anss;
-anst;
-ansu;
-ansv;
-answ;
-ansx;
-ansy;
-ansz;
-anta;
-antb;
-antc;
-antd;
-ante;
-antf;
-antg;
-anth;
-anti;
-antj;
-antk;
-antl;
-antm;
-antn;
-anto;
-antp;
-antq;
-antr;
-ants;
-antt;
-antu;
-antv;
-antw;
-antx;
-anty;
-antz;
-anua;
-anub;
-anuc;
-anud;
-anue;
-anuf;
-anug;
-anuh;
-anui;
-anuj;
-anuk;
-anul;
-anum;
-anun;
-anuo;
-anup;
-anuq;
-anur;
-anus;
-anut;
-anuu;
-anuv;
-anuw;
-anux;
-anuy;
-anuz;
-anva;
-anvb;
-anvc;
-anvd;
-anve;
-anvf;
-anvg;
-anvh;
-anvi;
-anvj;
-anvk;
-anvl;
-anvm;
-anvn;
-anvo;
-anvp;
-anvq;
-anvr;
-anvs;
-anvt;
-anvu;
-anvv;
-anvw;
-anvx;
-anvy;
-anvz;
-anwa;
-anwb;
-anwc;
-anwd;
-anwe;
-anwf;
-anwg;
-anwh;
-anwi;
-anwj;
-anwk;
-anwl;
-anwm;
-anwn;
-anwo;
-anwp;
-anwq;
-anwr;
-anws;
-anwt;
-anwu;
-anwv;
-anww;
-anwx;
-anwy;
-anwz;
-anxa;
-anxb;
-anxc;
-anxd;
-anxe;
-anxf;
-anxg;
-anxh;
-anxi;
-anxj;
-anxk;
-anxl;
-anxm;
-anxn;
-anxo;
-anxp;
-anxq;
-anxr;
-anxs;
-anxt;
-anxu;
-anxv;
-anxw;
-anxx;
-anxy;
-anxz;
-anya;
-anyb;
-anyc;
-anyd;
-anye;
-anyf;
-anyg;
-anyh;
-anyi;
-anyj;
-anyk;
-anyl;
-anym;
-anyn;
-anyo;
-anyp;
-anyq;
-anyr;
-anys;
-anyt;
-anyu;
-anyv;
-anyw;
-anyx;
-anyy;
-anyz;
-anza;
-anzb;
-anzc;
-anzd;
-anze;
-anzf;
-anzg;
-anzh;
-anzi;
-anzj;
-anzk;
-anzl;
-anzm;
-anzn;
-anzo;
-anzp;
-anzq;
-anzr;
-anzs;
-anzt;
-anzu;
-anzv;
-anzw;
-anzx;
-anzy;
-anzz;
-aoaa;
-aoab;
-aoac;
-aoad;
-aoae;
-aoaf;
-aoag;
-aoah;
-aoai;
-aoaj;
-aoak;
-aoal;
-aoam;
-aoan;
-aoao;
-aoap;
-aoaq;
-aoar;
-aoas;
-aoat;
-aoau;
-aoav;
-aoaw;
-aoax;
-aoay;
-aoaz;
-aoba;
-aobb;
-aobc;
-aobd;
-aobe;
-aobf;
-aobg;
-aobh;
-aobi;
-aobj;
-aobk;
-aobl;
-aobm;
-aobn;
-aobo;
-aobp;
-aobq;
-aobr;
-aobs;
-aobt;
-aobu;
-aobv;
-aobw;
-aobx;
-aoby;
-aobz;
-aoca;
-aocb;
-aocc;
-aocd;
-aoce;
-aocf;
-aocg;
-aoch;
-aoci;
-aocj;
-aock;
-aocl;
-aocm;
-aocn;
-aoco;
-aocp;
-aocq;
-aocr;
-aocs;
-aoct;
-aocu;
-aocv;
-aocw;
-aocx;
-aocy;
-aocz;
-aoda;
-aodb;
-aodc;
-aodd;
-aode;
-aodf;
-aodg;
-aodh;
-aodi;
-aodj;
-aodk;
-aodl;
-aodm;
-aodn;
-aodo;
-aodp;
-aodq;
-aodr;
-aods;
-aodt;
-aodu;
-aodv;
-aodw;
-aodx;
-aody;
-aodz;
-aoea;
-aoeb;
-aoec;
-aoed;
-aoee;
-aoef;
-aoeg;
-aoeh;
-aoei;
-aoej;
-aoek;
-aoel;
-aoem;
-aoen;
-aoeo;
-aoep;
-aoeq;
-aoer;
-aoes;
-aoet;
-aoeu;
-aoev;
-aoew;
-aoex;
-aoey;
-aoez;
-aofa;
-aofb;
-aofc;
-aofd;
-aofe;
-aoff;
-aofg;
-aofh;
-aofi;
-aofj;
-aofk;
-aofl;
-aofm;
-aofn;
-aofo;
-aofp;
-aofq;
-aofr;
-aofs;
-aoft;
-aofu;
-aofv;
-aofw;
-aofx;
-aofy;
-aofz;
-aoga;
-aogb;
-aogc;
-aogd;
-aoge;
-aogf;
-aogg;
-aogh;
-aogi;
-aogj;
-aogk;
-aogl;
-aogm;
-aogn;
-aogo;
-aogp;
-aogq;
-aogr;
-aogs;
-aogt;
-aogu;
-aogv;
-aogw;
-aogx;
-aogy;
-aogz;
-aoha;
-aohb;
-aohc;
-aohd;
-aohe;
-aohf;
-aohg;
-aohh;
-aohi;
-aohj;
-aohk;
-aohl;
-aohm;
-aohn;
-aoho;
-aohp;
-aohq;
-aohr;
-aohs;
-aoht;
-aohu;
-aohv;
-aohw;
-aohx;
-aohy;
-aohz;
-aoia;
-aoib;
-aoic;
-aoid;
-aoie;
-aoif;
-aoig;
-aoih;
-aoii;
-aoij;
-aoik;
-aoil;
-aoim;
-aoin;
-aoio;
-aoip;
-aoiq;
-aoir;
-aois;
-aoit;
-aoiu;
-aoiv;
-aoiw;
-aoix;
-aoiy;
-aoiz;
-aoja;
-aojb;
-aojc;
-aojd;
-aoje;
-aojf;
-aojg;
-aojh;
-aoji;
-aojj;
-aojk;
-aojl;
-aojm;
-aojn;
-aojo;
-aojp;
-aojq;
-aojr;
-aojs;
-aojt;
-aoju;
-aojv;
-aojw;
-aojx;
-aojy;
-aojz;
-aoka;
-aokb;
-aokc;
-aokd;
-aoke;
-aokf;
-aokg;
-aokh;
-aoki;
-aokj;
-aokk;
-aokl;
-aokm;
-aokn;
-aoko;
-aokp;
-aokq;
-aokr;
-aoks;
-aokt;
-aoku;
-aokv;
-aokw;
-aokx;
-aoky;
-aokz;
-aola;
-aolb;
-aolc;
-aold;
-aole;
-aolf;
-aolg;
-aolh;
-aoli;
-aolj;
-aolk;
-aoll;
-aolm;
-aoln;
-aolo;
-aolp;
-aolq;
-aolr;
-aols;
-aolt;
-aolu;
-aolv;
-aolw;
-aolx;
-aoly;
-aolz;
-aoma;
-aomb;
-aomc;
-aomd;
-aome;
-aomf;
-aomg;
-aomh;
-aomi;
-aomj;
-aomk;
-aoml;
-aomm;
-aomn;
-aomo;
-aomp;
-aomq;
-aomr;
-aoms;
-aomt;
-aomu;
-aomv;
-aomw;
-aomx;
-aomy;
-aomz;
-aona;
-aonb;
-aonc;
-aond;
-aone;
-aonf;
-aong;
-aonh;
-aoni;
-aonj;
-aonk;
-aonl;
-aonm;
-aonn;
-aono;
-aonp;
-aonq;
-aonr;
-aons;
-aont;
-aonu;
-aonv;
-aonw;
-aonx;
-aony;
-aonz;
-aooa;
-aoob;
-aooc;
-aood;
-aooe;
-aoof;
-aoog;
-aooh;
-aooi;
-aooj;
-aook;
-aool;
-aoom;
-aoon;
-aooo;
-aoop;
-aooq;
-aoor;
-aoos;
-aoot;
-aoou;
-aoov;
-aoow;
-aoox;
-aooy;
-aooz;
-aopa;
-aopb;
-aopc;
-aopd;
-aope;
-aopf;
-aopg;
-aoph;
-aopi;
-aopj;
-aopk;
-aopl;
-aopm;
-aopn;
-aopo;
-aopp;
-aopq;
-aopr;
-aops;
-aopt;
-aopu;
-aopv;
-aopw;
-aopx;
-aopy;
-aopz;
-aoqa;
-aoqb;
-aoqc;
-aoqd;
-aoqe;
-aoqf;
-aoqg;
-aoqh;
-aoqi;
-aoqj;
-aoqk;
-aoql;
-aoqm;
-aoqn;
-aoqo;
-aoqp;
-aoqq;
-aoqr;
-aoqs;
-aoqt;
-aoqu;
-aoqv;
-aoqw;
-aoqx;
-aoqy;
-aoqz;
-aora;
-aorb;
-aorc;
-aord;
-aore;
-aorf;
-aorg;
-aorh;
-aori;
-aorj;
-aork;
-aorl;
-aorm;
-aorn;
-aoro;
-aorp;
-aorq;
-aorr;
-aors;
-aort;
-aoru;
-aorv;
-aorw;
-aorx;
-aory;
-aorz;
-aosa;
-aosb;
-aosc;
-aosd;
-aose;
-aosf;
-aosg;
-aosh;
-aosi;
-aosj;
-aosk;
-aosl;
-aosm;
-aosn;
-aoso;
-aosp;
-aosq;
-aosr;
-aoss;
-aost;
-aosu;
-aosv;
-aosw;
-aosx;
-aosy;
-aosz;
-aota;
-aotb;
-aotc;
-aotd;
-aote;
-aotf;
-aotg;
-aoth;
-aoti;
-aotj;
-aotk;
-aotl;
-aotm;
-aotn;
-aoto;
-aotp;
-aotq;
-aotr;
-aots;
-aott;
-aotu;
-aotv;
-aotw;
-aotx;
-aoty;
-aotz;
-aoua;
-aoub;
-aouc;
-aoud;
-aoue;
-aouf;
-aoug;
-aouh;
-aoui;
-aouj;
-aouk;
-aoul;
-aoum;
-aoun;
-aouo;
-aoup;
-aouq;
-aour;
-aous;
-aout;
-aouu;
-aouv;
-aouw;
-aoux;
-aouy;
-aouz;
-aova;
-aovb;
-aovc;
-aovd;
-aove;
-aovf;
-aovg;
-aovh;
-aovi;
-aovj;
-aovk;
-aovl;
-aovm;
-aovn;
-aovo;
-aovp;
-aovq;
-aovr;
-aovs;
-aovt;
-aovu;
-aovv;
-aovw;
-aovx;
-aovy;
-aovz;
-aowa;
-aowb;
-aowc;
-aowd;
-aowe;
-aowf;
-aowg;
-aowh;
-aowi;
-aowj;
-aowk;
-aowl;
-aowm;
-aown;
-aowo;
-aowp;
-aowq;
-aowr;
-aows;
-aowt;
-aowu;
-aowv;
-aoww;
-aowx;
-aowy;
-aowz;
-aoxa;
-aoxb;
-aoxc;
-aoxd;
-aoxe;
-aoxf;
-aoxg;
-aoxh;
-aoxi;
-aoxj;
-aoxk;
-aoxl;
-aoxm;
-aoxn;
-aoxo;
-aoxp;
-aoxq;
-aoxr;
-aoxs;
-aoxt;
-aoxu;
-aoxv;
-aoxw;
-aoxx;
-aoxy;
-aoxz;
-aoya;
-aoyb;
-aoyc;
-aoyd;
-aoye;
-aoyf;
-aoyg;
-aoyh;
-aoyi;
-aoyj;
-aoyk;
-aoyl;
-aoym;
-aoyn;
-aoyo;
-aoyp;
-aoyq;
-aoyr;
-aoys;
-aoyt;
-aoyu;
-aoyv;
-aoyw;
-aoyx;
-aoyy;
-aoyz;
-aoza;
-aozb;
-aozc;
-aozd;
-aoze;
-aozf;
-aozg;
-aozh;
-aozi;
-aozj;
-aozk;
-aozl;
-aozm;
-aozn;
-aozo;
-aozp;
-aozq;
-aozr;
-aozs;
-aozt;
-aozu;
-aozv;
-aozw;
-aozx;
-aozy;
-aozz;
-apaa;
-apab;
-apac;
-apad;
-apae;
-apaf;
-apag;
-apah;
-apai;
-apaj;
-apak;
-apal;
-apam;
-apan;
-apao;
-apap;
-apaq;
-apar;
-apas;
-apat;
-apau;
-apav;
-apaw;
-apax;
-apay;
-apaz;
-apba;
-apbb;
-apbc;
-apbd;
-apbe;
-apbf;
-apbg;
-apbh;
-apbi;
-apbj;
-apbk;
-apbl;
-apbm;
-apbn;
-apbo;
-apbp;
-apbq;
-apbr;
-apbs;
-apbt;
-apbu;
-apbv;
-apbw;
-apbx;
-apby;
-apbz;
-apca;
-apcb;
-apcc;
-apcd;
-apce;
-apcf;
-apcg;
-apch;
-apci;
-apcj;
-apck;
-apcl;
-apcm;
-apcn;
-apco;
-apcp;
-apcq;
-apcr;
-apcs;
-apct;
-apcu;
-apcv;
-apcw;
-apcx;
-apcy;
-apcz;
-apda;
-apdb;
-apdc;
-apdd;
-apde;
-apdf;
-apdg;
-apdh;
-apdi;
-apdj;
-apdk;
-apdl;
-apdm;
-apdn;
-apdo;
-apdp;
-apdq;
-apdr;
-apds;
-apdt;
-apdu;
-apdv;
-apdw;
-apdx;
-apdy;
-apdz;
-apea;
-apeb;
-apec;
-aped;
-apee;
-apef;
-apeg;
-apeh;
-apei;
-apej;
-apek;
-apel;
-apem;
-apen;
-apeo;
-apep;
-apeq;
-aper;
-apes;
-apet;
-apeu;
-apev;
-apew;
-apex;
-apey;
-apez;
-apfa;
-apfb;
-apfc;
-apfd;
-apfe;
-apff;
-apfg;
-apfh;
-apfi;
-apfj;
-apfk;
-apfl;
-apfm;
-apfn;
-apfo;
-apfp;
-apfq;
-apfr;
-apfs;
-apft;
-apfu;
-apfv;
-apfw;
-apfx;
-apfy;
-apfz;
-apga;
-apgb;
-apgc;
-apgd;
-apge;
-apgf;
-apgg;
-apgh;
-apgi;
-apgj;
-apgk;
-apgl;
-apgm;
-apgn;
-apgo;
-apgp;
-apgq;
-apgr;
-apgs;
-apgt;
-apgu;
-apgv;
-apgw;
-apgx;
-apgy;
-apgz;
-apha;
-aphb;
-aphc;
-aphd;
-aphe;
-aphf;
-aphg;
-aphh;
-aphi;
-aphj;
-aphk;
-aphl;
-aphm;
-aphn;
-apho;
-aphp;
-aphq;
-aphr;
-aphs;
-apht;
-aphu;
-aphv;
-aphw;
-aphx;
-aphy;
-aphz;
-apia;
-apib;
-apic;
-apid;
-apie;
-apif;
-apig;
-apih;
-apii;
-apij;
-apik;
-apil;
-apim;
-apin;
-apio;
-apip;
-apiq;
-apir;
-apis;
-apit;
-apiu;
-apiv;
-apiw;
-apix;
-apiy;
-apiz;
-apja;
-apjb;
-apjc;
-apjd;
-apje;
-apjf;
-apjg;
-apjh;
-apji;
-apjj;
-apjk;
-apjl;
-apjm;
-apjn;
-apjo;
-apjp;
-apjq;
-apjr;
-apjs;
-apjt;
-apju;
-apjv;
-apjw;
-apjx;
-apjy;
-apjz;
-apka;
-apkb;
-apkc;
-apkd;
-apke;
-apkf;
-apkg;
-apkh;
-apki;
-apkj;
-apkk;
-apkl;
-apkm;
-apkn;
-apko;
-apkp;
-apkq;
-apkr;
-apks;
-apkt;
-apku;
-apkv;
-apkw;
-apkx;
-apky;
-apkz;
-apla;
-aplb;
-aplc;
-apld;
-aple;
-aplf;
-aplg;
-aplh;
-apli;
-aplj;
-aplk;
-apll;
-aplm;
-apln;
-aplo;
-aplp;
-aplq;
-aplr;
-apls;
-aplt;
-aplu;
-aplv;
-aplw;
-aplx;
-aply;
-aplz;
-apma;
-apmb;
-apmc;
-apmd;
-apme;
-apmf;
-apmg;
-apmh;
-apmi;
-apmj;
-apmk;
-apml;
-apmm;
-apmn;
-apmo;
-apmp;
-apmq;
-apmr;
-apms;
-apmt;
-apmu;
-apmv;
-apmw;
-apmx;
-apmy;
-apmz;
-apna;
-apnb;
-apnc;
-apnd;
-apne;
-apnf;
-apng;
-apnh;
-apni;
-apnj;
-apnk;
-apnl;
-apnm;
-apnn;
-apno;
-apnp;
-apnq;
-apnr;
-apns;
-apnt;
-apnu;
-apnv;
-apnw;
-apnx;
-apny;
-apnz;
-apoa;
-apob;
-apoc;
-apod;
-apoe;
-apof;
-apog;
-apoh;
-apoi;
-apoj;
-apok;
-apol;
-apom;
-apon;
-apoo;
-apop;
-apoq;
-apor;
-apos;
-apot;
-apou;
-apov;
-apow;
-apox;
-apoy;
-apoz;
-appa;
-appb;
-appc;
-appd;
-appe;
-appf;
-appg;
-apph;
-appi;
-appj;
-appk;
-appl;
-appm;
-appn;
-appo;
-appp;
-appq;
-appr;
-apps;
-appt;
-appu;
-appv;
-appw;
-appx;
-appy;
-appz;
-apqa;
-apqb;
-apqc;
-apqd;
-apqe;
-apqf;
-apqg;
-apqh;
-apqi;
-apqj;
-apqk;
-apql;
-apqm;
-apqn;
-apqo;
-apqp;
-apqq;
-apqr;
-apqs;
-apqt;
-apqu;
-apqv;
-apqw;
-apqx;
-apqy;
-apqz;
-apra;
-aprb;
-aprc;
-aprd;
-apre;
-aprf;
-aprg;
-aprh;
-apri;
-aprj;
-aprk;
-aprl;
-aprm;
-aprn;
-apro;
-aprp;
-aprq;
-aprr;
-aprs;
-aprt;
-apru;
-aprv;
-aprw;
-aprx;
-apry;
-aprz;
-apsa;
-apsb;
-apsc;
-apsd;
-apse;
-apsf;
-apsg;
-apsh;
-apsi;
-apsj;
-apsk;
-apsl;
-apsm;
-apsn;
-apso;
-apsp;
-apsq;
-apsr;
-apss;
-apst;
-apsu;
-apsv;
-apsw;
-apsx;
-apsy;
-apsz;
-apta;
-aptb;
-aptc;
-aptd;
-apte;
-aptf;
-aptg;
-apth;
-apti;
-aptj;
-aptk;
-aptl;
-aptm;
-aptn;
-apto;
-aptp;
-aptq;
-aptr;
-apts;
-aptt;
-aptu;
-aptv;
-aptw;
-aptx;
-apty;
-aptz;
-apua;
-apub;
-apuc;
-apud;
-apue;
-apuf;
-apug;
-apuh;
-apui;
-apuj;
-apuk;
-apul;
-apum;
-apun;
-apuo;
-apup;
-apuq;
-apur;
-apus;
-aput;
-apuu;
-apuv;
-apuw;
-apux;
-apuy;
-apuz;
-apva;
-apvb;
-apvc;
-apvd;
-apve;
-apvf;
-apvg;
-apvh;
-apvi;
-apvj;
-apvk;
-apvl;
-apvm;
-apvn;
-apvo;
-apvp;
-apvq;
-apvr;
-apvs;
-apvt;
-apvu;
-apvv;
-apvw;
-apvx;
-apvy;
-apvz;
-apwa;
-apwb;
-apwc;
-apwd;
-apwe;
-apwf;
-apwg;
-apwh;
-apwi;
-apwj;
-apwk;
-apwl;
-apwm;
-apwn;
-apwo;
-apwp;
-apwq;
-apwr;
-apws;
-apwt;
-apwu;
-apwv;
-apww;
-apwx;
-apwy;
-apwz;
-apxa;
-apxb;
-apxc;
-apxd;
-apxe;
-apxf;
-apxg;
-apxh;
-apxi;
-apxj;
-apxk;
-apxl;
-apxm;
-apxn;
-apxo;
-apxp;
-apxq;
-apxr;
-apxs;
-apxt;
-apxu;
-apxv;
-apxw;
-apxx;
-apxy;
-apxz;
-apya;
-apyb;
-apyc;
-apyd;
-apye;
-apyf;
-apyg;
-apyh;
-apyi;
-apyj;
-apyk;
-apyl;
-apym;
-apyn;
-apyo;
-apyp;
-apyq;
-apyr;
-apys;
-apyt;
-apyu;
-apyv;
-apyw;
-apyx;
-apyy;
-apyz;
-apza;
-apzb;
-apzc;
-apzd;
-apze;
-apzf;
-apzg;
-apzh;
-apzi;
-apzj;
-apzk;
-apzl;
-apzm;
-apzn;
-apzo;
-apzp;
-apzq;
-apzr;
-apzs;
-apzt;
-apzu;
-apzv;
-apzw;
-apzx;
-apzy;
-apzz;
-aqaa;
-aqab;
-aqac;
-aqad;
-aqae;
-aqaf;
-aqag;
-aqah;
-aqai;
-aqaj;
-aqak;
-aqal;
-aqam;
-aqan;
-aqao;
-aqap;
-aqaq;
-aqar;
-aqas;
-aqat;
-aqau;
-aqav;
-aqaw;
-aqax;
-aqay;
-aqaz;
-aqba;
-aqbb;
-aqbc;
-aqbd;
-aqbe;
-aqbf;
-aqbg;
-aqbh;
-aqbi;
-aqbj;
-aqbk;
-aqbl;
-aqbm;
-aqbn;
-aqbo;
-aqbp;
-aqbq;
-aqbr;
-aqbs;
-aqbt;
-aqbu;
-aqbv;
-aqbw;
-aqbx;
-aqby;
-aqbz;
-aqca;
-aqcb;
-aqcc;
-aqcd;
-aqce;
-aqcf;
-aqcg;
-aqch;
-aqci;
-aqcj;
-aqck;
-aqcl;
-aqcm;
-aqcn;
-aqco;
-aqcp;
-aqcq;
-aqcr;
-aqcs;
-aqct;
-aqcu;
-aqcv;
-aqcw;
-aqcx;
-aqcy;
-aqcz;
-aqda;
-aqdb;
-aqdc;
-aqdd;
-aqde;
-aqdf;
-aqdg;
-aqdh;
-aqdi;
-aqdj;
-aqdk;
-aqdl;
-aqdm;
-aqdn;
-aqdo;
-aqdp;
-aqdq;
-aqdr;
-aqds;
-aqdt;
-aqdu;
-aqdv;
-aqdw;
-aqdx;
-aqdy;
-aqdz;
-aqea;
-aqeb;
-aqec;
-aqed;
-aqee;
-aqef;
-aqeg;
-aqeh;
-aqei;
-aqej;
-aqek;
-aqel;
-aqem;
-aqen;
-aqeo;
-aqep;
-aqeq;
-aqer;
-aqes;
-aqet;
-aqeu;
-aqev;
-aqew;
-aqex;
-aqey;
-aqez;
-aqfa;
-aqfb;
-aqfc;
-aqfd;
-aqfe;
-aqff;
-aqfg;
-aqfh;
-aqfi;
-aqfj;
-aqfk;
-aqfl;
-aqfm;
-aqfn;
-aqfo;
-aqfp;
-aqfq;
-aqfr;
-aqfs;
-aqft;
-aqfu;
-aqfv;
-aqfw;
-aqfx;
-aqfy;
-aqfz;
-aqga;
-aqgb;
-aqgc;
-aqgd;
-aqge;
-aqgf;
-aqgg;
-aqgh;
-aqgi;
-aqgj;
-aqgk;
-aqgl;
-aqgm;
-aqgn;
-aqgo;
-aqgp;
-aqgq;
-aqgr;
-aqgs;
-aqgt;
-aqgu;
-aqgv;
-aqgw;
-aqgx;
-aqgy;
-aqgz;
-aqha;
-aqhb;
-aqhc;
-aqhd;
-aqhe;
-aqhf;
-aqhg;
-aqhh;
-aqhi;
-aqhj;
-aqhk;
-aqhl;
-aqhm;
-aqhn;
-aqho;
-aqhp;
-aqhq;
-aqhr;
-aqhs;
-aqht;
-aqhu;
-aqhv;
-aqhw;
-aqhx;
-aqhy;
-aqhz;
-aqia;
-aqib;
-aqic;
-aqid;
-aqie;
-aqif;
-aqig;
-aqih;
-aqii;
-aqij;
-aqik;
-aqil;
-aqim;
-aqin;
-aqio;
-aqip;
-aqiq;
-aqir;
-aqis;
-aqit;
-aqiu;
-aqiv;
-aqiw;
-aqix;
-aqiy;
-aqiz;
-aqja;
-aqjb;
-aqjc;
-aqjd;
-aqje;
-aqjf;
-aqjg;
-aqjh;
-aqji;
-aqjj;
-aqjk;
-aqjl;
-aqjm;
-aqjn;
-aqjo;
-aqjp;
-aqjq;
-aqjr;
-aqjs;
-aqjt;
-aqju;
-aqjv;
-aqjw;
-aqjx;
-aqjy;
-aqjz;
-aqka;
-aqkb;
-aqkc;
-aqkd;
-aqke;
-aqkf;
-aqkg;
-aqkh;
-aqki;
-aqkj;
-aqkk;
-aqkl;
-aqkm;
-aqkn;
-aqko;
-aqkp;
-aqkq;
-aqkr;
-aqks;
-aqkt;
-aqku;
-aqkv;
-aqkw;
-aqkx;
-aqky;
-aqkz;
-aqla;
-aqlb;
-aqlc;
-aqld;
-aqle;
-aqlf;
-aqlg;
-aqlh;
-aqli;
-aqlj;
-aqlk;
-aqll;
-aqlm;
-aqln;
-aqlo;
-aqlp;
-aqlq;
-aqlr;
-aqls;
-aqlt;
-aqlu;
-aqlv;
-aqlw;
-aqlx;
-aqly;
-aqlz;
-aqma;
-aqmb;
-aqmc;
-aqmd;
-aqme;
-aqmf;
-aqmg;
-aqmh;
-aqmi;
-aqmj;
-aqmk;
-aqml;
-aqmm;
-aqmn;
-aqmo;
-aqmp;
-aqmq;
-aqmr;
-aqms;
-aqmt;
-aqmu;
-aqmv;
-aqmw;
-aqmx;
-aqmy;
-aqmz;
-aqna;
-aqnb;
-aqnc;
-aqnd;
-aqne;
-aqnf;
-aqng;
-aqnh;
-aqni;
-aqnj;
-aqnk;
-aqnl;
-aqnm;
-aqnn;
-aqno;
-aqnp;
-aqnq;
-aqnr;
-aqns;
-aqnt;
-aqnu;
-aqnv;
-aqnw;
-aqnx;
-aqny;
-aqnz;
-aqoa;
-aqob;
-aqoc;
-aqod;
-aqoe;
-aqof;
-aqog;
-aqoh;
-aqoi;
-aqoj;
-aqok;
-aqol;
-aqom;
-aqon;
-aqoo;
-aqop;
-aqoq;
-aqor;
-aqos;
-aqot;
-aqou;
-aqov;
-aqow;
-aqox;
-aqoy;
-aqoz;
-aqpa;
-aqpb;
-aqpc;
-aqpd;
-aqpe;
-aqpf;
-aqpg;
-aqph;
-aqpi;
-aqpj;
-aqpk;
-aqpl;
-aqpm;
-aqpn;
-aqpo;
-aqpp;
-aqpq;
-aqpr;
-aqps;
-aqpt;
-aqpu;
-aqpv;
-aqpw;
-aqpx;
-aqpy;
-aqpz;
-aqqa;
-aqqb;
-aqqc;
-aqqd;
-aqqe;
-aqqf;
-aqqg;
-aqqh;
-aqqi;
-aqqj;
-aqqk;
-aqql;
-aqqm;
-aqqn;
-aqqo;
-aqqp;
-aqqq;
-aqqr;
-aqqs;
-aqqt;
-aqqu;
-aqqv;
-aqqw;
-aqqx;
-aqqy;
-aqqz;
-aqra;
-aqrb;
-aqrc;
-aqrd;
-aqre;
-aqrf;
-aqrg;
-aqrh;
-aqri;
-aqrj;
-aqrk;
-aqrl;
-aqrm;
-aqrn;
-aqro;
-aqrp;
-aqrq;
-aqrr;
-aqrs;
-aqrt;
-aqru;
-aqrv;
-aqrw;
-aqrx;
-aqry;
-aqrz;
-aqsa;
-aqsb;
-aqsc;
-aqsd;
-aqse;
-aqsf;
-aqsg;
-aqsh;
-aqsi;
-aqsj;
-aqsk;
-aqsl;
-aqsm;
-aqsn;
-aqso;
-aqsp;
-aqsq;
-aqsr;
-aqss;
-aqst;
-aqsu;
-aqsv;
-aqsw;
-aqsx;
-aqsy;
-aqsz;
-aqta;
-aqtb;
-aqtc;
-aqtd;
-aqte;
-aqtf;
-aqtg;
-aqth;
-aqti;
-aqtj;
-aqtk;
-aqtl;
-aqtm;
-aqtn;
-aqto;
-aqtp;
-aqtq;
-aqtr;
-aqts;
-aqtt;
-aqtu;
-aqtv;
-aqtw;
-aqtx;
-aqty;
-aqtz;
-aqua;
-aqub;
-aquc;
-aqud;
-aque;
-aquf;
-aqug;
-aquh;
-aqui;
-aquj;
-aquk;
-aqul;
-aqum;
-aqun;
-aquo;
-aqup;
-aquq;
-aqur;
-aqus;
-aqut;
-aquu;
-aquv;
-aquw;
-aqux;
-aquy;
-aquz;
-aqva;
-aqvb;
-aqvc;
-aqvd;
-aqve;
-aqvf;
-aqvg;
-aqvh;
-aqvi;
-aqvj;
-aqvk;
-aqvl;
-aqvm;
-aqvn;
-aqvo;
-aqvp;
-aqvq;
-aqvr;
-aqvs;
-aqvt;
-aqvu;
-aqvv;
-aqvw;
-aqvx;
-aqvy;
-aqvz;
-aqwa;
-aqwb;
-aqwc;
-aqwd;
-aqwe;
-aqwf;
-aqwg;
-aqwh;
-aqwi;
-aqwj;
-aqwk;
-aqwl;
-aqwm;
-aqwn;
-aqwo;
-aqwp;
-aqwq;
-aqwr;
-aqws;
-aqwt;
-aqwu;
-aqwv;
-aqww;
-aqwx;
-aqwy;
-aqwz;
-aqxa;
-aqxb;
-aqxc;
-aqxd;
-aqxe;
-aqxf;
-aqxg;
-aqxh;
-aqxi;
-aqxj;
-aqxk;
-aqxl;
-aqxm;
-aqxn;
-aqxo;
-aqxp;
-aqxq;
-aqxr;
-aqxs;
-aqxt;
-aqxu;
-aqxv;
-aqxw;
-aqxx;
-aqxy;
-aqxz;
-aqya;
-aqyb;
-aqyc;
-aqyd;
-aqye;
-aqyf;
-aqyg;
-aqyh;
-aqyi;
-aqyj;
-aqyk;
-aqyl;
-aqym;
-aqyn;
-aqyo;
-aqyp;
-aqyq;
-aqyr;
-aqys;
-aqyt;
-aqyu;
-aqyv;
-aqyw;
-aqyx;
-aqyy;
-aqyz;
-aqza;
-aqzb;
-aqzc;
-aqzd;
-aqze;
-aqzf;
-aqzg;
-aqzh;
-aqzi;
-aqzj;
-aqzk;
-aqzl;
-aqzm;
-aqzn;
-aqzo;
-aqzp;
-aqzq;
-aqzr;
-aqzs;
-aqzt;
-aqzu;
-aqzv;
-aqzw;
-aqzx;
-aqzy;
-aqzz;
-araa;
-arab;
-arac;
-arad;
-arae;
-araf;
-arag;
-arah;
-arai;
-araj;
-arak;
-aral;
-aram;
-aran;
-arao;
-arap;
-araq;
-arar;
-aras;
-arat;
-arau;
-arav;
-araw;
-arax;
-aray;
-araz;
-arba;
-arbb;
-arbc;
-arbd;
-arbe;
-arbf;
-arbg;
-arbh;
-arbi;
-arbj;
-arbk;
-arbl;
-arbm;
-arbn;
-arbo;
-arbp;
-arbq;
-arbr;
-arbs;
-arbt;
-arbu;
-arbv;
-arbw;
-arbx;
-arby;
-arbz;
-arca;
-arcb;
-arcc;
-arcd;
-arce;
-arcf;
-arcg;
-arch;
-arci;
-arcj;
-arck;
-arcl;
-arcm;
-arcn;
-arco;
-arcp;
-arcq;
-arcr;
-arcs;
-arct;
-arcu;
-arcv;
-arcw;
-arcx;
-arcy;
-arcz;
-arda;
-ardb;
-ardc;
-ardd;
-arde;
-ardf;
-ardg;
-ardh;
-ardi;
-ardj;
-ardk;
-ardl;
-ardm;
-ardn;
-ardo;
-ardp;
-ardq;
-ardr;
-ards;
-ardt;
-ardu;
-ardv;
-ardw;
-ardx;
-ardy;
-ardz;
-area;
-areb;
-arec;
-ared;
-aree;
-aref;
-areg;
-areh;
-arei;
-arej;
-arek;
-arel;
-arem;
-aren;
-areo;
-arep;
-areq;
-arer;
-ares;
-aret;
-areu;
-arev;
-arew;
-arex;
-arey;
-arez;
-arfa;
-arfb;
-arfc;
-arfd;
-arfe;
-arff;
-arfg;
-arfh;
-arfi;
-arfj;
-arfk;
-arfl;
-arfm;
-arfn;
-arfo;
-arfp;
-arfq;
-arfr;
-arfs;
-arft;
-arfu;
-arfv;
-arfw;
-arfx;
-arfy;
-arfz;
-arga;
-argb;
-argc;
-argd;
-arge;
-argf;
-argg;
-argh;
-argi;
-argj;
-argk;
-argl;
-argm;
-argn;
-argo;
-argp;
-argq;
-argr;
-args;
-argt;
-argu;
-argv;
-argw;
-argx;
-argy;
-argz;
-arha;
-arhb;
-arhc;
-arhd;
-arhe;
-arhf;
-arhg;
-arhh;
-arhi;
-arhj;
-arhk;
-arhl;
-arhm;
-arhn;
-arho;
-arhp;
-arhq;
-arhr;
-arhs;
-arht;
-arhu;
-arhv;
-arhw;
-arhx;
-arhy;
-arhz;
-aria;
-arib;
-aric;
-arid;
-arie;
-arif;
-arig;
-arih;
-arii;
-arij;
-arik;
-aril;
-arim;
-arin;
-ario;
-arip;
-ariq;
-arir;
-aris;
-arit;
-ariu;
-ariv;
-ariw;
-arix;
-ariy;
-ariz;
-arja;
-arjb;
-arjc;
-arjd;
-arje;
-arjf;
-arjg;
-arjh;
-arji;
-arjj;
-arjk;
-arjl;
-arjm;
-arjn;
-arjo;
-arjp;
-arjq;
-arjr;
-arjs;
-arjt;
-arju;
-arjv;
-arjw;
-arjx;
-arjy;
-arjz;
-arka;
-arkb;
-arkc;
-arkd;
-arke;
-arkf;
-arkg;
-arkh;
-arki;
-arkj;
-arkk;
-arkl;
-arkm;
-arkn;
-arko;
-arkp;
-arkq;
-arkr;
-arks;
-arkt;
-arku;
-arkv;
-arkw;
-arkx;
-arky;
-arkz;
-arla;
-arlb;
-arlc;
-arld;
-arle;
-arlf;
-arlg;
-arlh;
-arli;
-arlj;
-arlk;
-arll;
-arlm;
-arln;
-arlo;
-arlp;
-arlq;
-arlr;
-arls;
-arlt;
-arlu;
-arlv;
-arlw;
-arlx;
-arly;
-arlz;
-arma;
-armb;
-armc;
-armd;
-arme;
-armf;
-armg;
-armh;
-armi;
-armj;
-armk;
-arml;
-armm;
-armn;
-armo;
-armp;
-armq;
-armr;
-arms;
-armt;
-armu;
-armv;
-armw;
-armx;
-army;
-armz;
-arna;
-arnb;
-arnc;
-arnd;
-arne;
-arnf;
-arng;
-arnh;
-arni;
-arnj;
-arnk;
-arnl;
-arnm;
-arnn;
-arno;
-arnp;
-arnq;
-arnr;
-arns;
-arnt;
-arnu;
-arnv;
-arnw;
-arnx;
-arny;
-arnz;
-aroa;
-arob;
-aroc;
-arod;
-aroe;
-arof;
-arog;
-aroh;
-aroi;
-aroj;
-arok;
-arol;
-arom;
-aron;
-aroo;
-arop;
-aroq;
-aror;
-aros;
-arot;
-arou;
-arov;
-arow;
-arox;
-aroy;
-aroz;
-arpa;
-arpb;
-arpc;
-arpd;
-arpe;
-arpf;
-arpg;
-arph;
-arpi;
-arpj;
-arpk;
-arpl;
-arpm;
-arpn;
-arpo;
-arpp;
-arpq;
-arpr;
-arps;
-arpt;
-arpu;
-arpv;
-arpw;
-arpx;
-arpy;
-arpz;
-arqa;
-arqb;
-arqc;
-arqd;
-arqe;
-arqf;
-arqg;
-arqh;
-arqi;
-arqj;
-arqk;
-arql;
-arqm;
-arqn;
-arqo;
-arqp;
-arqq;
-arqr;
-arqs;
-arqt;
-arqu;
-arqv;
-arqw;
-arqx;
-arqy;
-arqz;
-arra;
-arrb;
-arrc;
-arrd;
-arre;
-arrf;
-arrg;
-arrh;
-arri;
-arrj;
-arrk;
-arrl;
-arrm;
-arrn;
-arro;
-arrp;
-arrq;
-arrr;
-arrs;
-arrt;
-arru;
-arrv;
-arrw;
-arrx;
-arry;
-arrz;
-arsa;
-arsb;
-arsc;
-arsd;
-arse;
-arsf;
-arsg;
-arsh;
-arsi;
-arsj;
-arsk;
-arsl;
-arsm;
-arsn;
-arso;
-arsp;
-arsq;
-arsr;
-arss;
-arst;
-arsu;
-arsv;
-arsw;
-arsx;
-arsy;
-arsz;
-arta;
-artb;
-artc;
-artd;
-arte;
-artf;
-artg;
-arth;
-arti;
-artj;
-artk;
-artl;
-artm;
-artn;
-arto;
-artp;
-artq;
-artr;
-arts;
-artt;
-artu;
-artv;
-artw;
-artx;
-arty;
-artz;
-arua;
-arub;
-aruc;
-arud;
-arue;
-aruf;
-arug;
-aruh;
-arui;
-aruj;
-aruk;
-arul;
-arum;
-arun;
-aruo;
-arup;
-aruq;
-arur;
-arus;
-arut;
-aruu;
-aruv;
-aruw;
-arux;
-aruy;
-aruz;
-arva;
-arvb;
-arvc;
-arvd;
-arve;
-arvf;
-arvg;
-arvh;
-arvi;
-arvj;
-arvk;
-arvl;
-arvm;
-arvn;
-arvo;
-arvp;
-arvq;
-arvr;
-arvs;
-arvt;
-arvu;
-arvv;
-arvw;
-arvx;
-arvy;
-arvz;
-arwa;
-arwb;
-arwc;
-arwd;
-arwe;
-arwf;
-arwg;
-arwh;
-arwi;
-arwj;
-arwk;
-arwl;
-arwm;
-arwn;
-arwo;
-arwp;
-arwq;
-arwr;
-arws;
-arwt;
-arwu;
-arwv;
-arww;
-arwx;
-arwy;
-arwz;
-arxa;
-arxb;
-arxc;
-arxd;
-arxe;
-arxf;
-arxg;
-arxh;
-arxi;
-arxj;
-arxk;
-arxl;
-arxm;
-arxn;
-arxo;
-arxp;
-arxq;
-arxr;
-arxs;
-arxt;
-arxu;
-arxv;
-arxw;
-arxx;
-arxy;
-arxz;
-arya;
-aryb;
-aryc;
-aryd;
-arye;
-aryf;
-aryg;
-aryh;
-aryi;
-aryj;
-aryk;
-aryl;
-arym;
-aryn;
-aryo;
-aryp;
-aryq;
-aryr;
-arys;
-aryt;
-aryu;
-aryv;
-aryw;
-aryx;
-aryy;
-aryz;
-arza;
-arzb;
-arzc;
-arzd;
-arze;
-arzf;
-arzg;
-arzh;
-arzi;
-arzj;
-arzk;
-arzl;
-arzm;
-arzn;
-arzo;
-arzp;
-arzq;
-arzr;
-arzs;
-arzt;
-arzu;
-arzv;
-arzw;
-arzx;
-arzy;
-arzz;
-asaa;
-asab;
-asac;
-asad;
-asae;
-asaf;
-asag;
-asah;
-asai;
-asaj;
-asak;
-asal;
-asam;
-asan;
-asao;
-asap;
-asaq;
-asar;
-asas;
-asat;
-asau;
-asav;
-asaw;
-asax;
-asay;
-asaz;
-asba;
-asbb;
-asbc;
-asbd;
-asbe;
-asbf;
-asbg;
-asbh;
-asbi;
-asbj;
-asbk;
-asbl;
-asbm;
-asbn;
-asbo;
-asbp;
-asbq;
-asbr;
-asbs;
-asbt;
-asbu;
-asbv;
-asbw;
-asbx;
-asby;
-asbz;
-asca;
-ascb;
-ascc;
-ascd;
-asce;
-ascf;
-ascg;
-asch;
-asci;
-ascj;
-asck;
-ascl;
-ascm;
-ascn;
-asco;
-ascp;
-ascq;
-ascr;
-ascs;
-asct;
-ascu;
-ascv;
-ascw;
-ascx;
-ascy;
-ascz;
-asda;
-asdb;
-asdc;
-asdd;
-asde;
-asdf;
-asdg;
-asdh;
-asdi;
-asdj;
-asdk;
-asdl;
-asdm;
-asdn;
-asdo;
-asdp;
-asdq;
-asdr;
-asds;
-asdt;
-asdu;
-asdv;
-asdw;
-asdx;
-asdy;
-asdz;
-asea;
-aseb;
-asec;
-ased;
-asee;
-asef;
-aseg;
-aseh;
-asei;
-asej;
-asek;
-asel;
-asem;
-asen;
-aseo;
-asep;
-aseq;
-aser;
-ases;
-aset;
-aseu;
-asev;
-asew;
-asex;
-asey;
-asez;
-asfa;
-asfb;
-asfc;
-asfd;
-asfe;
-asff;
-asfg;
-asfh;
-asfi;
-asfj;
-asfk;
-asfl;
-asfm;
-asfn;
-asfo;
-asfp;
-asfq;
-asfr;
-asfs;
-asft;
-asfu;
-asfv;
-asfw;
-asfx;
-asfy;
-asfz;
-asga;
-asgb;
-asgc;
-asgd;
-asge;
-asgf;
-asgg;
-asgh;
-asgi;
-asgj;
-asgk;
-asgl;
-asgm;
-asgn;
-asgo;
-asgp;
-asgq;
-asgr;
-asgs;
-asgt;
-asgu;
-asgv;
-asgw;
-asgx;
-asgy;
-asgz;
-asha;
-ashb;
-ashc;
-ashd;
-ashe;
-ashf;
-ashg;
-ashh;
-ashi;
-ashj;
-ashk;
-ashl;
-ashm;
-ashn;
-asho;
-ashp;
-ashq;
-ashr;
-ashs;
-asht;
-ashu;
-ashv;
-ashw;
-ashx;
-ashy;
-ashz;
-asia;
-asib;
-asic;
-asid;
-asie;
-asif;
-asig;
-asih;
-asii;
-asij;
-asik;
-asil;
-asim;
-asin;
-asio;
-asip;
-asiq;
-asir;
-asis;
-asit;
-asiu;
-asiv;
-asiw;
-asix;
-asiy;
-asiz;
-asja;
-asjb;
-asjc;
-asjd;
-asje;
-asjf;
-asjg;
-asjh;
-asji;
-asjj;
-asjk;
-asjl;
-asjm;
-asjn;
-asjo;
-asjp;
-asjq;
-asjr;
-asjs;
-asjt;
-asju;
-asjv;
-asjw;
-asjx;
-asjy;
-asjz;
-aska;
-askb;
-askc;
-askd;
-aske;
-askf;
-askg;
-askh;
-aski;
-askj;
-askk;
-askl;
-askm;
-askn;
-asko;
-askp;
-askq;
-askr;
-asks;
-askt;
-asku;
-askv;
-askw;
-askx;
-asky;
-askz;
-asla;
-aslb;
-aslc;
-asld;
-asle;
-aslf;
-aslg;
-aslh;
-asli;
-aslj;
-aslk;
-asll;
-aslm;
-asln;
-aslo;
-aslp;
-aslq;
-aslr;
-asls;
-aslt;
-aslu;
-aslv;
-aslw;
-aslx;
-asly;
-aslz;
-asma;
-asmb;
-asmc;
-asmd;
-asme;
-asmf;
-asmg;
-asmh;
-asmi;
-asmj;
-asmk;
-asml;
-asmm;
-asmn;
-asmo;
-asmp;
-asmq;
-asmr;
-asms;
-asmt;
-asmu;
-asmv;
-asmw;
-asmx;
-asmy;
-asmz;
-asna;
-asnb;
-asnc;
-asnd;
-asne;
-asnf;
-asng;
-asnh;
-asni;
-asnj;
-asnk;
-asnl;
-asnm;
-asnn;
-asno;
-asnp;
-asnq;
-asnr;
-asns;
-asnt;
-asnu;
-asnv;
-asnw;
-asnx;
-asny;
-asnz;
-asoa;
-asob;
-asoc;
-asod;
-asoe;
-asof;
-asog;
-asoh;
-asoi;
-asoj;
-asok;
-asol;
-asom;
-ason;
-asoo;
-asop;
-asoq;
-asor;
-asos;
-asot;
-asou;
-asov;
-asow;
-asox;
-asoy;
-asoz;
-aspa;
-aspb;
-aspc;
-aspd;
-aspe;
-aspf;
-aspg;
-asph;
-aspi;
-aspj;
-aspk;
-aspl;
-aspm;
-aspn;
-aspo;
-aspp;
-aspq;
-aspr;
-asps;
-aspt;
-aspu;
-aspv;
-aspw;
-aspx;
-aspy;
-aspz;
-asqa;
-asqb;
-asqc;
-asqd;
-asqe;
-asqf;
-asqg;
-asqh;
-asqi;
-asqj;
-asqk;
-asql;
-asqm;
-asqn;
-asqo;
-asqp;
-asqq;
-asqr;
-asqs;
-asqt;
-asqu;
-asqv;
-asqw;
-asqx;
-asqy;
-asqz;
-asra;
-asrb;
-asrc;
-asrd;
-asre;
-asrf;
-asrg;
-asrh;
-asri;
-asrj;
-asrk;
-asrl;
-asrm;
-asrn;
-asro;
-asrp;
-asrq;
-asrr;
-asrs;
-asrt;
-asru;
-asrv;
-asrw;
-asrx;
-asry;
-asrz;
-assa;
-assb;
-assc;
-assd;
-asse;
-assf;
-assg;
-assh;
-assi;
-assj;
-assk;
-assl;
-assm;
-assn;
-asso;
-assp;
-assq;
-assr;
-asss;
-asst;
-assu;
-assv;
-assw;
-assx;
-assy;
-assz;
-asta;
-astb;
-astc;
-astd;
-aste;
-astf;
-astg;
-asth;
-asti;
-astj;
-astk;
-astl;
-astm;
-astn;
-asto;
-astp;
-astq;
-astr;
-asts;
-astt;
-astu;
-astv;
-astw;
-astx;
-asty;
-astz;
-asua;
-asub;
-asuc;
-asud;
-asue;
-asuf;
-asug;
-asuh;
-asui;
-asuj;
-asuk;
-asul;
-asum;
-asun;
-asuo;
-asup;
-asuq;
-asur;
-asus;
-asut;
-asuu;
-asuv;
-asuw;
-asux;
-asuy;
-asuz;
-asva;
-asvb;
-asvc;
-asvd;
-asve;
-asvf;
-asvg;
-asvh;
-asvi;
-asvj;
-asvk;
-asvl;
-asvm;
-asvn;
-asvo;
-asvp;
-asvq;
-asvr;
-asvs;
-asvt;
-asvu;
-asvv;
-asvw;
-asvx;
-asvy;
-asvz;
-aswa;
-aswb;
-aswc;
-aswd;
-aswe;
-aswf;
-aswg;
-aswh;
-aswi;
-aswj;
-aswk;
-aswl;
-aswm;
-aswn;
-aswo;
-aswp;
-aswq;
-aswr;
-asws;
-aswt;
-aswu;
-aswv;
-asww;
-aswx;
-aswy;
-aswz;
-asxa;
-asxb;
-asxc;
-asxd;
-asxe;
-asxf;
-asxg;
-asxh;
-asxi;
-asxj;
-asxk;
-asxl;
-asxm;
-asxn;
-asxo;
-asxp;
-asxq;
-asxr;
-asxs;
-asxt;
-asxu;
-asxv;
-asxw;
-asxx;
-asxy;
-asxz;
-asya;
-asyb;
-asyc;
-asyd;
-asye;
-asyf;
-asyg;
-asyh;
-asyi;
-asyj;
-asyk;
-asyl;
-asym;
-asyn;
-asyo;
-asyp;
-asyq;
-asyr;
-asys;
-asyt;
-asyu;
-asyv;
-asyw;
-asyx;
-asyy;
-asyz;
-asza;
-aszb;
-aszc;
-aszd;
-asze;
-aszf;
-aszg;
-aszh;
-aszi;
-aszj;
-aszk;
-aszl;
-aszm;
-aszn;
-aszo;
-aszp;
-aszq;
-aszr;
-aszs;
-aszt;
-aszu;
-aszv;
-aszw;
-aszx;
-aszy;
-aszz;
-ataa;
-atab;
-atac;
-atad;
-atae;
-ataf;
-atag;
-atah;
-atai;
-ataj;
-atak;
-atal;
-atam;
-atan;
-atao;
-atap;
-ataq;
-atar;
-atas;
-atat;
-atau;
-atav;
-ataw;
-atax;
-atay;
-ataz;
-atba;
-atbb;
-atbc;
-atbd;
-atbe;
-atbf;
-atbg;
-atbh;
-atbi;
-atbj;
-atbk;
-atbl;
-atbm;
-atbn;
-atbo;
-atbp;
-atbq;
-atbr;
-atbs;
-atbt;
-atbu;
-atbv;
-atbw;
-atbx;
-atby;
-atbz;
-atca;
-atcb;
-atcc;
-atcd;
-atce;
-atcf;
-atcg;
-atch;
-atci;
-atcj;
-atck;
-atcl;
-atcm;
-atcn;
-atco;
-atcp;
-atcq;
-atcr;
-atcs;
-atct;
-atcu;
-atcv;
-atcw;
-atcx;
-atcy;
-atcz;
-atda;
-atdb;
-atdc;
-atdd;
-atde;
-atdf;
-atdg;
-atdh;
-atdi;
-atdj;
-atdk;
-atdl;
-atdm;
-atdn;
-atdo;
-atdp;
-atdq;
-atdr;
-atds;
-atdt;
-atdu;
-atdv;
-atdw;
-atdx;
-atdy;
-atdz;
-atea;
-ateb;
-atec;
-ated;
-atee;
-atef;
-ateg;
-ateh;
-atei;
-atej;
-atek;
-atel;
-atem;
-aten;
-ateo;
-atep;
-ateq;
-ater;
-ates;
-atet;
-ateu;
-atev;
-atew;
-atex;
-atey;
-atez;
-atfa;
-atfb;
-atfc;
-atfd;
-atfe;
-atff;
-atfg;
-atfh;
-atfi;
-atfj;
-atfk;
-atfl;
-atfm;
-atfn;
-atfo;
-atfp;
-atfq;
-atfr;
-atfs;
-atft;
-atfu;
-atfv;
-atfw;
-atfx;
-atfy;
-atfz;
-atga;
-atgb;
-atgc;
-atgd;
-atge;
-atgf;
-atgg;
-atgh;
-atgi;
-atgj;
-atgk;
-atgl;
-atgm;
-atgn;
-atgo;
-atgp;
-atgq;
-atgr;
-atgs;
-atgt;
-atgu;
-atgv;
-atgw;
-atgx;
-atgy;
-atgz;
-atha;
-athb;
-athc;
-athd;
-athe;
-athf;
-athg;
-athh;
-athi;
-athj;
-athk;
-athl;
-athm;
-athn;
-atho;
-athp;
-athq;
-athr;
-aths;
-atht;
-athu;
-athv;
-athw;
-athx;
-athy;
-athz;
-atia;
-atib;
-atic;
-atid;
-atie;
-atif;
-atig;
-atih;
-atii;
-atij;
-atik;
-atil;
-atim;
-atin;
-atio;
-atip;
-atiq;
-atir;
-atis;
-atit;
-atiu;
-ativ;
-atiw;
-atix;
-atiy;
-atiz;
-atja;
-atjb;
-atjc;
-atjd;
-atje;
-atjf;
-atjg;
-atjh;
-atji;
-atjj;
-atjk;
-atjl;
-atjm;
-atjn;
-atjo;
-atjp;
-atjq;
-atjr;
-atjs;
-atjt;
-atju;
-atjv;
-atjw;
-atjx;
-atjy;
-atjz;
-atka;
-atkb;
-atkc;
-atkd;
-atke;
-atkf;
-atkg;
-atkh;
-atki;
-atkj;
-atkk;
-atkl;
-atkm;
-atkn;
-atko;
-atkp;
-atkq;
-atkr;
-atks;
-atkt;
-atku;
-atkv;
-atkw;
-atkx;
-atky;
-atkz;
-atla;
-atlb;
-atlc;
-atld;
-atle;
-atlf;
-atlg;
-atlh;
-atli;
-atlj;
-atlk;
-atll;
-atlm;
-atln;
-atlo;
-atlp;
-atlq;
-atlr;
-atls;
-atlt;
-atlu;
-atlv;
-atlw;
-atlx;
-atly;
-atlz;
-atma;
-atmb;
-atmc;
-atmd;
-atme;
-atmf;
-atmg;
-atmh;
-atmi;
-atmj;
-atmk;
-atml;
-atmm;
-atmn;
-atmo;
-atmp;
-atmq;
-atmr;
-atms;
-atmt;
-atmu;
-atmv;
-atmw;
-atmx;
-atmy;
-atmz;
-atna;
-atnb;
-atnc;
-atnd;
-atne;
-atnf;
-atng;
-atnh;
-atni;
-atnj;
-atnk;
-atnl;
-atnm;
-atnn;
-atno;
-atnp;
-atnq;
-atnr;
-atns;
-atnt;
-atnu;
-atnv;
-atnw;
-atnx;
-atny;
-atnz;
-atoa;
-atob;
-atoc;
-atod;
-atoe;
-atof;
-atog;
-atoh;
-atoi;
-atoj;
-atok;
-atol;
-atom;
-aton;
-atoo;
-atop;
-atoq;
-ator;
-atos;
-atot;
-atou;
-atov;
-atow;
-atox;
-atoy;
-atoz;
-atpa;
-atpb;
-atpc;
-atpd;
-atpe;
-atpf;
-atpg;
-atph;
-atpi;
-atpj;
-atpk;
-atpl;
-atpm;
-atpn;
-atpo;
-atpp;
-atpq;
-atpr;
-atps;
-atpt;
-atpu;
-atpv;
-atpw;
-atpx;
-atpy;
-atpz;
-atqa;
-atqb;
-atqc;
-atqd;
-atqe;
-atqf;
-atqg;
-atqh;
-atqi;
-atqj;
-atqk;
-atql;
-atqm;
-atqn;
-atqo;
-atqp;
-atqq;
-atqr;
-atqs;
-atqt;
-atqu;
-atqv;
-atqw;
-atqx;
-atqy;
-atqz;
-atra;
-atrb;
-atrc;
-atrd;
-atre;
-atrf;
-atrg;
-atrh;
-atri;
-atrj;
-atrk;
-atrl;
-atrm;
-atrn;
-atro;
-atrp;
-atrq;
-atrr;
-atrs;
-atrt;
-atru;
-atrv;
-atrw;
-atrx;
-atry;
-atrz;
-atsa;
-atsb;
-atsc;
-atsd;
-atse;
-atsf;
-atsg;
-atsh;
-atsi;
-atsj;
-atsk;
-atsl;
-atsm;
-atsn;
-atso;
-atsp;
-atsq;
-atsr;
-atss;
-atst;
-atsu;
-atsv;
-atsw;
-atsx;
-atsy;
-atsz;
-atta;
-attb;
-attc;
-attd;
-atte;
-attf;
-attg;
-atth;
-atti;
-attj;
-attk;
-attl;
-attm;
-attn;
-atto;
-attp;
-attq;
-attr;
-atts;
-attt;
-attu;
-attv;
-attw;
-attx;
-atty;
-attz;
-atua;
-atub;
-atuc;
-atud;
-atue;
-atuf;
-atug;
-atuh;
-atui;
-atuj;
-atuk;
-atul;
-atum;
-atun;
-atuo;
-atup;
-atuq;
-atur;
-atus;
-atut;
-atuu;
-atuv;
-atuw;
-atux;
-atuy;
-atuz;
-atva;
-atvb;
-atvc;
-atvd;
-atve;
-atvf;
-atvg;
-atvh;
-atvi;
-atvj;
-atvk;
-atvl;
-atvm;
-atvn;
-atvo;
-atvp;
-atvq;
-atvr;
-atvs;
-atvt;
-atvu;
-atvv;
-atvw;
-atvx;
-atvy;
-atvz;
-atwa;
-atwb;
-atwc;
-atwd;
-atwe;
-atwf;
-atwg;
-atwh;
-atwi;
-atwj;
-atwk;
-atwl;
-atwm;
-atwn;
-atwo;
-atwp;
-atwq;
-atwr;
-atws;
-atwt;
-atwu;
-atwv;
-atww;
-atwx;
-atwy;
-atwz;
-atxa;
-atxb;
-atxc;
-atxd;
-atxe;
-atxf;
-atxg;
-atxh;
-atxi;
-atxj;
-atxk;
-atxl;
-atxm;
-atxn;
-atxo;
-atxp;
-atxq;
-atxr;
-atxs;
-atxt;
-atxu;
-atxv;
-atxw;
-atxx;
-atxy;
-atxz;
-atya;
-atyb;
-atyc;
-atyd;
-atye;
-atyf;
-atyg;
-atyh;
-atyi;
-atyj;
-atyk;
-atyl;
-atym;
-atyn;
-atyo;
-atyp;
-atyq;
-atyr;
-atys;
-atyt;
-atyu;
-atyv;
-atyw;
-atyx;
-atyy;
-atyz;
-atza;
-atzb;
-atzc;
-atzd;
-atze;
-atzf;
-atzg;
-atzh;
-atzi;
-atzj;
-atzk;
-atzl;
-atzm;
-atzn;
-atzo;
-atzp;
-atzq;
-atzr;
-atzs;
-atzt;
-atzu;
-atzv;
-atzw;
-atzx;
-atzy;
-atzz;
-auaa;
-auab;
-auac;
-auad;
-auae;
-auaf;
-auag;
-auah;
-auai;
-auaj;
-auak;
-aual;
-auam;
-auan;
-auao;
-auap;
-auaq;
-auar;
-auas;
-auat;
-auau;
-auav;
-auaw;
-auax;
-auay;
-auaz;
-auba;
-aubb;
-aubc;
-aubd;
-aube;
-aubf;
-aubg;
-aubh;
-aubi;
-aubj;
-aubk;
-aubl;
-aubm;
-aubn;
-aubo;
-aubp;
-aubq;
-aubr;
-aubs;
-aubt;
-aubu;
-aubv;
-aubw;
-aubx;
-auby;
-aubz;
-auca;
-aucb;
-aucc;
-aucd;
-auce;
-aucf;
-aucg;
-auch;
-auci;
-aucj;
-auck;
-aucl;
-aucm;
-aucn;
-auco;
-aucp;
-aucq;
-aucr;
-aucs;
-auct;
-aucu;
-aucv;
-aucw;
-aucx;
-aucy;
-aucz;
-auda;
-audb;
-audc;
-audd;
-aude;
-audf;
-audg;
-audh;
-audi;
-audj;
-audk;
-audl;
-audm;
-audn;
-audo;
-audp;
-audq;
-audr;
-auds;
-audt;
-audu;
-audv;
-audw;
-audx;
-audy;
-audz;
-auea;
-aueb;
-auec;
-aued;
-auee;
-auef;
-aueg;
-aueh;
-auei;
-auej;
-auek;
-auel;
-auem;
-auen;
-aueo;
-auep;
-aueq;
-auer;
-aues;
-auet;
-aueu;
-auev;
-auew;
-auex;
-auey;
-auez;
-aufa;
-aufb;
-aufc;
-aufd;
-aufe;
-auff;
-aufg;
-aufh;
-aufi;
-aufj;
-aufk;
-aufl;
-aufm;
-aufn;
-aufo;
-aufp;
-aufq;
-aufr;
-aufs;
-auft;
-aufu;
-aufv;
-aufw;
-aufx;
-aufy;
-aufz;
-auga;
-augb;
-augc;
-augd;
-auge;
-augf;
-augg;
-augh;
-augi;
-augj;
-augk;
-augl;
-augm;
-augn;
-augo;
-augp;
-augq;
-augr;
-augs;
-augt;
-augu;
-augv;
-augw;
-augx;
-augy;
-augz;
-auha;
-auhb;
-auhc;
-auhd;
-auhe;
-auhf;
-auhg;
-auhh;
-auhi;
-auhj;
-auhk;
-auhl;
-auhm;
-auhn;
-auho;
-auhp;
-auhq;
-auhr;
-auhs;
-auht;
-auhu;
-auhv;
-auhw;
-auhx;
-auhy;
-auhz;
-auia;
-auib;
-auic;
-auid;
-auie;
-auif;
-auig;
-auih;
-auii;
-auij;
-auik;
-auil;
-auim;
-auin;
-auio;
-auip;
-auiq;
-auir;
-auis;
-auit;
-auiu;
-auiv;
-auiw;
-auix;
-auiy;
-auiz;
-auja;
-aujb;
-aujc;
-aujd;
-auje;
-aujf;
-aujg;
-aujh;
-auji;
-aujj;
-aujk;
-aujl;
-aujm;
-aujn;
-aujo;
-aujp;
-aujq;
-aujr;
-aujs;
-aujt;
-auju;
-aujv;
-aujw;
-aujx;
-aujy;
-aujz;
-auka;
-aukb;
-aukc;
-aukd;
-auke;
-aukf;
-aukg;
-aukh;
-auki;
-aukj;
-aukk;
-aukl;
-aukm;
-aukn;
-auko;
-aukp;
-aukq;
-aukr;
-auks;
-aukt;
-auku;
-aukv;
-aukw;
-aukx;
-auky;
-aukz;
-aula;
-aulb;
-aulc;
-auld;
-aule;
-aulf;
-aulg;
-aulh;
-auli;
-aulj;
-aulk;
-aull;
-aulm;
-auln;
-aulo;
-aulp;
-aulq;
-aulr;
-auls;
-ault;
-aulu;
-aulv;
-aulw;
-aulx;
-auly;
-aulz;
-auma;
-aumb;
-aumc;
-aumd;
-aume;
-aumf;
-aumg;
-aumh;
-aumi;
-aumj;
-aumk;
-auml;
-aumm;
-aumn;
-aumo;
-aump;
-aumq;
-aumr;
-aums;
-aumt;
-aumu;
-aumv;
-aumw;
-aumx;
-aumy;
-aumz;
-auna;
-aunb;
-aunc;
-aund;
-aune;
-aunf;
-aung;
-aunh;
-auni;
-aunj;
-aunk;
-aunl;
-aunm;
-aunn;
-auno;
-aunp;
-aunq;
-aunr;
-auns;
-aunt;
-aunu;
-aunv;
-aunw;
-aunx;
-auny;
-aunz;
-auoa;
-auob;
-auoc;
-auod;
-auoe;
-auof;
-auog;
-auoh;
-auoi;
-auoj;
-auok;
-auol;
-auom;
-auon;
-auoo;
-auop;
-auoq;
-auor;
-auos;
-auot;
-auou;
-auov;
-auow;
-auox;
-auoy;
-auoz;
-aupa;
-aupb;
-aupc;
-aupd;
-aupe;
-aupf;
-aupg;
-auph;
-aupi;
-aupj;
-aupk;
-aupl;
-aupm;
-aupn;
-aupo;
-aupp;
-aupq;
-aupr;
-aups;
-aupt;
-aupu;
-aupv;
-aupw;
-aupx;
-aupy;
-aupz;
-auqa;
-auqb;
-auqc;
-auqd;
-auqe;
-auqf;
-auqg;
-auqh;
-auqi;
-auqj;
-auqk;
-auql;
-auqm;
-auqn;
-auqo;
-auqp;
-auqq;
-auqr;
-auqs;
-auqt;
-auqu;
-auqv;
-auqw;
-auqx;
-auqy;
-auqz;
-aura;
-aurb;
-aurc;
-aurd;
-aure;
-aurf;
-aurg;
-aurh;
-auri;
-aurj;
-aurk;
-aurl;
-aurm;
-aurn;
-auro;
-aurp;
-aurq;
-aurr;
-aurs;
-aurt;
-auru;
-aurv;
-aurw;
-aurx;
-aury;
-aurz;
-ausa;
-ausb;
-ausc;
-ausd;
-ause;
-ausf;
-ausg;
-aush;
-ausi;
-ausj;
-ausk;
-ausl;
-ausm;
-ausn;
-auso;
-ausp;
-ausq;
-ausr;
-auss;
-aust;
-ausu;
-ausv;
-ausw;
-ausx;
-ausy;
-ausz;
-auta;
-autb;
-autc;
-autd;
-aute;
-autf;
-autg;
-auth;
-auti;
-autj;
-autk;
-autl;
-autm;
-autn;
-auto;
-autp;
-autq;
-autr;
-auts;
-autt;
-autu;
-autv;
-autw;
-autx;
-auty;
-autz;
-auua;
-auub;
-auuc;
-auud;
-auue;
-auuf;
-auug;
-auuh;
-auui;
-auuj;
-auuk;
-auul;
-auum;
-auun;
-auuo;
-auup;
-auuq;
-auur;
-auus;
-auut;
-auuu;
-auuv;
-auuw;
-auux;
-auuy;
-auuz;
-auva;
-auvb;
-auvc;
-auvd;
-auve;
-auvf;
-auvg;
-auvh;
-auvi;
-auvj;
-auvk;
-auvl;
-auvm;
-auvn;
-auvo;
-auvp;
-auvq;
-auvr;
-auvs;
-auvt;
-auvu;
-auvv;
-auvw;
-auvx;
-auvy;
-auvz;
-auwa;
-auwb;
-auwc;
-auwd;
-auwe;
-auwf;
-auwg;
-auwh;
-auwi;
-auwj;
-auwk;
-auwl;
-auwm;
-auwn;
-auwo;
-auwp;
-auwq;
-auwr;
-auws;
-auwt;
-auwu;
-auwv;
-auww;
-auwx;
-auwy;
-auwz;
-auxa;
-auxb;
-auxc;
-auxd;
-auxe;
-auxf;
-auxg;
-auxh;
-auxi;
-auxj;
-auxk;
-auxl;
-auxm;
-auxn;
-auxo;
-auxp;
-auxq;
-auxr;
-auxs;
-auxt;
-auxu;
-auxv;
-auxw;
-auxx;
-auxy;
-auxz;
-auya;
-auyb;
-auyc;
-auyd;
-auye;
-auyf;
-auyg;
-auyh;
-auyi;
-auyj;
-auyk;
-auyl;
-auym;
-auyn;
-auyo;
-auyp;
-auyq;
-auyr;
-auys;
-auyt;
-auyu;
-auyv;
-auyw;
-auyx;
-auyy;
-auyz;
-auza;
-auzb;
-auzc;
-auzd;
-auze;
-auzf;
-auzg;
-auzh;
-auzi;
-auzj;
-auzk;
-auzl;
-auzm;
-auzn;
-auzo;
-auzp;
-auzq;
-auzr;
-auzs;
-auzt;
-auzu;
-auzv;
-auzw;
-auzx;
-auzy;
-auzz;
-avaa;
-avab;
-avac;
-avad;
-avae;
-avaf;
-avag;
-avah;
-avai;
-avaj;
-avak;
-aval;
-avam;
-avan;
-avao;
-avap;
-avaq;
-avar;
-avas;
-avat;
-avau;
-avav;
-avaw;
-avax;
-avay;
-avaz;
-avba;
-avbb;
-avbc;
-avbd;
-avbe;
-avbf;
-avbg;
-avbh;
-avbi;
-avbj;
-avbk;
-avbl;
-avbm;
-avbn;
-avbo;
-avbp;
-avbq;
-avbr;
-avbs;
-avbt;
-avbu;
-avbv;
-avbw;
-avbx;
-avby;
-avbz;
-avca;
-avcb;
-avcc;
-avcd;
-avce;
-avcf;
-avcg;
-avch;
-avci;
-avcj;
-avck;
-avcl;
-avcm;
-avcn;
-avco;
-avcp;
-avcq;
-avcr;
-avcs;
-avct;
-avcu;
-avcv;
-avcw;
-avcx;
-avcy;
-avcz;
-avda;
-avdb;
-avdc;
-avdd;
-avde;
-avdf;
-avdg;
-avdh;
-avdi;
-avdj;
-avdk;
-avdl;
-avdm;
-avdn;
-avdo;
-avdp;
-avdq;
-avdr;
-avds;
-avdt;
-avdu;
-avdv;
-avdw;
-avdx;
-avdy;
-avdz;
-avea;
-aveb;
-avec;
-aved;
-avee;
-avef;
-aveg;
-aveh;
-avei;
-avej;
-avek;
-avel;
-avem;
-aven;
-aveo;
-avep;
-aveq;
-aver;
-aves;
-avet;
-aveu;
-avev;
-avew;
-avex;
-avey;
-avez;
-avfa;
-avfb;
-avfc;
-avfd;
-avfe;
-avff;
-avfg;
-avfh;
-avfi;
-avfj;
-avfk;
-avfl;
-avfm;
-avfn;
-avfo;
-avfp;
-avfq;
-avfr;
-avfs;
-avft;
-avfu;
-avfv;
-avfw;
-avfx;
-avfy;
-avfz;
-avga;
-avgb;
-avgc;
-avgd;
-avge;
-avgf;
-avgg;
-avgh;
-avgi;
-avgj;
-avgk;
-avgl;
-avgm;
-avgn;
-avgo;
-avgp;
-avgq;
-avgr;
-avgs;
-avgt;
-avgu;
-avgv;
-avgw;
-avgx;
-avgy;
-avgz;
-avha;
-avhb;
-avhc;
-avhd;
-avhe;
-avhf;
-avhg;
-avhh;
-avhi;
-avhj;
-avhk;
-avhl;
-avhm;
-avhn;
-avho;
-avhp;
-avhq;
-avhr;
-avhs;
-avht;
-avhu;
-avhv;
-avhw;
-avhx;
-avhy;
-avhz;
-avia;
-avib;
-avic;
-avid;
-avie;
-avif;
-avig;
-avih;
-avii;
-avij;
-avik;
-avil;
-avim;
-avin;
-avio;
-avip;
-aviq;
-avir;
-avis;
-avit;
-aviu;
-aviv;
-aviw;
-avix;
-aviy;
-aviz;
-avja;
-avjb;
-avjc;
-avjd;
-avje;
-avjf;
-avjg;
-avjh;
-avji;
-avjj;
-avjk;
-avjl;
-avjm;
-avjn;
-avjo;
-avjp;
-avjq;
-avjr;
-avjs;
-avjt;
-avju;
-avjv;
-avjw;
-avjx;
-avjy;
-avjz;
-avka;
-avkb;
-avkc;
-avkd;
-avke;
-avkf;
-avkg;
-avkh;
-avki;
-avkj;
-avkk;
-avkl;
-avkm;
-avkn;
-avko;
-avkp;
-avkq;
-avkr;
-avks;
-avkt;
-avku;
-avkv;
-avkw;
-avkx;
-avky;
-avkz;
-avla;
-avlb;
-avlc;
-avld;
-avle;
-avlf;
-avlg;
-avlh;
-avli;
-avlj;
-avlk;
-avll;
-avlm;
-avln;
-avlo;
-avlp;
-avlq;
-avlr;
-avls;
-avlt;
-avlu;
-avlv;
-avlw;
-avlx;
-avly;
-avlz;
-avma;
-avmb;
-avmc;
-avmd;
-avme;
-avmf;
-avmg;
-avmh;
-avmi;
-avmj;
-avmk;
-avml;
-avmm;
-avmn;
-avmo;
-avmp;
-avmq;
-avmr;
-avms;
-avmt;
-avmu;
-avmv;
-avmw;
-avmx;
-avmy;
-avmz;
-avna;
-avnb;
-avnc;
-avnd;
-avne;
-avnf;
-avng;
-avnh;
-avni;
-avnj;
-avnk;
-avnl;
-avnm;
-avnn;
-avno;
-avnp;
-avnq;
-avnr;
-avns;
-avnt;
-avnu;
-avnv;
-avnw;
-avnx;
-avny;
-avnz;
-avoa;
-avob;
-avoc;
-avod;
-avoe;
-avof;
-avog;
-avoh;
-avoi;
-avoj;
-avok;
-avol;
-avom;
-avon;
-avoo;
-avop;
-avoq;
-avor;
-avos;
-avot;
-avou;
-avov;
-avow;
-avox;
-avoy;
-avoz;
-avpa;
-avpb;
-avpc;
-avpd;
-avpe;
-avpf;
-avpg;
-avph;
-avpi;
-avpj;
-avpk;
-avpl;
-avpm;
-avpn;
-avpo;
-avpp;
-avpq;
-avpr;
-avps;
-avpt;
-avpu;
-avpv;
-avpw;
-avpx;
-avpy;
-avpz;
-avqa;
-avqb;
-avqc;
-avqd;
-avqe;
-avqf;
-avqg;
-avqh;
-avqi;
-avqj;
-avqk;
-avql;
-avqm;
-avqn;
-avqo;
-avqp;
-avqq;
-avqr;
-avqs;
-avqt;
-avqu;
-avqv;
-avqw;
-avqx;
-avqy;
-avqz;
-avra;
-avrb;
-avrc;
-avrd;
-avre;
-avrf;
-avrg;
-avrh;
-avri;
-avrj;
-avrk;
-avrl;
-avrm;
-avrn;
-avro;
-avrp;
-avrq;
-avrr;
-avrs;
-avrt;
-avru;
-avrv;
-avrw;
-avrx;
-avry;
-avrz;
-avsa;
-avsb;
-avsc;
-avsd;
-avse;
-avsf;
-avsg;
-avsh;
-avsi;
-avsj;
-avsk;
-avsl;
-avsm;
-avsn;
-avso;
-avsp;
-avsq;
-avsr;
-avss;
-avst;
-avsu;
-avsv;
-avsw;
-avsx;
-avsy;
-avsz;
-avta;
-avtb;
-avtc;
-avtd;
-avte;
-avtf;
-avtg;
-avth;
-avti;
-avtj;
-avtk;
-avtl;
-avtm;
-avtn;
-avto;
-avtp;
-avtq;
-avtr;
-avts;
-avtt;
-avtu;
-avtv;
-avtw;
-avtx;
-avty;
-avtz;
-avua;
-avub;
-avuc;
-avud;
-avue;
-avuf;
-avug;
-avuh;
-avui;
-avuj;
-avuk;
-avul;
-avum;
-avun;
-avuo;
-avup;
-avuq;
-avur;
-avus;
-avut;
-avuu;
-avuv;
-avuw;
-avux;
-avuy;
-avuz;
-avva;
-avvb;
-avvc;
-avvd;
-avve;
-avvf;
-avvg;
-avvh;
-avvi;
-avvj;
-avvk;
-avvl;
-avvm;
-avvn;
-avvo;
-avvp;
-avvq;
-avvr;
-avvs;
-avvt;
-avvu;
-avvv;
-avvw;
-avvx;
-avvy;
-avvz;
-avwa;
-avwb;
-avwc;
-avwd;
-avwe;
-avwf;
-avwg;
-avwh;
-avwi;
-avwj;
-avwk;
-avwl;
-avwm;
-avwn;
-avwo;
-avwp;
-avwq;
-avwr;
-avws;
-avwt;
-avwu;
-avwv;
-avww;
-avwx;
-avwy;
-avwz;
-avxa;
-avxb;
-avxc;
-avxd;
-avxe;
-avxf;
-avxg;
-avxh;
-avxi;
-avxj;
-avxk;
-avxl;
-avxm;
-avxn;
-avxo;
-avxp;
-avxq;
-avxr;
-avxs;
-avxt;
-avxu;
-avxv;
-avxw;
-avxx;
-avxy;
-avxz;
-avya;
-avyb;
-avyc;
-avyd;
-avye;
-avyf;
-avyg;
-avyh;
-avyi;
-avyj;
-avyk;
-avyl;
-avym;
-avyn;
-avyo;
-avyp;
-avyq;
-avyr;
-avys;
-avyt;
-avyu;
-avyv;
-avyw;
-avyx;
-avyy;
-avyz;
-avza;
-avzb;
-avzc;
-avzd;
-avze;
-avzf;
-avzg;
-avzh;
-avzi;
-avzj;
-avzk;
-avzl;
-avzm;
-avzn;
-avzo;
-avzp;
-avzq;
-avzr;
-avzs;
-avzt;
-avzu;
-avzv;
-avzw;
-avzx;
-avzy;
-avzz;
-awaa;
-awab;
-awac;
-awad;
-awae;
-awaf;
-awag;
-awah;
-awai;
-awaj;
-awak;
-awal;
-awam;
-awan;
-awao;
-awap;
-awaq;
-awar;
-awas;
-awat;
-awau;
-awav;
-awaw;
-awax;
-away;
-awaz;
-awba;
-awbb;
-awbc;
-awbd;
-awbe;
-awbf;
-awbg;
-awbh;
-awbi;
-awbj;
-awbk;
-awbl;
-awbm;
-awbn;
-awbo;
-awbp;
-awbq;
-awbr;
-awbs;
-awbt;
-awbu;
-awbv;
-awbw;
-awbx;
-awby;
-awbz;
-awca;
-awcb;
-awcc;
-awcd;
-awce;
-awcf;
-awcg;
-awch;
-awci;
-awcj;
-awck;
-awcl;
-awcm;
-awcn;
-awco;
-awcp;
-awcq;
-awcr;
-awcs;
-awct;
-awcu;
-awcv;
-awcw;
-awcx;
-awcy;
-awcz;
-awda;
-awdb;
-awdc;
-awdd;
-awde;
-awdf;
-awdg;
-awdh;
-awdi;
-awdj;
-awdk;
-awdl;
-awdm;
-awdn;
-awdo;
-awdp;
-awdq;
-awdr;
-awds;
-awdt;
-awdu;
-awdv;
-awdw;
-awdx;
-awdy;
-awdz;
-awea;
-aweb;
-awec;
-awed;
-awee;
-awef;
-aweg;
-aweh;
-awei;
-awej;
-awek;
-awel;
-awem;
-awen;
-aweo;
-awep;
-aweq;
-awer;
-awes;
-awet;
-aweu;
-awev;
-awew;
-awex;
-awey;
-awez;
-awfa;
-awfb;
-awfc;
-awfd;
-awfe;
-awff;
-awfg;
-awfh;
-awfi;
-awfj;
-awfk;
-awfl;
-awfm;
-awfn;
-awfo;
-awfp;
-awfq;
-awfr;
-awfs;
-awft;
-awfu;
-awfv;
-awfw;
-awfx;
-awfy;
-awfz;
-awga;
-awgb;
-awgc;
-awgd;
-awge;
-awgf;
-awgg;
-awgh;
-awgi;
-awgj;
-awgk;
-awgl;
-awgm;
-awgn;
-awgo;
-awgp;
-awgq;
-awgr;
-awgs;
-awgt;
-awgu;
-awgv;
-awgw;
-awgx;
-awgy;
-awgz;
-awha;
-awhb;
-awhc;
-awhd;
-awhe;
-awhf;
-awhg;
-awhh;
-awhi;
-awhj;
-awhk;
-awhl;
-awhm;
-awhn;
-awho;
-awhp;
-awhq;
-awhr;
-awhs;
-awht;
-awhu;
-awhv;
-awhw;
-awhx;
-awhy;
-awhz;
-awia;
-awib;
-awic;
-awid;
-awie;
-awif;
-awig;
-awih;
-awii;
-awij;
-awik;
-awil;
-awim;
-awin;
-awio;
-awip;
-awiq;
-awir;
-awis;
-awit;
-awiu;
-awiv;
-awiw;
-awix;
-awiy;
-awiz;
-awja;
-awjb;
-awjc;
-awjd;
-awje;
-awjf;
-awjg;
-awjh;
-awji;
-awjj;
-awjk;
-awjl;
-awjm;
-awjn;
-awjo;
-awjp;
-awjq;
-awjr;
-awjs;
-awjt;
-awju;
-awjv;
-awjw;
-awjx;
-awjy;
-awjz;
-awka;
-awkb;
-awkc;
-awkd;
-awke;
-awkf;
-awkg;
-awkh;
-awki;
-awkj;
-awkk;
-awkl;
-awkm;
-awkn;
-awko;
-awkp;
-awkq;
-awkr;
-awks;
-awkt;
-awku;
-awkv;
-awkw;
-awkx;
-awky;
-awkz;
-awla;
-awlb;
-awlc;
-awld;
-awle;
-awlf;
-awlg;
-awlh;
-awli;
-awlj;
-awlk;
-awll;
-awlm;
-awln;
-awlo;
-awlp;
-awlq;
-awlr;
-awls;
-awlt;
-awlu;
-awlv;
-awlw;
-awlx;
-awly;
-awlz;
-awma;
-awmb;
-awmc;
-awmd;
-awme;
-awmf;
-awmg;
-awmh;
-awmi;
-awmj;
-awmk;
-awml;
-awmm;
-awmn;
-awmo;
-awmp;
-awmq;
-awmr;
-awms;
-awmt;
-awmu;
-awmv;
-awmw;
-awmx;
-awmy;
-awmz;
-awna;
-awnb;
-awnc;
-awnd;
-awne;
-awnf;
-awng;
-awnh;
-awni;
-awnj;
-awnk;
-awnl;
-awnm;
-awnn;
-awno;
-awnp;
-awnq;
-awnr;
-awns;
-awnt;
-awnu;
-awnv;
-awnw;
-awnx;
-awny;
-awnz;
-awoa;
-awob;
-awoc;
-awod;
-awoe;
-awof;
-awog;
-awoh;
-awoi;
-awoj;
-awok;
-awol;
-awom;
-awon;
-awoo;
-awop;
-awoq;
-awor;
-awos;
-awot;
-awou;
-awov;
-awow;
-awox;
-awoy;
-awoz;
-awpa;
-awpb;
-awpc;
-awpd;
-awpe;
-awpf;
-awpg;
-awph;
-awpi;
-awpj;
-awpk;
-awpl;
-awpm;
-awpn;
-awpo;
-awpp;
-awpq;
-awpr;
-awps;
-awpt;
-awpu;
-awpv;
-awpw;
-awpx;
-awpy;
-awpz;
-awqa;
-awqb;
-awqc;
-awqd;
-awqe;
-awqf;
-awqg;
-awqh;
-awqi;
-awqj;
-awqk;
-awql;
-awqm;
-awqn;
-awqo;
-awqp;
-awqq;
-awqr;
-awqs;
-awqt;
-awqu;
-awqv;
-awqw;
-awqx;
-awqy;
-awqz;
-awra;
-awrb;
-awrc;
-awrd;
-awre;
-awrf;
-awrg;
-awrh;
-awri;
-awrj;
-awrk;
-awrl;
-awrm;
-awrn;
-awro;
-awrp;
-awrq;
-awrr;
-awrs;
-awrt;
-awru;
-awrv;
-awrw;
-awrx;
-awry;
-awrz;
-awsa;
-awsb;
-awsc;
-awsd;
-awse;
-awsf;
-awsg;
-awsh;
-awsi;
-awsj;
-awsk;
-awsl;
-awsm;
-awsn;
-awso;
-awsp;
-awsq;
-awsr;
-awss;
-awst;
-awsu;
-awsv;
-awsw;
-awsx;
-awsy;
-awsz;
-awta;
-awtb;
-awtc;
-awtd;
-awte;
-awtf;
-awtg;
-awth;
-awti;
-awtj;
-awtk;
-awtl;
-awtm;
-awtn;
-awto;
-awtp;
-awtq;
-awtr;
-awts;
-awtt;
-awtu;
-awtv;
-awtw;
-awtx;
-awty;
-awtz;
-awua;
-awub;
-awuc;
-awud;
-awue;
-awuf;
-awug;
-awuh;
-awui;
-awuj;
-awuk;
-awul;
-awum;
-awun;
-awuo;
-awup;
-awuq;
-awur;
-awus;
-awut;
-awuu;
-awuv;
-awuw;
-awux;
-awuy;
-awuz;
-awva;
-awvb;
-awvc;
-awvd;
-awve;
-awvf;
-awvg;
-awvh;
-awvi;
-awvj;
-awvk;
-awvl;
-awvm;
-awvn;
-awvo;
-awvp;
-awvq;
-awvr;
-awvs;
-awvt;
-awvu;
-awvv;
-awvw;
-awvx;
-awvy;
-awvz;
-awwa;
-awwb;
-awwc;
-awwd;
-awwe;
-awwf;
-awwg;
-awwh;
-awwi;
-awwj;
-awwk;
-awwl;
-awwm;
-awwn;
-awwo;
-awwp;
-awwq;
-awwr;
-awws;
-awwt;
-awwu;
-awwv;
-awww;
-awwx;
-awwy;
-awwz;
-awxa;
-awxb;
-awxc;
-awxd;
-awxe;
-awxf;
-awxg;
-awxh;
-awxi;
-awxj;
-awxk;
-awxl;
-awxm;
-awxn;
-awxo;
-awxp;
-awxq;
-awxr;
-awxs;
-awxt;
-awxu;
-awxv;
-awxw;
-awxx;
-awxy;
-awxz;
-awya;
-awyb;
-awyc;
-awyd;
-awye;
-awyf;
-awyg;
-awyh;
-awyi;
-awyj;
-awyk;
-awyl;
-awym;
-awyn;
-awyo;
-awyp;
-awyq;
-awyr;
-awys;
-awyt;
-awyu;
-awyv;
-awyw;
-awyx;
-awyy;
-awyz;
-awza;
-awzb;
-awzc;
-awzd;
-awze;
-awzf;
-awzg;
-awzh;
-awzi;
-awzj;
-awzk;
-awzl;
-awzm;
-awzn;
-awzo;
-awzp;
-awzq;
-awzr;
-awzs;
-awzt;
-awzu;
-awzv;
-awzw;
-awzx;
-awzy;
-awzz;
-axaa;
-axab;
-axac;
-axad;
-axae;
-axaf;
-axag;
-axah;
-axai;
-axaj;
-axak;
-axal;
-axam;
-axan;
-axao;
-axap;
-axaq;
-axar;
-axas;
-axat;
-axau;
-axav;
-axaw;
-axax;
-axay;
-axaz;
-axba;
-axbb;
-axbc;
-axbd;
-axbe;
-axbf;
-axbg;
-axbh;
-axbi;
-axbj;
-axbk;
-axbl;
-axbm;
-axbn;
-axbo;
-axbp;
-axbq;
-axbr;
-axbs;
-axbt;
-axbu;
-axbv;
-axbw;
-axbx;
-axby;
-axbz;
-axca;
-axcb;
-axcc;
-axcd;
-axce;
-axcf;
-axcg;
-axch;
-axci;
-axcj;
-axck;
-axcl;
-axcm;
-axcn;
-axco;
-axcp;
-axcq;
-axcr;
-axcs;
-axct;
-axcu;
-axcv;
-axcw;
-axcx;
-axcy;
-axcz;
-axda;
-axdb;
-axdc;
-axdd;
-axde;
-axdf;
-axdg;
-axdh;
-axdi;
-axdj;
-axdk;
-axdl;
-axdm;
-axdn;
-axdo;
-axdp;
-axdq;
-axdr;
-axds;
-axdt;
-axdu;
-axdv;
-axdw;
-axdx;
-axdy;
-axdz;
-axea;
-axeb;
-axec;
-axed;
-axee;
-axef;
-axeg;
-axeh;
-axei;
-axej;
-axek;
-axel;
-axem;
-axen;
-axeo;
-axep;
-axeq;
-axer;
-axes;
-axet;
-axeu;
-axev;
-axew;
-axex;
-axey;
-axez;
-axfa;
-axfb;
-axfc;
-axfd;
-axfe;
-axff;
-axfg;
-axfh;
-axfi;
-axfj;
-axfk;
-axfl;
-axfm;
-axfn;
-axfo;
-axfp;
-axfq;
-axfr;
-axfs;
-axft;
-axfu;
-axfv;
-axfw;
-axfx;
-axfy;
-axfz;
-axga;
-axgb;
-axgc;
-axgd;
-axge;
-axgf;
-axgg;
-axgh;
-axgi;
-axgj;
-axgk;
-axgl;
-axgm;
-axgn;
-axgo;
-axgp;
-axgq;
-axgr;
-axgs;
-axgt;
-axgu;
-axgv;
-axgw;
-axgx;
-axgy;
-axgz;
-axha;
-axhb;
-axhc;
-axhd;
-axhe;
-axhf;
-axhg;
-axhh;
-axhi;
-axhj;
-axhk;
-axhl;
-axhm;
-axhn;
-axho;
-axhp;
-axhq;
-axhr;
-axhs;
-axht;
-axhu;
-axhv;
-axhw;
-axhx;
-axhy;
-axhz;
-axia;
-axib;
-axic;
-axid;
-axie;
-axif;
-axig;
-axih;
-axii;
-axij;
-axik;
-axil;
-axim;
-axin;
-axio;
-axip;
-axiq;
-axir;
-axis;
-axit;
-axiu;
-axiv;
-axiw;
-axix;
-axiy;
-axiz;
-axja;
-axjb;
-axjc;
-axjd;
-axje;
-axjf;
-axjg;
-axjh;
-axji;
-axjj;
-axjk;
-axjl;
-axjm;
-axjn;
-axjo;
-axjp;
-axjq;
-axjr;
-axjs;
-axjt;
-axju;
-axjv;
-axjw;
-axjx;
-axjy;
-axjz;
-axka;
-axkb;
-axkc;
-axkd;
-axke;
-axkf;
-axkg;
-axkh;
-axki;
-axkj;
-axkk;
-axkl;
-axkm;
-axkn;
-axko;
-axkp;
-axkq;
-axkr;
-axks;
-axkt;
-axku;
-axkv;
-axkw;
-axkx;
-axky;
-axkz;
-axla;
-axlb;
-axlc;
-axld;
-axle;
-axlf;
-axlg;
-axlh;
-axli;
-axlj;
-axlk;
-axll;
-axlm;
-axln;
-axlo;
-axlp;
-axlq;
-axlr;
-axls;
-axlt;
-axlu;
-axlv;
-axlw;
-axlx;
-axly;
-axlz;
-axma;
-axmb;
-axmc;
-axmd;
-axme;
-axmf;
-axmg;
-axmh;
-axmi;
-axmj;
-axmk;
-axml;
-axmm;
-axmn;
-axmo;
-axmp;
-axmq;
-axmr;
-axms;
-axmt;
-axmu;
-axmv;
-axmw;
-axmx;
-axmy;
-axmz;
-axna;
-axnb;
-axnc;
-axnd;
-axne;
-axnf;
-axng;
-axnh;
-axni;
-axnj;
-axnk;
-axnl;
-axnm;
-axnn;
-axno;
-axnp;
-axnq;
-axnr;
-axns;
-axnt;
-axnu;
-axnv;
-axnw;
-axnx;
-axny;
-axnz;
-axoa;
-axob;
-axoc;
-axod;
-axoe;
-axof;
-axog;
-axoh;
-axoi;
-axoj;
-axok;
-axol;
-axom;
-axon;
-axoo;
-axop;
-axoq;
-axor;
-axos;
-axot;
-axou;
-axov;
-axow;
-axox;
-axoy;
-axoz;
-axpa;
-axpb;
-axpc;
-axpd;
-axpe;
-axpf;
-axpg;
-axph;
-axpi;
-axpj;
-axpk;
-axpl;
-axpm;
-axpn;
-axpo;
-axpp;
-axpq;
-axpr;
-axps;
-axpt;
-axpu;
-axpv;
-axpw;
-axpx;
-axpy;
-axpz;
-axqa;
-axqb;
-axqc;
-axqd;
-axqe;
-axqf;
-axqg;
-axqh;
-axqi;
-axqj;
-axqk;
-axql;
-axqm;
-axqn;
-axqo;
-axqp;
-axqq;
-axqr;
-axqs;
-axqt;
-axqu;
-axqv;
-axqw;
-axqx;
-axqy;
-axqz;
-axra;
-axrb;
-axrc;
-axrd;
-axre;
-axrf;
-axrg;
-axrh;
-axri;
-axrj;
-axrk;
-axrl;
-axrm;
-axrn;
-axro;
-axrp;
-axrq;
-axrr;
-axrs;
-axrt;
-axru;
-axrv;
-axrw;
-axrx;
-axry;
-axrz;
-axsa;
-axsb;
-axsc;
-axsd;
-axse;
-axsf;
-axsg;
-axsh;
-axsi;
-axsj;
-axsk;
-axsl;
-axsm;
-axsn;
-axso;
-axsp;
-axsq;
-axsr;
-axss;
-axst;
-axsu;
-axsv;
-axsw;
-axsx;
-axsy;
-axsz;
-axta;
-axtb;
-axtc;
-axtd;
-axte;
-axtf;
-axtg;
-axth;
-axti;
-axtj;
-axtk;
-axtl;
-axtm;
-axtn;
-axto;
-axtp;
-axtq;
-axtr;
-axts;
-axtt;
-axtu;
-axtv;
-axtw;
-axtx;
-axty;
-axtz;
-axua;
-axub;
-axuc;
-axud;
-axue;
-axuf;
-axug;
-axuh;
-axui;
-axuj;
-axuk;
-axul;
-axum;
-axun;
-axuo;
-axup;
-axuq;
-axur;
-axus;
-axut;
-axuu;
-axuv;
-axuw;
-axux;
-axuy;
-axuz;
-axva;
-axvb;
-axvc;
-axvd;
-axve;
-axvf;
-axvg;
-axvh;
-axvi;
-axvj;
-axvk;
-axvl;
-axvm;
-axvn;
-axvo;
-axvp;
-axvq;
-axvr;
-axvs;
-axvt;
-axvu;
-axvv;
-axvw;
-axvx;
-axvy;
-axvz;
-axwa;
-axwb;
-axwc;
-axwd;
-axwe;
-axwf;
-axwg;
-axwh;
-axwi;
-axwj;
-axwk;
-axwl;
-axwm;
-axwn;
-axwo;
-axwp;
-axwq;
-axwr;
-axws;
-axwt;
-axwu;
-axwv;
-axww;
-axwx;
-axwy;
-axwz;
-axxa;
-axxb;
-axxc;
-axxd;
-axxe;
-axxf;
-axxg;
-axxh;
-axxi;
-axxj;
-axxk;
-axxl;
-axxm;
-axxn;
-axxo;
-axxp;
-axxq;
-axxr;
-axxs;
-axxt;
-axxu;
-axxv;
-axxw;
-axxx;
-axxy;
-axxz;
-axya;
-axyb;
-axyc;
-axyd;
-axye;
-axyf;
-axyg;
-axyh;
-axyi;
-axyj;
-axyk;
-axyl;
-axym;
-axyn;
-axyo;
-axyp;
-axyq;
-axyr;
-axys;
-axyt;
-axyu;
-axyv;
-axyw;
-axyx;
-axyy;
-axyz;
-axza;
-axzb;
-axzc;
-axzd;
-axze;
-axzf;
-axzg;
-axzh;
-axzi;
-axzj;
-axzk;
-axzl;
-axzm;
-axzn;
-axzo;
-axzp;
-axzq;
-axzr;
-axzs;
-axzt;
-axzu;
-axzv;
-axzw;
-axzx;
-axzy;
-axzz;
-ayaa;
-ayab;
-ayac;
-ayad;
-ayae;
-ayaf;
-ayag;
-ayah;
-ayai;
-ayaj;
-ayak;
-ayal;
-ayam;
-ayan;
-ayao;
-ayap;
-ayaq;
-ayar;
-ayas;
-ayat;
-ayau;
-ayav;
-ayaw;
-ayax;
-ayay;
-ayaz;
-ayba;
-aybb;
-aybc;
-aybd;
-aybe;
-aybf;
-aybg;
-aybh;
-aybi;
-aybj;
-aybk;
-aybl;
-aybm;
-aybn;
-aybo;
-aybp;
-aybq;
-aybr;
-aybs;
-aybt;
-aybu;
-aybv;
-aybw;
-aybx;
-ayby;
-aybz;
-ayca;
-aycb;
-aycc;
-aycd;
-ayce;
-aycf;
-aycg;
-aych;
-ayci;
-aycj;
-ayck;
-aycl;
-aycm;
-aycn;
-ayco;
-aycp;
-aycq;
-aycr;
-aycs;
-ayct;
-aycu;
-aycv;
-aycw;
-aycx;
-aycy;
-aycz;
-ayda;
-aydb;
-aydc;
-aydd;
-ayde;
-aydf;
-aydg;
-aydh;
-aydi;
-aydj;
-aydk;
-aydl;
-aydm;
-aydn;
-aydo;
-aydp;
-aydq;
-aydr;
-ayds;
-aydt;
-aydu;
-aydv;
-aydw;
-aydx;
-aydy;
-aydz;
-ayea;
-ayeb;
-ayec;
-ayed;
-ayee;
-ayef;
-ayeg;
-ayeh;
-ayei;
-ayej;
-ayek;
-ayel;
-ayem;
-ayen;
-ayeo;
-ayep;
-ayeq;
-ayer;
-ayes;
-ayet;
-ayeu;
-ayev;
-ayew;
-ayex;
-ayey;
-ayez;
-ayfa;
-ayfb;
-ayfc;
-ayfd;
-ayfe;
-ayff;
-ayfg;
-ayfh;
-ayfi;
-ayfj;
-ayfk;
-ayfl;
-ayfm;
-ayfn;
-ayfo;
-ayfp;
-ayfq;
-ayfr;
-ayfs;
-ayft;
-ayfu;
-ayfv;
-ayfw;
-ayfx;
-ayfy;
-ayfz;
-ayga;
-aygb;
-aygc;
-aygd;
-ayge;
-aygf;
-aygg;
-aygh;
-aygi;
-aygj;
-aygk;
-aygl;
-aygm;
-aygn;
-aygo;
-aygp;
-aygq;
-aygr;
-aygs;
-aygt;
-aygu;
-aygv;
-aygw;
-aygx;
-aygy;
-aygz;
-ayha;
-ayhb;
-ayhc;
-ayhd;
-ayhe;
-ayhf;
-ayhg;
-ayhh;
-ayhi;
-ayhj;
-ayhk;
-ayhl;
-ayhm;
-ayhn;
-ayho;
-ayhp;
-ayhq;
-ayhr;
-ayhs;
-ayht;
-ayhu;
-ayhv;
-ayhw;
-ayhx;
-ayhy;
-ayhz;
-ayia;
-ayib;
-ayic;
-ayid;
-ayie;
-ayif;
-ayig;
-ayih;
-ayii;
-ayij;
-ayik;
-ayil;
-ayim;
-ayin;
-ayio;
-ayip;
-ayiq;
-ayir;
-ayis;
-ayit;
-ayiu;
-ayiv;
-ayiw;
-ayix;
-ayiy;
-ayiz;
-ayja;
-ayjb;
-ayjc;
-ayjd;
-ayje;
-ayjf;
-ayjg;
-ayjh;
-ayji;
-ayjj;
-ayjk;
-ayjl;
-ayjm;
-ayjn;
-ayjo;
-ayjp;
-ayjq;
-ayjr;
-ayjs;
-ayjt;
-ayju;
-ayjv;
-ayjw;
-ayjx;
-ayjy;
-ayjz;
-ayka;
-aykb;
-aykc;
-aykd;
-ayke;
-aykf;
-aykg;
-aykh;
-ayki;
-aykj;
-aykk;
-aykl;
-aykm;
-aykn;
-ayko;
-aykp;
-aykq;
-aykr;
-ayks;
-aykt;
-ayku;
-aykv;
-aykw;
-aykx;
-ayky;
-aykz;
-ayla;
-aylb;
-aylc;
-ayld;
-ayle;
-aylf;
-aylg;
-aylh;
-ayli;
-aylj;
-aylk;
-ayll;
-aylm;
-ayln;
-aylo;
-aylp;
-aylq;
-aylr;
-ayls;
-aylt;
-aylu;
-aylv;
-aylw;
-aylx;
-ayly;
-aylz;
-ayma;
-aymb;
-aymc;
-aymd;
-ayme;
-aymf;
-aymg;
-aymh;
-aymi;
-aymj;
-aymk;
-ayml;
-aymm;
-aymn;
-aymo;
-aymp;
-aymq;
-aymr;
-ayms;
-aymt;
-aymu;
-aymv;
-aymw;
-aymx;
-aymy;
-aymz;
-ayna;
-aynb;
-aync;
-aynd;
-ayne;
-aynf;
-ayng;
-aynh;
-ayni;
-aynj;
-aynk;
-aynl;
-aynm;
-aynn;
-ayno;
-aynp;
-aynq;
-aynr;
-ayns;
-aynt;
-aynu;
-aynv;
-aynw;
-aynx;
-ayny;
-aynz;
-ayoa;
-ayob;
-ayoc;
-ayod;
-ayoe;
-ayof;
-ayog;
-ayoh;
-ayoi;
-ayoj;
-ayok;
-ayol;
-ayom;
-ayon;
-ayoo;
-ayop;
-ayoq;
-ayor;
-ayos;
-ayot;
-ayou;
-ayov;
-ayow;
-ayox;
-ayoy;
-ayoz;
-aypa;
-aypb;
-aypc;
-aypd;
-aype;
-aypf;
-aypg;
-ayph;
-aypi;
-aypj;
-aypk;
-aypl;
-aypm;
-aypn;
-aypo;
-aypp;
-aypq;
-aypr;
-ayps;
-aypt;
-aypu;
-aypv;
-aypw;
-aypx;
-aypy;
-aypz;
-ayqa;
-ayqb;
-ayqc;
-ayqd;
-ayqe;
-ayqf;
-ayqg;
-ayqh;
-ayqi;
-ayqj;
-ayqk;
-ayql;
-ayqm;
-ayqn;
-ayqo;
-ayqp;
-ayqq;
-ayqr;
-ayqs;
-ayqt;
-ayqu;
-ayqv;
-ayqw;
-ayqx;
-ayqy;
-ayqz;
-ayra;
-ayrb;
-ayrc;
-ayrd;
-ayre;
-ayrf;
-ayrg;
-ayrh;
-ayri;
-ayrj;
-ayrk;
-ayrl;
-ayrm;
-ayrn;
-ayro;
-ayrp;
-ayrq;
-ayrr;
-ayrs;
-ayrt;
-ayru;
-ayrv;
-ayrw;
-ayrx;
-ayry;
-ayrz;
-aysa;
-aysb;
-aysc;
-aysd;
-ayse;
-aysf;
-aysg;
-aysh;
-aysi;
-aysj;
-aysk;
-aysl;
-aysm;
-aysn;
-ayso;
-aysp;
-aysq;
-aysr;
-ayss;
-ayst;
-aysu;
-aysv;
-aysw;
-aysx;
-aysy;
-aysz;
-ayta;
-aytb;
-aytc;
-aytd;
-ayte;
-aytf;
-aytg;
-ayth;
-ayti;
-aytj;
-aytk;
-aytl;
-aytm;
-aytn;
-ayto;
-aytp;
-aytq;
-aytr;
-ayts;
-aytt;
-aytu;
-aytv;
-aytw;
-aytx;
-ayty;
-aytz;
-ayua;
-ayub;
-ayuc;
-ayud;
-ayue;
-ayuf;
-ayug;
-ayuh;
-ayui;
-ayuj;
-ayuk;
-ayul;
-ayum;
-ayun;
-ayuo;
-ayup;
-ayuq;
-ayur;
-ayus;
-ayut;
-ayuu;
-ayuv;
-ayuw;
-ayux;
-ayuy;
-ayuz;
-ayva;
-ayvb;
-ayvc;
-ayvd;
-ayve;
-ayvf;
-ayvg;
-ayvh;
-ayvi;
-ayvj;
-ayvk;
-ayvl;
-ayvm;
-ayvn;
-ayvo;
-ayvp;
-ayvq;
-ayvr;
-ayvs;
-ayvt;
-ayvu;
-ayvv;
-ayvw;
-ayvx;
-ayvy;
-ayvz;
-aywa;
-aywb;
-aywc;
-aywd;
-aywe;
-aywf;
-aywg;
-aywh;
-aywi;
-aywj;
-aywk;
-aywl;
-aywm;
-aywn;
-aywo;
-aywp;
-aywq;
-aywr;
-ayws;
-aywt;
-aywu;
-aywv;
-ayww;
-aywx;
-aywy;
-aywz;
-ayxa;
-ayxb;
-ayxc;
-ayxd;
-ayxe;
-ayxf;
-ayxg;
-ayxh;
-ayxi;
-ayxj;
-ayxk;
-ayxl;
-ayxm;
-ayxn;
-ayxo;
-ayxp;
-ayxq;
-ayxr;
-ayxs;
-ayxt;
-ayxu;
-ayxv;
-ayxw;
-ayxx;
-ayxy;
-ayxz;
-ayya;
-ayyb;
-ayyc;
-ayyd;
-ayye;
-ayyf;
-ayyg;
-ayyh;
-ayyi;
-ayyj;
-ayyk;
-ayyl;
-ayym;
-ayyn;
-ayyo;
-ayyp;
-ayyq;
-ayyr;
-ayys;
-ayyt;
-ayyu;
-ayyv;
-ayyw;
-ayyx;
-ayyy;
-ayyz;
-ayza;
-ayzb;
-ayzc;
-ayzd;
-ayze;
-ayzf;
-ayzg;
-ayzh;
-ayzi;
-ayzj;
-ayzk;
-ayzl;
-ayzm;
-ayzn;
-ayzo;
-ayzp;
-ayzq;
-ayzr;
-ayzs;
-ayzt;
-ayzu;
-ayzv;
-ayzw;
-ayzx;
-ayzy;
-ayzz;
-azaa;
-azab;
-azac;
-azad;
-azae;
-azaf;
-azag;
-azah;
-azai;
-azaj;
-azak;
-azal;
-azam;
-azan;
-azao;
-azap;
-azaq;
-azar;
-azas;
-azat;
-azau;
-azav;
-azaw;
-azax;
-azay;
-azaz;
-azba;
-azbb;
-azbc;
-azbd;
-azbe;
-azbf;
-azbg;
-azbh;
-azbi;
-azbj;
-azbk;
-azbl;
-azbm;
-azbn;
-azbo;
-azbp;
-azbq;
-azbr;
-azbs;
-azbt;
-azbu;
-azbv;
-azbw;
-azbx;
-azby;
-azbz;
-azca;
-azcb;
-azcc;
-azcd;
-azce;
-azcf;
-azcg;
-azch;
-azci;
-azcj;
-azck;
-azcl;
-azcm;
-azcn;
-azco;
-azcp;
-azcq;
-azcr;
-azcs;
-azct;
-azcu;
-azcv;
-azcw;
-azcx;
-azcy;
-azcz;
-azda;
-azdb;
-azdc;
-azdd;
-azde;
-azdf;
-azdg;
-azdh;
-azdi;
-azdj;
-azdk;
-azdl;
-azdm;
-azdn;
-azdo;
-azdp;
-azdq;
-azdr;
-azds;
-azdt;
-azdu;
-azdv;
-azdw;
-azdx;
-azdy;
-azdz;
-azea;
-azeb;
-azec;
-azed;
-azee;
-azef;
-azeg;
-azeh;
-azei;
-azej;
-azek;
-azel;
-azem;
-azen;
-azeo;
-azep;
-azeq;
-azer;
-azes;
-azet;
-azeu;
-azev;
-azew;
-azex;
-azey;
-azez;
-azfa;
-azfb;
-azfc;
-azfd;
-azfe;
-azff;
-azfg;
-azfh;
-azfi;
-azfj;
-azfk;
-azfl;
-azfm;
-azfn;
-azfo;
-azfp;
-azfq;
-azfr;
-azfs;
-azft;
-azfu;
-azfv;
-azfw;
-azfx;
-azfy;
-azfz;
-azga;
-azgb;
-azgc;
-azgd;
-azge;
-azgf;
-azgg;
-azgh;
-azgi;
-azgj;
-azgk;
-azgl;
-azgm;
-azgn;
-azgo;
-azgp;
-azgq;
-azgr;
-azgs;
-azgt;
-azgu;
-azgv;
-azgw;
-azgx;
-azgy;
-azgz;
-azha;
-azhb;
-azhc;
-azhd;
-azhe;
-azhf;
-azhg;
-azhh;
-azhi;
-azhj;
-azhk;
-azhl;
-azhm;
-azhn;
-azho;
-azhp;
-azhq;
-azhr;
-azhs;
-azht;
-azhu;
-azhv;
-azhw;
-azhx;
-azhy;
-azhz;
-azia;
-azib;
-azic;
-azid;
-azie;
-azif;
-azig;
-azih;
-azii;
-azij;
-azik;
-azil;
-azim;
-azin;
-azio;
-azip;
-aziq;
-azir;
-azis;
-azit;
-aziu;
-aziv;
-aziw;
-azix;
-aziy;
-aziz;
-azja;
-azjb;
-azjc;
-azjd;
-azje;
-azjf;
-azjg;
-azjh;
-azji;
-azjj;
-azjk;
-azjl;
-azjm;
-azjn;
-azjo;
-azjp;
-azjq;
-azjr;
-azjs;
-azjt;
-azju;
-azjv;
-azjw;
-azjx;
-azjy;
-azjz;
-azka;
-azkb;
-azkc;
-azkd;
-azke;
-azkf;
-azkg;
-azkh;
-azki;
-azkj;
-azkk;
-azkl;
-azkm;
-azkn;
-azko;
-azkp;
-azkq;
-azkr;
-azks;
-azkt;
-azku;
-azkv;
-azkw;
-azkx;
-azky;
-azkz;
-azla;
-azlb;
-azlc;
-azld;
-azle;
-azlf;
-azlg;
-azlh;
-azli;
-azlj;
-azlk;
-azll;
-azlm;
-azln;
-azlo;
-azlp;
-azlq;
-azlr;
-azls;
-azlt;
-azlu;
-azlv;
-azlw;
-azlx;
-azly;
-azlz;
-azma;
-azmb;
-azmc;
-azmd;
-azme;
-azmf;
-azmg;
-azmh;
-azmi;
-azmj;
-azmk;
-azml;
-azmm;
-azmn;
-azmo;
-azmp;
-azmq;
-azmr;
-azms;
-azmt;
-azmu;
-azmv;
-azmw;
-azmx;
-azmy;
-azmz;
-azna;
-aznb;
-aznc;
-aznd;
-azne;
-aznf;
-azng;
-aznh;
-azni;
-aznj;
-aznk;
-aznl;
-aznm;
-aznn;
-azno;
-aznp;
-aznq;
-aznr;
-azns;
-aznt;
-aznu;
-aznv;
-aznw;
-aznx;
-azny;
-aznz;
-azoa;
-azob;
-azoc;
-azod;
-azoe;
-azof;
-azog;
-azoh;
-azoi;
-azoj;
-azok;
-azol;
-azom;
-azon;
-azoo;
-azop;
-azoq;
-azor;
-azos;
-azot;
-azou;
-azov;
-azow;
-azox;
-azoy;
-azoz;
-azpa;
-azpb;
-azpc;
-azpd;
-azpe;
-azpf;
-azpg;
-azph;
-azpi;
-azpj;
-azpk;
-azpl;
-azpm;
-azpn;
-azpo;
-azpp;
-azpq;
-azpr;
-azps;
-azpt;
-azpu;
-azpv;
-azpw;
-azpx;
-azpy;
-azpz;
-azqa;
-azqb;
-azqc;
-azqd;
-azqe;
-azqf;
-azqg;
-azqh;
-azqi;
-azqj;
-azqk;
-azql;
-azqm;
-azqn;
-azqo;
-azqp;
-azqq;
-azqr;
-azqs;
-azqt;
-azqu;
-azqv;
-azqw;
-azqx;
-azqy;
-azqz;
-azra;
-azrb;
-azrc;
-azrd;
-azre;
-azrf;
-azrg;
-azrh;
-azri;
-azrj;
-azrk;
-azrl;
-azrm;
-azrn;
-azro;
-azrp;
-azrq;
-azrr;
-azrs;
-azrt;
-azru;
-azrv;
-azrw;
-azrx;
-azry;
-azrz;
-azsa;
-azsb;
-azsc;
-azsd;
-azse;
-azsf;
-azsg;
-azsh;
-azsi;
-azsj;
-azsk;
-azsl;
-azsm;
-azsn;
-azso;
-azsp;
-azsq;
-azsr;
-azss;
-azst;
-azsu;
-azsv;
-azsw;
-azsx;
-azsy;
-azsz;
-azta;
-aztb;
-aztc;
-aztd;
-azte;
-aztf;
-aztg;
-azth;
-azti;
-aztj;
-aztk;
-aztl;
-aztm;
-aztn;
-azto;
-aztp;
-aztq;
-aztr;
-azts;
-aztt;
-aztu;
-aztv;
-aztw;
-aztx;
-azty;
-aztz;
-azua;
-azub;
-azuc;
-azud;
-azue;
-azuf;
-azug;
-azuh;
-azui;
-azuj;
-azuk;
-azul;
-azum;
-azun;
-azuo;
-azup;
-azuq;
-azur;
-azus;
-azut;
-azuu;
-azuv;
-azuw;
-azux;
-azuy;
-azuz;
-azva;
-azvb;
-azvc;
-azvd;
-azve;
-azvf;
-azvg;
-azvh;
-azvi;
-azvj;
-azvk;
-azvl;
-azvm;
-azvn;
-azvo;
-azvp;
-azvq;
-azvr;
-azvs;
-azvt;
-azvu;
-azvv;
-azvw;
-azvx;
-azvy;
-azvz;
-azwa;
-azwb;
-azwc;
-azwd;
-azwe;
-azwf;
-azwg;
-azwh;
-azwi;
-azwj;
-azwk;
-azwl;
-azwm;
-azwn;
-azwo;
-azwp;
-azwq;
-azwr;
-azws;
-azwt;
-azwu;
-azwv;
-azww;
-azwx;
-azwy;
-azwz;
-azxa;
-azxb;
-azxc;
-azxd;
-azxe;
-azxf;
-azxg;
-azxh;
-azxi;
-azxj;
-azxk;
-azxl;
-azxm;
-azxn;
-azxo;
-azxp;
-azxq;
-azxr;
-azxs;
-azxt;
-azxu;
-azxv;
-azxw;
-azxx;
-azxy;
-azxz;
-azya;
-azyb;
-azyc;
-azyd;
-azye;
-azyf;
-azyg;
-azyh;
-azyi;
-azyj;
-azyk;
-azyl;
-azym;
-azyn;
-azyo;
-azyp;
-azyq;
-azyr;
-azys;
-azyt;
-azyu;
-azyv;
-azyw;
-azyx;
-azyy;
-azyz;
-azza;
-azzb;
-azzc;
-azzd;
-azze;
-azzf;
-azzg;
-azzh;
-azzi;
-azzj;
-azzk;
-azzl;
-azzm;
-azzn;
-azzo;
-azzp;
-azzq;
-azzr;
-azzs;
-azzt;
-azzu;
-azzv;
-azzw;
-azzx;
-azzy;
-azzz;
-baaa;
-baab;
-baac;
-baad;
-baae;
-baaf;
-baag;
-baah;
-baai;
-baaj;
-baak;
-baal;
-baam;
-baan;
-baao;
-baap;
-baaq;
-baar;
-baas;
-baat;
-baau;
-baav;
-baaw;
-baax;
-baay;
-baaz;
-baba;
-babb;
-babc;
-babd;
-babe;
-babf;
-babg;
-babh;
-babi;
-babj;
-babk;
-babl;
-babm;
-babn;
-babo;
-babp;
-babq;
-babr;
-babs;
-babt;
-babu;
-babv;
-babw;
-babx;
-baby;
-babz;
-baca;
-bacb;
-bacc;
-bacd;
-bace;
-bacf;
-bacg;
-bach;
-baci;
-bacj;
-back;
-bacl;
-bacm;
-bacn;
-baco;
-bacp;
-bacq;
-bacr;
-bacs;
-bact;
-bacu;
-bacv;
-bacw;
-bacx;
-bacy;
-bacz;
-bada;
-badb;
-badc;
-badd;
-bade;
-badf;
-badg;
-badh;
-badi;
-badj;
-badk;
-badl;
-badm;
-badn;
-bado;
-badp;
-badq;
-badr;
-bads;
-badt;
-badu;
-badv;
-badw;
-badx;
-bady;
-badz;
-baea;
-baeb;
-baec;
-baed;
-baee;
-baef;
-baeg;
-baeh;
-baei;
-baej;
-baek;
-bael;
-baem;
-baen;
-baeo;
-baep;
-baeq;
-baer;
-baes;
-baet;
-baeu;
-baev;
-baew;
-baex;
-baey;
-baez;
-bafa;
-bafb;
-bafc;
-bafd;
-bafe;
-baff;
-bafg;
-bafh;
-bafi;
-bafj;
-bafk;
-bafl;
-bafm;
-bafn;
-bafo;
-bafp;
-bafq;
-bafr;
-bafs;
-baft;
-bafu;
-bafv;
-bafw;
-bafx;
-bafy;
-bafz;
-baga;
-bagb;
-bagc;
-bagd;
-bage;
-bagf;
-bagg;
-bagh;
-bagi;
-bagj;
-bagk;
-bagl;
-bagm;
-bagn;
-bago;
-bagp;
-bagq;
-bagr;
-bags;
-bagt;
-bagu;
-bagv;
-bagw;
-bagx;
-bagy;
-bagz;
-baha;
-bahb;
-bahc;
-bahd;
-bahe;
-bahf;
-bahg;
-bahh;
-bahi;
-bahj;
-bahk;
-bahl;
-bahm;
-bahn;
-baho;
-bahp;
-bahq;
-bahr;
-bahs;
-baht;
-bahu;
-bahv;
-bahw;
-bahx;
-bahy;
-bahz;
-baia;
-baib;
-baic;
-baid;
-baie;
-baif;
-baig;
-baih;
-baii;
-baij;
-baik;
-bail;
-baim;
-bain;
-baio;
-baip;
-baiq;
-bair;
-bais;
-bait;
-baiu;
-baiv;
-baiw;
-baix;
-baiy;
-baiz;
-baja;
-bajb;
-bajc;
-bajd;
-baje;
-bajf;
-bajg;
-bajh;
-baji;
-bajj;
-bajk;
-bajl;
-bajm;
-bajn;
-bajo;
-bajp;
-bajq;
-bajr;
-bajs;
-bajt;
-baju;
-bajv;
-bajw;
-bajx;
-bajy;
-bajz;
-baka;
-bakb;
-bakc;
-bakd;
-bake;
-bakf;
-bakg;
-bakh;
-baki;
-bakj;
-bakk;
-bakl;
-bakm;
-bakn;
-bako;
-bakp;
-bakq;
-bakr;
-baks;
-bakt;
-baku;
-bakv;
-bakw;
-bakx;
-baky;
-bakz;
-bala;
-balb;
-balc;
-bald;
-bale;
-balf;
-balg;
-balh;
-bali;
-balj;
-balk;
-ball;
-balm;
-baln;
-balo;
-balp;
-balq;
-balr;
-bals;
-balt;
-balu;
-balv;
-balw;
-balx;
-baly;
-balz;
-bama;
-bamb;
-bamc;
-bamd;
-bame;
-bamf;
-bamg;
-bamh;
-bami;
-bamj;
-bamk;
-baml;
-bamm;
-bamn;
-bamo;
-bamp;
-bamq;
-bamr;
-bams;
-bamt;
-bamu;
-bamv;
-bamw;
-bamx;
-bamy;
-bamz;
-bana;
-banb;
-banc;
-band;
-bane;
-banf;
-bang;
-banh;
-bani;
-banj;
-bank;
-banl;
-banm;
-bann;
-bano;
-banp;
-banq;
-banr;
-bans;
-bant;
-banu;
-banv;
-banw;
-banx;
-bany;
-banz;
-baoa;
-baob;
-baoc;
-baod;
-baoe;
-baof;
-baog;
-baoh;
-baoi;
-baoj;
-baok;
-baol;
-baom;
-baon;
-baoo;
-baop;
-baoq;
-baor;
-baos;
-baot;
-baou;
-baov;
-baow;
-baox;
-baoy;
-baoz;
-bapa;
-bapb;
-bapc;
-bapd;
-bape;
-bapf;
-bapg;
-baph;
-bapi;
-bapj;
-bapk;
-bapl;
-bapm;
-bapn;
-bapo;
-bapp;
-bapq;
-bapr;
-baps;
-bapt;
-bapu;
-bapv;
-bapw;
-bapx;
-bapy;
-bapz;
-baqa;
-baqb;
-baqc;
-baqd;
-baqe;
-baqf;
-baqg;
-baqh;
-baqi;
-baqj;
-baqk;
-baql;
-baqm;
-baqn;
-baqo;
-baqp;
-baqq;
-baqr;
-baqs;
-baqt;
-baqu;
-baqv;
-baqw;
-baqx;
-baqy;
-baqz;
-bara;
-barb;
-barc;
-bard;
-bare;
-barf;
-barg;
-barh;
-bari;
-barj;
-bark;
-barl;
-barm;
-barn;
-baro;
-barp;
-barq;
-barr;
-bars;
-bart;
-baru;
-barv;
-barw;
-barx;
-bary;
-barz;
-basa;
-basb;
-basc;
-basd;
-base;
-basf;
-basg;
-bash;
-basi;
-basj;
-bask;
-basl;
-basm;
-basn;
-baso;
-basp;
-basq;
-basr;
-bass;
-bast;
-basu;
-basv;
-basw;
-basx;
-basy;
-basz;
-bata;
-batb;
-batc;
-batd;
-bate;
-batf;
-batg;
-bath;
-bati;
-batj;
-batk;
-batl;
-batm;
-batn;
-bato;
-batp;
-batq;
-batr;
-bats;
-batt;
-batu;
-batv;
-batw;
-batx;
-baty;
-batz;
-baua;
-baub;
-bauc;
-baud;
-baue;
-bauf;
-baug;
-bauh;
-baui;
-bauj;
-bauk;
-baul;
-baum;
-baun;
-bauo;
-baup;
-bauq;
-baur;
-baus;
-baut;
-bauu;
-bauv;
-bauw;
-baux;
-bauy;
-bauz;
-bava;
-bavb;
-bavc;
-bavd;
-bave;
-bavf;
-bavg;
-bavh;
-bavi;
-bavj;
-bavk;
-bavl;
-bavm;
-bavn;
-bavo;
-bavp;
-bavq;
-bavr;
-bavs;
-bavt;
-bavu;
-bavv;
-bavw;
-bavx;
-bavy;
-bavz;
-bawa;
-bawb;
-bawc;
-bawd;
-bawe;
-bawf;
-bawg;
-bawh;
-bawi;
-bawj;
-bawk;
-bawl;
-bawm;
-bawn;
-bawo;
-bawp;
-bawq;
-bawr;
-baws;
-bawt;
-bawu;
-bawv;
-baww;
-bawx;
-bawy;
-bawz;
-baxa;
-baxb;
-baxc;
-baxd;
-baxe;
-baxf;
-baxg;
-baxh;
-baxi;
-baxj;
-baxk;
-baxl;
-baxm;
-baxn;
-baxo;
-baxp;
-baxq;
-baxr;
-baxs;
-baxt;
-baxu;
-baxv;
-baxw;
-baxx;
-baxy;
-baxz;
-baya;
-bayb;
-bayc;
-bayd;
-baye;
-bayf;
-bayg;
-bayh;
-bayi;
-bayj;
-bayk;
-bayl;
-baym;
-bayn;
-bayo;
-bayp;
-bayq;
-bayr;
-bays;
-bayt;
-bayu;
-bayv;
-bayw;
-bayx;
-bayy;
-bayz;
-baza;
-bazb;
-bazc;
-bazd;
-baze;
-bazf;
-bazg;
-bazh;
-bazi;
-bazj;
-bazk;
-bazl;
-bazm;
-bazn;
-bazo;
-bazp;
-bazq;
-bazr;
-bazs;
-bazt;
-bazu;
-bazv;
-bazw;
-bazx;
-bazy;
-bazz;
-bbaa;
-bbab;
-bbac;
-bbad;
-bbae;
-bbaf;
-bbag;
-bbah;
-bbai;
-bbaj;
-bbak;
-bbal;
-bbam;
-bban;
-bbao;
-bbap;
-bbaq;
-bbar;
-bbas;
-bbat;
-bbau;
-bbav;
-bbaw;
-bbax;
-bbay;
-bbaz;
-bbba;
-bbbb
-|];
diff --git a/camlp4/test/fixtures/big-tab3.ml b/camlp4/test/fixtures/big-tab3.ml
deleted file mode 100644 (file)
index a597031..0000000
+++ /dev/null
@@ -1,20001 +0,0 @@
-[|
-aaaaa;
-aaaab;
-aaaac;
-aaaad;
-aaaae;
-aaaaf;
-aaaag;
-aaaah;
-aaaai;
-aaaaj;
-aaaak;
-aaaal;
-aaaam;
-aaaan;
-aaaao;
-aaaap;
-aaaaq;
-aaaar;
-aaaas;
-aaaat;
-aaaau;
-aaaav;
-aaaaw;
-aaaax;
-aaaay;
-aaaaz;
-aaaba;
-aaabb;
-aaabc;
-aaabd;
-aaabe;
-aaabf;
-aaabg;
-aaabh;
-aaabi;
-aaabj;
-aaabk;
-aaabl;
-aaabm;
-aaabn;
-aaabo;
-aaabp;
-aaabq;
-aaabr;
-aaabs;
-aaabt;
-aaabu;
-aaabv;
-aaabw;
-aaabx;
-aaaby;
-aaabz;
-aaaca;
-aaacb;
-aaacc;
-aaacd;
-aaace;
-aaacf;
-aaacg;
-aaach;
-aaaci;
-aaacj;
-aaack;
-aaacl;
-aaacm;
-aaacn;
-aaaco;
-aaacp;
-aaacq;
-aaacr;
-aaacs;
-aaact;
-aaacu;
-aaacv;
-aaacw;
-aaacx;
-aaacy;
-aaacz;
-aaada;
-aaadb;
-aaadc;
-aaadd;
-aaade;
-aaadf;
-aaadg;
-aaadh;
-aaadi;
-aaadj;
-aaadk;
-aaadl;
-aaadm;
-aaadn;
-aaado;
-aaadp;
-aaadq;
-aaadr;
-aaads;
-aaadt;
-aaadu;
-aaadv;
-aaadw;
-aaadx;
-aaady;
-aaadz;
-aaaea;
-aaaeb;
-aaaec;
-aaaed;
-aaaee;
-aaaef;
-aaaeg;
-aaaeh;
-aaaei;
-aaaej;
-aaaek;
-aaael;
-aaaem;
-aaaen;
-aaaeo;
-aaaep;
-aaaeq;
-aaaer;
-aaaes;
-aaaet;
-aaaeu;
-aaaev;
-aaaew;
-aaaex;
-aaaey;
-aaaez;
-aaafa;
-aaafb;
-aaafc;
-aaafd;
-aaafe;
-aaaff;
-aaafg;
-aaafh;
-aaafi;
-aaafj;
-aaafk;
-aaafl;
-aaafm;
-aaafn;
-aaafo;
-aaafp;
-aaafq;
-aaafr;
-aaafs;
-aaaft;
-aaafu;
-aaafv;
-aaafw;
-aaafx;
-aaafy;
-aaafz;
-aaaga;
-aaagb;
-aaagc;
-aaagd;
-aaage;
-aaagf;
-aaagg;
-aaagh;
-aaagi;
-aaagj;
-aaagk;
-aaagl;
-aaagm;
-aaagn;
-aaago;
-aaagp;
-aaagq;
-aaagr;
-aaags;
-aaagt;
-aaagu;
-aaagv;
-aaagw;
-aaagx;
-aaagy;
-aaagz;
-aaaha;
-aaahb;
-aaahc;
-aaahd;
-aaahe;
-aaahf;
-aaahg;
-aaahh;
-aaahi;
-aaahj;
-aaahk;
-aaahl;
-aaahm;
-aaahn;
-aaaho;
-aaahp;
-aaahq;
-aaahr;
-aaahs;
-aaaht;
-aaahu;
-aaahv;
-aaahw;
-aaahx;
-aaahy;
-aaahz;
-aaaia;
-aaaib;
-aaaic;
-aaaid;
-aaaie;
-aaaif;
-aaaig;
-aaaih;
-aaaii;
-aaaij;
-aaaik;
-aaail;
-aaaim;
-aaain;
-aaaio;
-aaaip;
-aaaiq;
-aaair;
-aaais;
-aaait;
-aaaiu;
-aaaiv;
-aaaiw;
-aaaix;
-aaaiy;
-aaaiz;
-aaaja;
-aaajb;
-aaajc;
-aaajd;
-aaaje;
-aaajf;
-aaajg;
-aaajh;
-aaaji;
-aaajj;
-aaajk;
-aaajl;
-aaajm;
-aaajn;
-aaajo;
-aaajp;
-aaajq;
-aaajr;
-aaajs;
-aaajt;
-aaaju;
-aaajv;
-aaajw;
-aaajx;
-aaajy;
-aaajz;
-aaaka;
-aaakb;
-aaakc;
-aaakd;
-aaake;
-aaakf;
-aaakg;
-aaakh;
-aaaki;
-aaakj;
-aaakk;
-aaakl;
-aaakm;
-aaakn;
-aaako;
-aaakp;
-aaakq;
-aaakr;
-aaaks;
-aaakt;
-aaaku;
-aaakv;
-aaakw;
-aaakx;
-aaaky;
-aaakz;
-aaala;
-aaalb;
-aaalc;
-aaald;
-aaale;
-aaalf;
-aaalg;
-aaalh;
-aaali;
-aaalj;
-aaalk;
-aaall;
-aaalm;
-aaaln;
-aaalo;
-aaalp;
-aaalq;
-aaalr;
-aaals;
-aaalt;
-aaalu;
-aaalv;
-aaalw;
-aaalx;
-aaaly;
-aaalz;
-aaama;
-aaamb;
-aaamc;
-aaamd;
-aaame;
-aaamf;
-aaamg;
-aaamh;
-aaami;
-aaamj;
-aaamk;
-aaaml;
-aaamm;
-aaamn;
-aaamo;
-aaamp;
-aaamq;
-aaamr;
-aaams;
-aaamt;
-aaamu;
-aaamv;
-aaamw;
-aaamx;
-aaamy;
-aaamz;
-aaana;
-aaanb;
-aaanc;
-aaand;
-aaane;
-aaanf;
-aaang;
-aaanh;
-aaani;
-aaanj;
-aaank;
-aaanl;
-aaanm;
-aaann;
-aaano;
-aaanp;
-aaanq;
-aaanr;
-aaans;
-aaant;
-aaanu;
-aaanv;
-aaanw;
-aaanx;
-aaany;
-aaanz;
-aaaoa;
-aaaob;
-aaaoc;
-aaaod;
-aaaoe;
-aaaof;
-aaaog;
-aaaoh;
-aaaoi;
-aaaoj;
-aaaok;
-aaaol;
-aaaom;
-aaaon;
-aaaoo;
-aaaop;
-aaaoq;
-aaaor;
-aaaos;
-aaaot;
-aaaou;
-aaaov;
-aaaow;
-aaaox;
-aaaoy;
-aaaoz;
-aaapa;
-aaapb;
-aaapc;
-aaapd;
-aaape;
-aaapf;
-aaapg;
-aaaph;
-aaapi;
-aaapj;
-aaapk;
-aaapl;
-aaapm;
-aaapn;
-aaapo;
-aaapp;
-aaapq;
-aaapr;
-aaaps;
-aaapt;
-aaapu;
-aaapv;
-aaapw;
-aaapx;
-aaapy;
-aaapz;
-aaaqa;
-aaaqb;
-aaaqc;
-aaaqd;
-aaaqe;
-aaaqf;
-aaaqg;
-aaaqh;
-aaaqi;
-aaaqj;
-aaaqk;
-aaaql;
-aaaqm;
-aaaqn;
-aaaqo;
-aaaqp;
-aaaqq;
-aaaqr;
-aaaqs;
-aaaqt;
-aaaqu;
-aaaqv;
-aaaqw;
-aaaqx;
-aaaqy;
-aaaqz;
-aaara;
-aaarb;
-aaarc;
-aaard;
-aaare;
-aaarf;
-aaarg;
-aaarh;
-aaari;
-aaarj;
-aaark;
-aaarl;
-aaarm;
-aaarn;
-aaaro;
-aaarp;
-aaarq;
-aaarr;
-aaars;
-aaart;
-aaaru;
-aaarv;
-aaarw;
-aaarx;
-aaary;
-aaarz;
-aaasa;
-aaasb;
-aaasc;
-aaasd;
-aaase;
-aaasf;
-aaasg;
-aaash;
-aaasi;
-aaasj;
-aaask;
-aaasl;
-aaasm;
-aaasn;
-aaaso;
-aaasp;
-aaasq;
-aaasr;
-aaass;
-aaast;
-aaasu;
-aaasv;
-aaasw;
-aaasx;
-aaasy;
-aaasz;
-aaata;
-aaatb;
-aaatc;
-aaatd;
-aaate;
-aaatf;
-aaatg;
-aaath;
-aaati;
-aaatj;
-aaatk;
-aaatl;
-aaatm;
-aaatn;
-aaato;
-aaatp;
-aaatq;
-aaatr;
-aaats;
-aaatt;
-aaatu;
-aaatv;
-aaatw;
-aaatx;
-aaaty;
-aaatz;
-aaaua;
-aaaub;
-aaauc;
-aaaud;
-aaaue;
-aaauf;
-aaaug;
-aaauh;
-aaaui;
-aaauj;
-aaauk;
-aaaul;
-aaaum;
-aaaun;
-aaauo;
-aaaup;
-aaauq;
-aaaur;
-aaaus;
-aaaut;
-aaauu;
-aaauv;
-aaauw;
-aaaux;
-aaauy;
-aaauz;
-aaava;
-aaavb;
-aaavc;
-aaavd;
-aaave;
-aaavf;
-aaavg;
-aaavh;
-aaavi;
-aaavj;
-aaavk;
-aaavl;
-aaavm;
-aaavn;
-aaavo;
-aaavp;
-aaavq;
-aaavr;
-aaavs;
-aaavt;
-aaavu;
-aaavv;
-aaavw;
-aaavx;
-aaavy;
-aaavz;
-aaawa;
-aaawb;
-aaawc;
-aaawd;
-aaawe;
-aaawf;
-aaawg;
-aaawh;
-aaawi;
-aaawj;
-aaawk;
-aaawl;
-aaawm;
-aaawn;
-aaawo;
-aaawp;
-aaawq;
-aaawr;
-aaaws;
-aaawt;
-aaawu;
-aaawv;
-aaaww;
-aaawx;
-aaawy;
-aaawz;
-aaaxa;
-aaaxb;
-aaaxc;
-aaaxd;
-aaaxe;
-aaaxf;
-aaaxg;
-aaaxh;
-aaaxi;
-aaaxj;
-aaaxk;
-aaaxl;
-aaaxm;
-aaaxn;
-aaaxo;
-aaaxp;
-aaaxq;
-aaaxr;
-aaaxs;
-aaaxt;
-aaaxu;
-aaaxv;
-aaaxw;
-aaaxx;
-aaaxy;
-aaaxz;
-aaaya;
-aaayb;
-aaayc;
-aaayd;
-aaaye;
-aaayf;
-aaayg;
-aaayh;
-aaayi;
-aaayj;
-aaayk;
-aaayl;
-aaaym;
-aaayn;
-aaayo;
-aaayp;
-aaayq;
-aaayr;
-aaays;
-aaayt;
-aaayu;
-aaayv;
-aaayw;
-aaayx;
-aaayy;
-aaayz;
-aaaza;
-aaazb;
-aaazc;
-aaazd;
-aaaze;
-aaazf;
-aaazg;
-aaazh;
-aaazi;
-aaazj;
-aaazk;
-aaazl;
-aaazm;
-aaazn;
-aaazo;
-aaazp;
-aaazq;
-aaazr;
-aaazs;
-aaazt;
-aaazu;
-aaazv;
-aaazw;
-aaazx;
-aaazy;
-aaazz;
-aabaa;
-aabab;
-aabac;
-aabad;
-aabae;
-aabaf;
-aabag;
-aabah;
-aabai;
-aabaj;
-aabak;
-aabal;
-aabam;
-aaban;
-aabao;
-aabap;
-aabaq;
-aabar;
-aabas;
-aabat;
-aabau;
-aabav;
-aabaw;
-aabax;
-aabay;
-aabaz;
-aabba;
-aabbb;
-aabbc;
-aabbd;
-aabbe;
-aabbf;
-aabbg;
-aabbh;
-aabbi;
-aabbj;
-aabbk;
-aabbl;
-aabbm;
-aabbn;
-aabbo;
-aabbp;
-aabbq;
-aabbr;
-aabbs;
-aabbt;
-aabbu;
-aabbv;
-aabbw;
-aabbx;
-aabby;
-aabbz;
-aabca;
-aabcb;
-aabcc;
-aabcd;
-aabce;
-aabcf;
-aabcg;
-aabch;
-aabci;
-aabcj;
-aabck;
-aabcl;
-aabcm;
-aabcn;
-aabco;
-aabcp;
-aabcq;
-aabcr;
-aabcs;
-aabct;
-aabcu;
-aabcv;
-aabcw;
-aabcx;
-aabcy;
-aabcz;
-aabda;
-aabdb;
-aabdc;
-aabdd;
-aabde;
-aabdf;
-aabdg;
-aabdh;
-aabdi;
-aabdj;
-aabdk;
-aabdl;
-aabdm;
-aabdn;
-aabdo;
-aabdp;
-aabdq;
-aabdr;
-aabds;
-aabdt;
-aabdu;
-aabdv;
-aabdw;
-aabdx;
-aabdy;
-aabdz;
-aabea;
-aabeb;
-aabec;
-aabed;
-aabee;
-aabef;
-aabeg;
-aabeh;
-aabei;
-aabej;
-aabek;
-aabel;
-aabem;
-aaben;
-aabeo;
-aabep;
-aabeq;
-aaber;
-aabes;
-aabet;
-aabeu;
-aabev;
-aabew;
-aabex;
-aabey;
-aabez;
-aabfa;
-aabfb;
-aabfc;
-aabfd;
-aabfe;
-aabff;
-aabfg;
-aabfh;
-aabfi;
-aabfj;
-aabfk;
-aabfl;
-aabfm;
-aabfn;
-aabfo;
-aabfp;
-aabfq;
-aabfr;
-aabfs;
-aabft;
-aabfu;
-aabfv;
-aabfw;
-aabfx;
-aabfy;
-aabfz;
-aabga;
-aabgb;
-aabgc;
-aabgd;
-aabge;
-aabgf;
-aabgg;
-aabgh;
-aabgi;
-aabgj;
-aabgk;
-aabgl;
-aabgm;
-aabgn;
-aabgo;
-aabgp;
-aabgq;
-aabgr;
-aabgs;
-aabgt;
-aabgu;
-aabgv;
-aabgw;
-aabgx;
-aabgy;
-aabgz;
-aabha;
-aabhb;
-aabhc;
-aabhd;
-aabhe;
-aabhf;
-aabhg;
-aabhh;
-aabhi;
-aabhj;
-aabhk;
-aabhl;
-aabhm;
-aabhn;
-aabho;
-aabhp;
-aabhq;
-aabhr;
-aabhs;
-aabht;
-aabhu;
-aabhv;
-aabhw;
-aabhx;
-aabhy;
-aabhz;
-aabia;
-aabib;
-aabic;
-aabid;
-aabie;
-aabif;
-aabig;
-aabih;
-aabii;
-aabij;
-aabik;
-aabil;
-aabim;
-aabin;
-aabio;
-aabip;
-aabiq;
-aabir;
-aabis;
-aabit;
-aabiu;
-aabiv;
-aabiw;
-aabix;
-aabiy;
-aabiz;
-aabja;
-aabjb;
-aabjc;
-aabjd;
-aabje;
-aabjf;
-aabjg;
-aabjh;
-aabji;
-aabjj;
-aabjk;
-aabjl;
-aabjm;
-aabjn;
-aabjo;
-aabjp;
-aabjq;
-aabjr;
-aabjs;
-aabjt;
-aabju;
-aabjv;
-aabjw;
-aabjx;
-aabjy;
-aabjz;
-aabka;
-aabkb;
-aabkc;
-aabkd;
-aabke;
-aabkf;
-aabkg;
-aabkh;
-aabki;
-aabkj;
-aabkk;
-aabkl;
-aabkm;
-aabkn;
-aabko;
-aabkp;
-aabkq;
-aabkr;
-aabks;
-aabkt;
-aabku;
-aabkv;
-aabkw;
-aabkx;
-aabky;
-aabkz;
-aabla;
-aablb;
-aablc;
-aabld;
-aable;
-aablf;
-aablg;
-aablh;
-aabli;
-aablj;
-aablk;
-aabll;
-aablm;
-aabln;
-aablo;
-aablp;
-aablq;
-aablr;
-aabls;
-aablt;
-aablu;
-aablv;
-aablw;
-aablx;
-aably;
-aablz;
-aabma;
-aabmb;
-aabmc;
-aabmd;
-aabme;
-aabmf;
-aabmg;
-aabmh;
-aabmi;
-aabmj;
-aabmk;
-aabml;
-aabmm;
-aabmn;
-aabmo;
-aabmp;
-aabmq;
-aabmr;
-aabms;
-aabmt;
-aabmu;
-aabmv;
-aabmw;
-aabmx;
-aabmy;
-aabmz;
-aabna;
-aabnb;
-aabnc;
-aabnd;
-aabne;
-aabnf;
-aabng;
-aabnh;
-aabni;
-aabnj;
-aabnk;
-aabnl;
-aabnm;
-aabnn;
-aabno;
-aabnp;
-aabnq;
-aabnr;
-aabns;
-aabnt;
-aabnu;
-aabnv;
-aabnw;
-aabnx;
-aabny;
-aabnz;
-aaboa;
-aabob;
-aaboc;
-aabod;
-aaboe;
-aabof;
-aabog;
-aaboh;
-aaboi;
-aaboj;
-aabok;
-aabol;
-aabom;
-aabon;
-aaboo;
-aabop;
-aaboq;
-aabor;
-aabos;
-aabot;
-aabou;
-aabov;
-aabow;
-aabox;
-aaboy;
-aaboz;
-aabpa;
-aabpb;
-aabpc;
-aabpd;
-aabpe;
-aabpf;
-aabpg;
-aabph;
-aabpi;
-aabpj;
-aabpk;
-aabpl;
-aabpm;
-aabpn;
-aabpo;
-aabpp;
-aabpq;
-aabpr;
-aabps;
-aabpt;
-aabpu;
-aabpv;
-aabpw;
-aabpx;
-aabpy;
-aabpz;
-aabqa;
-aabqb;
-aabqc;
-aabqd;
-aabqe;
-aabqf;
-aabqg;
-aabqh;
-aabqi;
-aabqj;
-aabqk;
-aabql;
-aabqm;
-aabqn;
-aabqo;
-aabqp;
-aabqq;
-aabqr;
-aabqs;
-aabqt;
-aabqu;
-aabqv;
-aabqw;
-aabqx;
-aabqy;
-aabqz;
-aabra;
-aabrb;
-aabrc;
-aabrd;
-aabre;
-aabrf;
-aabrg;
-aabrh;
-aabri;
-aabrj;
-aabrk;
-aabrl;
-aabrm;
-aabrn;
-aabro;
-aabrp;
-aabrq;
-aabrr;
-aabrs;
-aabrt;
-aabru;
-aabrv;
-aabrw;
-aabrx;
-aabry;
-aabrz;
-aabsa;
-aabsb;
-aabsc;
-aabsd;
-aabse;
-aabsf;
-aabsg;
-aabsh;
-aabsi;
-aabsj;
-aabsk;
-aabsl;
-aabsm;
-aabsn;
-aabso;
-aabsp;
-aabsq;
-aabsr;
-aabss;
-aabst;
-aabsu;
-aabsv;
-aabsw;
-aabsx;
-aabsy;
-aabsz;
-aabta;
-aabtb;
-aabtc;
-aabtd;
-aabte;
-aabtf;
-aabtg;
-aabth;
-aabti;
-aabtj;
-aabtk;
-aabtl;
-aabtm;
-aabtn;
-aabto;
-aabtp;
-aabtq;
-aabtr;
-aabts;
-aabtt;
-aabtu;
-aabtv;
-aabtw;
-aabtx;
-aabty;
-aabtz;
-aabua;
-aabub;
-aabuc;
-aabud;
-aabue;
-aabuf;
-aabug;
-aabuh;
-aabui;
-aabuj;
-aabuk;
-aabul;
-aabum;
-aabun;
-aabuo;
-aabup;
-aabuq;
-aabur;
-aabus;
-aabut;
-aabuu;
-aabuv;
-aabuw;
-aabux;
-aabuy;
-aabuz;
-aabva;
-aabvb;
-aabvc;
-aabvd;
-aabve;
-aabvf;
-aabvg;
-aabvh;
-aabvi;
-aabvj;
-aabvk;
-aabvl;
-aabvm;
-aabvn;
-aabvo;
-aabvp;
-aabvq;
-aabvr;
-aabvs;
-aabvt;
-aabvu;
-aabvv;
-aabvw;
-aabvx;
-aabvy;
-aabvz;
-aabwa;
-aabwb;
-aabwc;
-aabwd;
-aabwe;
-aabwf;
-aabwg;
-aabwh;
-aabwi;
-aabwj;
-aabwk;
-aabwl;
-aabwm;
-aabwn;
-aabwo;
-aabwp;
-aabwq;
-aabwr;
-aabws;
-aabwt;
-aabwu;
-aabwv;
-aabww;
-aabwx;
-aabwy;
-aabwz;
-aabxa;
-aabxb;
-aabxc;
-aabxd;
-aabxe;
-aabxf;
-aabxg;
-aabxh;
-aabxi;
-aabxj;
-aabxk;
-aabxl;
-aabxm;
-aabxn;
-aabxo;
-aabxp;
-aabxq;
-aabxr;
-aabxs;
-aabxt;
-aabxu;
-aabxv;
-aabxw;
-aabxx;
-aabxy;
-aabxz;
-aabya;
-aabyb;
-aabyc;
-aabyd;
-aabye;
-aabyf;
-aabyg;
-aabyh;
-aabyi;
-aabyj;
-aabyk;
-aabyl;
-aabym;
-aabyn;
-aabyo;
-aabyp;
-aabyq;
-aabyr;
-aabys;
-aabyt;
-aabyu;
-aabyv;
-aabyw;
-aabyx;
-aabyy;
-aabyz;
-aabza;
-aabzb;
-aabzc;
-aabzd;
-aabze;
-aabzf;
-aabzg;
-aabzh;
-aabzi;
-aabzj;
-aabzk;
-aabzl;
-aabzm;
-aabzn;
-aabzo;
-aabzp;
-aabzq;
-aabzr;
-aabzs;
-aabzt;
-aabzu;
-aabzv;
-aabzw;
-aabzx;
-aabzy;
-aabzz;
-aacaa;
-aacab;
-aacac;
-aacad;
-aacae;
-aacaf;
-aacag;
-aacah;
-aacai;
-aacaj;
-aacak;
-aacal;
-aacam;
-aacan;
-aacao;
-aacap;
-aacaq;
-aacar;
-aacas;
-aacat;
-aacau;
-aacav;
-aacaw;
-aacax;
-aacay;
-aacaz;
-aacba;
-aacbb;
-aacbc;
-aacbd;
-aacbe;
-aacbf;
-aacbg;
-aacbh;
-aacbi;
-aacbj;
-aacbk;
-aacbl;
-aacbm;
-aacbn;
-aacbo;
-aacbp;
-aacbq;
-aacbr;
-aacbs;
-aacbt;
-aacbu;
-aacbv;
-aacbw;
-aacbx;
-aacby;
-aacbz;
-aacca;
-aaccb;
-aaccc;
-aaccd;
-aacce;
-aaccf;
-aaccg;
-aacch;
-aacci;
-aaccj;
-aacck;
-aaccl;
-aaccm;
-aaccn;
-aacco;
-aaccp;
-aaccq;
-aaccr;
-aaccs;
-aacct;
-aaccu;
-aaccv;
-aaccw;
-aaccx;
-aaccy;
-aaccz;
-aacda;
-aacdb;
-aacdc;
-aacdd;
-aacde;
-aacdf;
-aacdg;
-aacdh;
-aacdi;
-aacdj;
-aacdk;
-aacdl;
-aacdm;
-aacdn;
-aacdo;
-aacdp;
-aacdq;
-aacdr;
-aacds;
-aacdt;
-aacdu;
-aacdv;
-aacdw;
-aacdx;
-aacdy;
-aacdz;
-aacea;
-aaceb;
-aacec;
-aaced;
-aacee;
-aacef;
-aaceg;
-aaceh;
-aacei;
-aacej;
-aacek;
-aacel;
-aacem;
-aacen;
-aaceo;
-aacep;
-aaceq;
-aacer;
-aaces;
-aacet;
-aaceu;
-aacev;
-aacew;
-aacex;
-aacey;
-aacez;
-aacfa;
-aacfb;
-aacfc;
-aacfd;
-aacfe;
-aacff;
-aacfg;
-aacfh;
-aacfi;
-aacfj;
-aacfk;
-aacfl;
-aacfm;
-aacfn;
-aacfo;
-aacfp;
-aacfq;
-aacfr;
-aacfs;
-aacft;
-aacfu;
-aacfv;
-aacfw;
-aacfx;
-aacfy;
-aacfz;
-aacga;
-aacgb;
-aacgc;
-aacgd;
-aacge;
-aacgf;
-aacgg;
-aacgh;
-aacgi;
-aacgj;
-aacgk;
-aacgl;
-aacgm;
-aacgn;
-aacgo;
-aacgp;
-aacgq;
-aacgr;
-aacgs;
-aacgt;
-aacgu;
-aacgv;
-aacgw;
-aacgx;
-aacgy;
-aacgz;
-aacha;
-aachb;
-aachc;
-aachd;
-aache;
-aachf;
-aachg;
-aachh;
-aachi;
-aachj;
-aachk;
-aachl;
-aachm;
-aachn;
-aacho;
-aachp;
-aachq;
-aachr;
-aachs;
-aacht;
-aachu;
-aachv;
-aachw;
-aachx;
-aachy;
-aachz;
-aacia;
-aacib;
-aacic;
-aacid;
-aacie;
-aacif;
-aacig;
-aacih;
-aacii;
-aacij;
-aacik;
-aacil;
-aacim;
-aacin;
-aacio;
-aacip;
-aaciq;
-aacir;
-aacis;
-aacit;
-aaciu;
-aaciv;
-aaciw;
-aacix;
-aaciy;
-aaciz;
-aacja;
-aacjb;
-aacjc;
-aacjd;
-aacje;
-aacjf;
-aacjg;
-aacjh;
-aacji;
-aacjj;
-aacjk;
-aacjl;
-aacjm;
-aacjn;
-aacjo;
-aacjp;
-aacjq;
-aacjr;
-aacjs;
-aacjt;
-aacju;
-aacjv;
-aacjw;
-aacjx;
-aacjy;
-aacjz;
-aacka;
-aackb;
-aackc;
-aackd;
-aacke;
-aackf;
-aackg;
-aackh;
-aacki;
-aackj;
-aackk;
-aackl;
-aackm;
-aackn;
-aacko;
-aackp;
-aackq;
-aackr;
-aacks;
-aackt;
-aacku;
-aackv;
-aackw;
-aackx;
-aacky;
-aackz;
-aacla;
-aaclb;
-aaclc;
-aacld;
-aacle;
-aaclf;
-aaclg;
-aaclh;
-aacli;
-aaclj;
-aaclk;
-aacll;
-aaclm;
-aacln;
-aaclo;
-aaclp;
-aaclq;
-aaclr;
-aacls;
-aaclt;
-aaclu;
-aaclv;
-aaclw;
-aaclx;
-aacly;
-aaclz;
-aacma;
-aacmb;
-aacmc;
-aacmd;
-aacme;
-aacmf;
-aacmg;
-aacmh;
-aacmi;
-aacmj;
-aacmk;
-aacml;
-aacmm;
-aacmn;
-aacmo;
-aacmp;
-aacmq;
-aacmr;
-aacms;
-aacmt;
-aacmu;
-aacmv;
-aacmw;
-aacmx;
-aacmy;
-aacmz;
-aacna;
-aacnb;
-aacnc;
-aacnd;
-aacne;
-aacnf;
-aacng;
-aacnh;
-aacni;
-aacnj;
-aacnk;
-aacnl;
-aacnm;
-aacnn;
-aacno;
-aacnp;
-aacnq;
-aacnr;
-aacns;
-aacnt;
-aacnu;
-aacnv;
-aacnw;
-aacnx;
-aacny;
-aacnz;
-aacoa;
-aacob;
-aacoc;
-aacod;
-aacoe;
-aacof;
-aacog;
-aacoh;
-aacoi;
-aacoj;
-aacok;
-aacol;
-aacom;
-aacon;
-aacoo;
-aacop;
-aacoq;
-aacor;
-aacos;
-aacot;
-aacou;
-aacov;
-aacow;
-aacox;
-aacoy;
-aacoz;
-aacpa;
-aacpb;
-aacpc;
-aacpd;
-aacpe;
-aacpf;
-aacpg;
-aacph;
-aacpi;
-aacpj;
-aacpk;
-aacpl;
-aacpm;
-aacpn;
-aacpo;
-aacpp;
-aacpq;
-aacpr;
-aacps;
-aacpt;
-aacpu;
-aacpv;
-aacpw;
-aacpx;
-aacpy;
-aacpz;
-aacqa;
-aacqb;
-aacqc;
-aacqd;
-aacqe;
-aacqf;
-aacqg;
-aacqh;
-aacqi;
-aacqj;
-aacqk;
-aacql;
-aacqm;
-aacqn;
-aacqo;
-aacqp;
-aacqq;
-aacqr;
-aacqs;
-aacqt;
-aacqu;
-aacqv;
-aacqw;
-aacqx;
-aacqy;
-aacqz;
-aacra;
-aacrb;
-aacrc;
-aacrd;
-aacre;
-aacrf;
-aacrg;
-aacrh;
-aacri;
-aacrj;
-aacrk;
-aacrl;
-aacrm;
-aacrn;
-aacro;
-aacrp;
-aacrq;
-aacrr;
-aacrs;
-aacrt;
-aacru;
-aacrv;
-aacrw;
-aacrx;
-aacry;
-aacrz;
-aacsa;
-aacsb;
-aacsc;
-aacsd;
-aacse;
-aacsf;
-aacsg;
-aacsh;
-aacsi;
-aacsj;
-aacsk;
-aacsl;
-aacsm;
-aacsn;
-aacso;
-aacsp;
-aacsq;
-aacsr;
-aacss;
-aacst;
-aacsu;
-aacsv;
-aacsw;
-aacsx;
-aacsy;
-aacsz;
-aacta;
-aactb;
-aactc;
-aactd;
-aacte;
-aactf;
-aactg;
-aacth;
-aacti;
-aactj;
-aactk;
-aactl;
-aactm;
-aactn;
-aacto;
-aactp;
-aactq;
-aactr;
-aacts;
-aactt;
-aactu;
-aactv;
-aactw;
-aactx;
-aacty;
-aactz;
-aacua;
-aacub;
-aacuc;
-aacud;
-aacue;
-aacuf;
-aacug;
-aacuh;
-aacui;
-aacuj;
-aacuk;
-aacul;
-aacum;
-aacun;
-aacuo;
-aacup;
-aacuq;
-aacur;
-aacus;
-aacut;
-aacuu;
-aacuv;
-aacuw;
-aacux;
-aacuy;
-aacuz;
-aacva;
-aacvb;
-aacvc;
-aacvd;
-aacve;
-aacvf;
-aacvg;
-aacvh;
-aacvi;
-aacvj;
-aacvk;
-aacvl;
-aacvm;
-aacvn;
-aacvo;
-aacvp;
-aacvq;
-aacvr;
-aacvs;
-aacvt;
-aacvu;
-aacvv;
-aacvw;
-aacvx;
-aacvy;
-aacvz;
-aacwa;
-aacwb;
-aacwc;
-aacwd;
-aacwe;
-aacwf;
-aacwg;
-aacwh;
-aacwi;
-aacwj;
-aacwk;
-aacwl;
-aacwm;
-aacwn;
-aacwo;
-aacwp;
-aacwq;
-aacwr;
-aacws;
-aacwt;
-aacwu;
-aacwv;
-aacww;
-aacwx;
-aacwy;
-aacwz;
-aacxa;
-aacxb;
-aacxc;
-aacxd;
-aacxe;
-aacxf;
-aacxg;
-aacxh;
-aacxi;
-aacxj;
-aacxk;
-aacxl;
-aacxm;
-aacxn;
-aacxo;
-aacxp;
-aacxq;
-aacxr;
-aacxs;
-aacxt;
-aacxu;
-aacxv;
-aacxw;
-aacxx;
-aacxy;
-aacxz;
-aacya;
-aacyb;
-aacyc;
-aacyd;
-aacye;
-aacyf;
-aacyg;
-aacyh;
-aacyi;
-aacyj;
-aacyk;
-aacyl;
-aacym;
-aacyn;
-aacyo;
-aacyp;
-aacyq;
-aacyr;
-aacys;
-aacyt;
-aacyu;
-aacyv;
-aacyw;
-aacyx;
-aacyy;
-aacyz;
-aacza;
-aaczb;
-aaczc;
-aaczd;
-aacze;
-aaczf;
-aaczg;
-aaczh;
-aaczi;
-aaczj;
-aaczk;
-aaczl;
-aaczm;
-aaczn;
-aaczo;
-aaczp;
-aaczq;
-aaczr;
-aaczs;
-aaczt;
-aaczu;
-aaczv;
-aaczw;
-aaczx;
-aaczy;
-aaczz;
-aadaa;
-aadab;
-aadac;
-aadad;
-aadae;
-aadaf;
-aadag;
-aadah;
-aadai;
-aadaj;
-aadak;
-aadal;
-aadam;
-aadan;
-aadao;
-aadap;
-aadaq;
-aadar;
-aadas;
-aadat;
-aadau;
-aadav;
-aadaw;
-aadax;
-aaday;
-aadaz;
-aadba;
-aadbb;
-aadbc;
-aadbd;
-aadbe;
-aadbf;
-aadbg;
-aadbh;
-aadbi;
-aadbj;
-aadbk;
-aadbl;
-aadbm;
-aadbn;
-aadbo;
-aadbp;
-aadbq;
-aadbr;
-aadbs;
-aadbt;
-aadbu;
-aadbv;
-aadbw;
-aadbx;
-aadby;
-aadbz;
-aadca;
-aadcb;
-aadcc;
-aadcd;
-aadce;
-aadcf;
-aadcg;
-aadch;
-aadci;
-aadcj;
-aadck;
-aadcl;
-aadcm;
-aadcn;
-aadco;
-aadcp;
-aadcq;
-aadcr;
-aadcs;
-aadct;
-aadcu;
-aadcv;
-aadcw;
-aadcx;
-aadcy;
-aadcz;
-aadda;
-aaddb;
-aaddc;
-aaddd;
-aadde;
-aaddf;
-aaddg;
-aaddh;
-aaddi;
-aaddj;
-aaddk;
-aaddl;
-aaddm;
-aaddn;
-aaddo;
-aaddp;
-aaddq;
-aaddr;
-aadds;
-aaddt;
-aaddu;
-aaddv;
-aaddw;
-aaddx;
-aaddy;
-aaddz;
-aadea;
-aadeb;
-aadec;
-aaded;
-aadee;
-aadef;
-aadeg;
-aadeh;
-aadei;
-aadej;
-aadek;
-aadel;
-aadem;
-aaden;
-aadeo;
-aadep;
-aadeq;
-aader;
-aades;
-aadet;
-aadeu;
-aadev;
-aadew;
-aadex;
-aadey;
-aadez;
-aadfa;
-aadfb;
-aadfc;
-aadfd;
-aadfe;
-aadff;
-aadfg;
-aadfh;
-aadfi;
-aadfj;
-aadfk;
-aadfl;
-aadfm;
-aadfn;
-aadfo;
-aadfp;
-aadfq;
-aadfr;
-aadfs;
-aadft;
-aadfu;
-aadfv;
-aadfw;
-aadfx;
-aadfy;
-aadfz;
-aadga;
-aadgb;
-aadgc;
-aadgd;
-aadge;
-aadgf;
-aadgg;
-aadgh;
-aadgi;
-aadgj;
-aadgk;
-aadgl;
-aadgm;
-aadgn;
-aadgo;
-aadgp;
-aadgq;
-aadgr;
-aadgs;
-aadgt;
-aadgu;
-aadgv;
-aadgw;
-aadgx;
-aadgy;
-aadgz;
-aadha;
-aadhb;
-aadhc;
-aadhd;
-aadhe;
-aadhf;
-aadhg;
-aadhh;
-aadhi;
-aadhj;
-aadhk;
-aadhl;
-aadhm;
-aadhn;
-aadho;
-aadhp;
-aadhq;
-aadhr;
-aadhs;
-aadht;
-aadhu;
-aadhv;
-aadhw;
-aadhx;
-aadhy;
-aadhz;
-aadia;
-aadib;
-aadic;
-aadid;
-aadie;
-aadif;
-aadig;
-aadih;
-aadii;
-aadij;
-aadik;
-aadil;
-aadim;
-aadin;
-aadio;
-aadip;
-aadiq;
-aadir;
-aadis;
-aadit;
-aadiu;
-aadiv;
-aadiw;
-aadix;
-aadiy;
-aadiz;
-aadja;
-aadjb;
-aadjc;
-aadjd;
-aadje;
-aadjf;
-aadjg;
-aadjh;
-aadji;
-aadjj;
-aadjk;
-aadjl;
-aadjm;
-aadjn;
-aadjo;
-aadjp;
-aadjq;
-aadjr;
-aadjs;
-aadjt;
-aadju;
-aadjv;
-aadjw;
-aadjx;
-aadjy;
-aadjz;
-aadka;
-aadkb;
-aadkc;
-aadkd;
-aadke;
-aadkf;
-aadkg;
-aadkh;
-aadki;
-aadkj;
-aadkk;
-aadkl;
-aadkm;
-aadkn;
-aadko;
-aadkp;
-aadkq;
-aadkr;
-aadks;
-aadkt;
-aadku;
-aadkv;
-aadkw;
-aadkx;
-aadky;
-aadkz;
-aadla;
-aadlb;
-aadlc;
-aadld;
-aadle;
-aadlf;
-aadlg;
-aadlh;
-aadli;
-aadlj;
-aadlk;
-aadll;
-aadlm;
-aadln;
-aadlo;
-aadlp;
-aadlq;
-aadlr;
-aadls;
-aadlt;
-aadlu;
-aadlv;
-aadlw;
-aadlx;
-aadly;
-aadlz;
-aadma;
-aadmb;
-aadmc;
-aadmd;
-aadme;
-aadmf;
-aadmg;
-aadmh;
-aadmi;
-aadmj;
-aadmk;
-aadml;
-aadmm;
-aadmn;
-aadmo;
-aadmp;
-aadmq;
-aadmr;
-aadms;
-aadmt;
-aadmu;
-aadmv;
-aadmw;
-aadmx;
-aadmy;
-aadmz;
-aadna;
-aadnb;
-aadnc;
-aadnd;
-aadne;
-aadnf;
-aadng;
-aadnh;
-aadni;
-aadnj;
-aadnk;
-aadnl;
-aadnm;
-aadnn;
-aadno;
-aadnp;
-aadnq;
-aadnr;
-aadns;
-aadnt;
-aadnu;
-aadnv;
-aadnw;
-aadnx;
-aadny;
-aadnz;
-aadoa;
-aadob;
-aadoc;
-aadod;
-aadoe;
-aadof;
-aadog;
-aadoh;
-aadoi;
-aadoj;
-aadok;
-aadol;
-aadom;
-aadon;
-aadoo;
-aadop;
-aadoq;
-aador;
-aados;
-aadot;
-aadou;
-aadov;
-aadow;
-aadox;
-aadoy;
-aadoz;
-aadpa;
-aadpb;
-aadpc;
-aadpd;
-aadpe;
-aadpf;
-aadpg;
-aadph;
-aadpi;
-aadpj;
-aadpk;
-aadpl;
-aadpm;
-aadpn;
-aadpo;
-aadpp;
-aadpq;
-aadpr;
-aadps;
-aadpt;
-aadpu;
-aadpv;
-aadpw;
-aadpx;
-aadpy;
-aadpz;
-aadqa;
-aadqb;
-aadqc;
-aadqd;
-aadqe;
-aadqf;
-aadqg;
-aadqh;
-aadqi;
-aadqj;
-aadqk;
-aadql;
-aadqm;
-aadqn;
-aadqo;
-aadqp;
-aadqq;
-aadqr;
-aadqs;
-aadqt;
-aadqu;
-aadqv;
-aadqw;
-aadqx;
-aadqy;
-aadqz;
-aadra;
-aadrb;
-aadrc;
-aadrd;
-aadre;
-aadrf;
-aadrg;
-aadrh;
-aadri;
-aadrj;
-aadrk;
-aadrl;
-aadrm;
-aadrn;
-aadro;
-aadrp;
-aadrq;
-aadrr;
-aadrs;
-aadrt;
-aadru;
-aadrv;
-aadrw;
-aadrx;
-aadry;
-aadrz;
-aadsa;
-aadsb;
-aadsc;
-aadsd;
-aadse;
-aadsf;
-aadsg;
-aadsh;
-aadsi;
-aadsj;
-aadsk;
-aadsl;
-aadsm;
-aadsn;
-aadso;
-aadsp;
-aadsq;
-aadsr;
-aadss;
-aadst;
-aadsu;
-aadsv;
-aadsw;
-aadsx;
-aadsy;
-aadsz;
-aadta;
-aadtb;
-aadtc;
-aadtd;
-aadte;
-aadtf;
-aadtg;
-aadth;
-aadti;
-aadtj;
-aadtk;
-aadtl;
-aadtm;
-aadtn;
-aadto;
-aadtp;
-aadtq;
-aadtr;
-aadts;
-aadtt;
-aadtu;
-aadtv;
-aadtw;
-aadtx;
-aadty;
-aadtz;
-aadua;
-aadub;
-aaduc;
-aadud;
-aadue;
-aaduf;
-aadug;
-aaduh;
-aadui;
-aaduj;
-aaduk;
-aadul;
-aadum;
-aadun;
-aaduo;
-aadup;
-aaduq;
-aadur;
-aadus;
-aadut;
-aaduu;
-aaduv;
-aaduw;
-aadux;
-aaduy;
-aaduz;
-aadva;
-aadvb;
-aadvc;
-aadvd;
-aadve;
-aadvf;
-aadvg;
-aadvh;
-aadvi;
-aadvj;
-aadvk;
-aadvl;
-aadvm;
-aadvn;
-aadvo;
-aadvp;
-aadvq;
-aadvr;
-aadvs;
-aadvt;
-aadvu;
-aadvv;
-aadvw;
-aadvx;
-aadvy;
-aadvz;
-aadwa;
-aadwb;
-aadwc;
-aadwd;
-aadwe;
-aadwf;
-aadwg;
-aadwh;
-aadwi;
-aadwj;
-aadwk;
-aadwl;
-aadwm;
-aadwn;
-aadwo;
-aadwp;
-aadwq;
-aadwr;
-aadws;
-aadwt;
-aadwu;
-aadwv;
-aadww;
-aadwx;
-aadwy;
-aadwz;
-aadxa;
-aadxb;
-aadxc;
-aadxd;
-aadxe;
-aadxf;
-aadxg;
-aadxh;
-aadxi;
-aadxj;
-aadxk;
-aadxl;
-aadxm;
-aadxn;
-aadxo;
-aadxp;
-aadxq;
-aadxr;
-aadxs;
-aadxt;
-aadxu;
-aadxv;
-aadxw;
-aadxx;
-aadxy;
-aadxz;
-aadya;
-aadyb;
-aadyc;
-aadyd;
-aadye;
-aadyf;
-aadyg;
-aadyh;
-aadyi;
-aadyj;
-aadyk;
-aadyl;
-aadym;
-aadyn;
-aadyo;
-aadyp;
-aadyq;
-aadyr;
-aadys;
-aadyt;
-aadyu;
-aadyv;
-aadyw;
-aadyx;
-aadyy;
-aadyz;
-aadza;
-aadzb;
-aadzc;
-aadzd;
-aadze;
-aadzf;
-aadzg;
-aadzh;
-aadzi;
-aadzj;
-aadzk;
-aadzl;
-aadzm;
-aadzn;
-aadzo;
-aadzp;
-aadzq;
-aadzr;
-aadzs;
-aadzt;
-aadzu;
-aadzv;
-aadzw;
-aadzx;
-aadzy;
-aadzz;
-aaeaa;
-aaeab;
-aaeac;
-aaead;
-aaeae;
-aaeaf;
-aaeag;
-aaeah;
-aaeai;
-aaeaj;
-aaeak;
-aaeal;
-aaeam;
-aaean;
-aaeao;
-aaeap;
-aaeaq;
-aaear;
-aaeas;
-aaeat;
-aaeau;
-aaeav;
-aaeaw;
-aaeax;
-aaeay;
-aaeaz;
-aaeba;
-aaebb;
-aaebc;
-aaebd;
-aaebe;
-aaebf;
-aaebg;
-aaebh;
-aaebi;
-aaebj;
-aaebk;
-aaebl;
-aaebm;
-aaebn;
-aaebo;
-aaebp;
-aaebq;
-aaebr;
-aaebs;
-aaebt;
-aaebu;
-aaebv;
-aaebw;
-aaebx;
-aaeby;
-aaebz;
-aaeca;
-aaecb;
-aaecc;
-aaecd;
-aaece;
-aaecf;
-aaecg;
-aaech;
-aaeci;
-aaecj;
-aaeck;
-aaecl;
-aaecm;
-aaecn;
-aaeco;
-aaecp;
-aaecq;
-aaecr;
-aaecs;
-aaect;
-aaecu;
-aaecv;
-aaecw;
-aaecx;
-aaecy;
-aaecz;
-aaeda;
-aaedb;
-aaedc;
-aaedd;
-aaede;
-aaedf;
-aaedg;
-aaedh;
-aaedi;
-aaedj;
-aaedk;
-aaedl;
-aaedm;
-aaedn;
-aaedo;
-aaedp;
-aaedq;
-aaedr;
-aaeds;
-aaedt;
-aaedu;
-aaedv;
-aaedw;
-aaedx;
-aaedy;
-aaedz;
-aaeea;
-aaeeb;
-aaeec;
-aaeed;
-aaeee;
-aaeef;
-aaeeg;
-aaeeh;
-aaeei;
-aaeej;
-aaeek;
-aaeel;
-aaeem;
-aaeen;
-aaeeo;
-aaeep;
-aaeeq;
-aaeer;
-aaees;
-aaeet;
-aaeeu;
-aaeev;
-aaeew;
-aaeex;
-aaeey;
-aaeez;
-aaefa;
-aaefb;
-aaefc;
-aaefd;
-aaefe;
-aaeff;
-aaefg;
-aaefh;
-aaefi;
-aaefj;
-aaefk;
-aaefl;
-aaefm;
-aaefn;
-aaefo;
-aaefp;
-aaefq;
-aaefr;
-aaefs;
-aaeft;
-aaefu;
-aaefv;
-aaefw;
-aaefx;
-aaefy;
-aaefz;
-aaega;
-aaegb;
-aaegc;
-aaegd;
-aaege;
-aaegf;
-aaegg;
-aaegh;
-aaegi;
-aaegj;
-aaegk;
-aaegl;
-aaegm;
-aaegn;
-aaego;
-aaegp;
-aaegq;
-aaegr;
-aaegs;
-aaegt;
-aaegu;
-aaegv;
-aaegw;
-aaegx;
-aaegy;
-aaegz;
-aaeha;
-aaehb;
-aaehc;
-aaehd;
-aaehe;
-aaehf;
-aaehg;
-aaehh;
-aaehi;
-aaehj;
-aaehk;
-aaehl;
-aaehm;
-aaehn;
-aaeho;
-aaehp;
-aaehq;
-aaehr;
-aaehs;
-aaeht;
-aaehu;
-aaehv;
-aaehw;
-aaehx;
-aaehy;
-aaehz;
-aaeia;
-aaeib;
-aaeic;
-aaeid;
-aaeie;
-aaeif;
-aaeig;
-aaeih;
-aaeii;
-aaeij;
-aaeik;
-aaeil;
-aaeim;
-aaein;
-aaeio;
-aaeip;
-aaeiq;
-aaeir;
-aaeis;
-aaeit;
-aaeiu;
-aaeiv;
-aaeiw;
-aaeix;
-aaeiy;
-aaeiz;
-aaeja;
-aaejb;
-aaejc;
-aaejd;
-aaeje;
-aaejf;
-aaejg;
-aaejh;
-aaeji;
-aaejj;
-aaejk;
-aaejl;
-aaejm;
-aaejn;
-aaejo;
-aaejp;
-aaejq;
-aaejr;
-aaejs;
-aaejt;
-aaeju;
-aaejv;
-aaejw;
-aaejx;
-aaejy;
-aaejz;
-aaeka;
-aaekb;
-aaekc;
-aaekd;
-aaeke;
-aaekf;
-aaekg;
-aaekh;
-aaeki;
-aaekj;
-aaekk;
-aaekl;
-aaekm;
-aaekn;
-aaeko;
-aaekp;
-aaekq;
-aaekr;
-aaeks;
-aaekt;
-aaeku;
-aaekv;
-aaekw;
-aaekx;
-aaeky;
-aaekz;
-aaela;
-aaelb;
-aaelc;
-aaeld;
-aaele;
-aaelf;
-aaelg;
-aaelh;
-aaeli;
-aaelj;
-aaelk;
-aaell;
-aaelm;
-aaeln;
-aaelo;
-aaelp;
-aaelq;
-aaelr;
-aaels;
-aaelt;
-aaelu;
-aaelv;
-aaelw;
-aaelx;
-aaely;
-aaelz;
-aaema;
-aaemb;
-aaemc;
-aaemd;
-aaeme;
-aaemf;
-aaemg;
-aaemh;
-aaemi;
-aaemj;
-aaemk;
-aaeml;
-aaemm;
-aaemn;
-aaemo;
-aaemp;
-aaemq;
-aaemr;
-aaems;
-aaemt;
-aaemu;
-aaemv;
-aaemw;
-aaemx;
-aaemy;
-aaemz;
-aaena;
-aaenb;
-aaenc;
-aaend;
-aaene;
-aaenf;
-aaeng;
-aaenh;
-aaeni;
-aaenj;
-aaenk;
-aaenl;
-aaenm;
-aaenn;
-aaeno;
-aaenp;
-aaenq;
-aaenr;
-aaens;
-aaent;
-aaenu;
-aaenv;
-aaenw;
-aaenx;
-aaeny;
-aaenz;
-aaeoa;
-aaeob;
-aaeoc;
-aaeod;
-aaeoe;
-aaeof;
-aaeog;
-aaeoh;
-aaeoi;
-aaeoj;
-aaeok;
-aaeol;
-aaeom;
-aaeon;
-aaeoo;
-aaeop;
-aaeoq;
-aaeor;
-aaeos;
-aaeot;
-aaeou;
-aaeov;
-aaeow;
-aaeox;
-aaeoy;
-aaeoz;
-aaepa;
-aaepb;
-aaepc;
-aaepd;
-aaepe;
-aaepf;
-aaepg;
-aaeph;
-aaepi;
-aaepj;
-aaepk;
-aaepl;
-aaepm;
-aaepn;
-aaepo;
-aaepp;
-aaepq;
-aaepr;
-aaeps;
-aaept;
-aaepu;
-aaepv;
-aaepw;
-aaepx;
-aaepy;
-aaepz;
-aaeqa;
-aaeqb;
-aaeqc;
-aaeqd;
-aaeqe;
-aaeqf;
-aaeqg;
-aaeqh;
-aaeqi;
-aaeqj;
-aaeqk;
-aaeql;
-aaeqm;
-aaeqn;
-aaeqo;
-aaeqp;
-aaeqq;
-aaeqr;
-aaeqs;
-aaeqt;
-aaequ;
-aaeqv;
-aaeqw;
-aaeqx;
-aaeqy;
-aaeqz;
-aaera;
-aaerb;
-aaerc;
-aaerd;
-aaere;
-aaerf;
-aaerg;
-aaerh;
-aaeri;
-aaerj;
-aaerk;
-aaerl;
-aaerm;
-aaern;
-aaero;
-aaerp;
-aaerq;
-aaerr;
-aaers;
-aaert;
-aaeru;
-aaerv;
-aaerw;
-aaerx;
-aaery;
-aaerz;
-aaesa;
-aaesb;
-aaesc;
-aaesd;
-aaese;
-aaesf;
-aaesg;
-aaesh;
-aaesi;
-aaesj;
-aaesk;
-aaesl;
-aaesm;
-aaesn;
-aaeso;
-aaesp;
-aaesq;
-aaesr;
-aaess;
-aaest;
-aaesu;
-aaesv;
-aaesw;
-aaesx;
-aaesy;
-aaesz;
-aaeta;
-aaetb;
-aaetc;
-aaetd;
-aaete;
-aaetf;
-aaetg;
-aaeth;
-aaeti;
-aaetj;
-aaetk;
-aaetl;
-aaetm;
-aaetn;
-aaeto;
-aaetp;
-aaetq;
-aaetr;
-aaets;
-aaett;
-aaetu;
-aaetv;
-aaetw;
-aaetx;
-aaety;
-aaetz;
-aaeua;
-aaeub;
-aaeuc;
-aaeud;
-aaeue;
-aaeuf;
-aaeug;
-aaeuh;
-aaeui;
-aaeuj;
-aaeuk;
-aaeul;
-aaeum;
-aaeun;
-aaeuo;
-aaeup;
-aaeuq;
-aaeur;
-aaeus;
-aaeut;
-aaeuu;
-aaeuv;
-aaeuw;
-aaeux;
-aaeuy;
-aaeuz;
-aaeva;
-aaevb;
-aaevc;
-aaevd;
-aaeve;
-aaevf;
-aaevg;
-aaevh;
-aaevi;
-aaevj;
-aaevk;
-aaevl;
-aaevm;
-aaevn;
-aaevo;
-aaevp;
-aaevq;
-aaevr;
-aaevs;
-aaevt;
-aaevu;
-aaevv;
-aaevw;
-aaevx;
-aaevy;
-aaevz;
-aaewa;
-aaewb;
-aaewc;
-aaewd;
-aaewe;
-aaewf;
-aaewg;
-aaewh;
-aaewi;
-aaewj;
-aaewk;
-aaewl;
-aaewm;
-aaewn;
-aaewo;
-aaewp;
-aaewq;
-aaewr;
-aaews;
-aaewt;
-aaewu;
-aaewv;
-aaeww;
-aaewx;
-aaewy;
-aaewz;
-aaexa;
-aaexb;
-aaexc;
-aaexd;
-aaexe;
-aaexf;
-aaexg;
-aaexh;
-aaexi;
-aaexj;
-aaexk;
-aaexl;
-aaexm;
-aaexn;
-aaexo;
-aaexp;
-aaexq;
-aaexr;
-aaexs;
-aaext;
-aaexu;
-aaexv;
-aaexw;
-aaexx;
-aaexy;
-aaexz;
-aaeya;
-aaeyb;
-aaeyc;
-aaeyd;
-aaeye;
-aaeyf;
-aaeyg;
-aaeyh;
-aaeyi;
-aaeyj;
-aaeyk;
-aaeyl;
-aaeym;
-aaeyn;
-aaeyo;
-aaeyp;
-aaeyq;
-aaeyr;
-aaeys;
-aaeyt;
-aaeyu;
-aaeyv;
-aaeyw;
-aaeyx;
-aaeyy;
-aaeyz;
-aaeza;
-aaezb;
-aaezc;
-aaezd;
-aaeze;
-aaezf;
-aaezg;
-aaezh;
-aaezi;
-aaezj;
-aaezk;
-aaezl;
-aaezm;
-aaezn;
-aaezo;
-aaezp;
-aaezq;
-aaezr;
-aaezs;
-aaezt;
-aaezu;
-aaezv;
-aaezw;
-aaezx;
-aaezy;
-aaezz;
-aafaa;
-aafab;
-aafac;
-aafad;
-aafae;
-aafaf;
-aafag;
-aafah;
-aafai;
-aafaj;
-aafak;
-aafal;
-aafam;
-aafan;
-aafao;
-aafap;
-aafaq;
-aafar;
-aafas;
-aafat;
-aafau;
-aafav;
-aafaw;
-aafax;
-aafay;
-aafaz;
-aafba;
-aafbb;
-aafbc;
-aafbd;
-aafbe;
-aafbf;
-aafbg;
-aafbh;
-aafbi;
-aafbj;
-aafbk;
-aafbl;
-aafbm;
-aafbn;
-aafbo;
-aafbp;
-aafbq;
-aafbr;
-aafbs;
-aafbt;
-aafbu;
-aafbv;
-aafbw;
-aafbx;
-aafby;
-aafbz;
-aafca;
-aafcb;
-aafcc;
-aafcd;
-aafce;
-aafcf;
-aafcg;
-aafch;
-aafci;
-aafcj;
-aafck;
-aafcl;
-aafcm;
-aafcn;
-aafco;
-aafcp;
-aafcq;
-aafcr;
-aafcs;
-aafct;
-aafcu;
-aafcv;
-aafcw;
-aafcx;
-aafcy;
-aafcz;
-aafda;
-aafdb;
-aafdc;
-aafdd;
-aafde;
-aafdf;
-aafdg;
-aafdh;
-aafdi;
-aafdj;
-aafdk;
-aafdl;
-aafdm;
-aafdn;
-aafdo;
-aafdp;
-aafdq;
-aafdr;
-aafds;
-aafdt;
-aafdu;
-aafdv;
-aafdw;
-aafdx;
-aafdy;
-aafdz;
-aafea;
-aafeb;
-aafec;
-aafed;
-aafee;
-aafef;
-aafeg;
-aafeh;
-aafei;
-aafej;
-aafek;
-aafel;
-aafem;
-aafen;
-aafeo;
-aafep;
-aafeq;
-aafer;
-aafes;
-aafet;
-aafeu;
-aafev;
-aafew;
-aafex;
-aafey;
-aafez;
-aaffa;
-aaffb;
-aaffc;
-aaffd;
-aaffe;
-aafff;
-aaffg;
-aaffh;
-aaffi;
-aaffj;
-aaffk;
-aaffl;
-aaffm;
-aaffn;
-aaffo;
-aaffp;
-aaffq;
-aaffr;
-aaffs;
-aafft;
-aaffu;
-aaffv;
-aaffw;
-aaffx;
-aaffy;
-aaffz;
-aafga;
-aafgb;
-aafgc;
-aafgd;
-aafge;
-aafgf;
-aafgg;
-aafgh;
-aafgi;
-aafgj;
-aafgk;
-aafgl;
-aafgm;
-aafgn;
-aafgo;
-aafgp;
-aafgq;
-aafgr;
-aafgs;
-aafgt;
-aafgu;
-aafgv;
-aafgw;
-aafgx;
-aafgy;
-aafgz;
-aafha;
-aafhb;
-aafhc;
-aafhd;
-aafhe;
-aafhf;
-aafhg;
-aafhh;
-aafhi;
-aafhj;
-aafhk;
-aafhl;
-aafhm;
-aafhn;
-aafho;
-aafhp;
-aafhq;
-aafhr;
-aafhs;
-aafht;
-aafhu;
-aafhv;
-aafhw;
-aafhx;
-aafhy;
-aafhz;
-aafia;
-aafib;
-aafic;
-aafid;
-aafie;
-aafif;
-aafig;
-aafih;
-aafii;
-aafij;
-aafik;
-aafil;
-aafim;
-aafin;
-aafio;
-aafip;
-aafiq;
-aafir;
-aafis;
-aafit;
-aafiu;
-aafiv;
-aafiw;
-aafix;
-aafiy;
-aafiz;
-aafja;
-aafjb;
-aafjc;
-aafjd;
-aafje;
-aafjf;
-aafjg;
-aafjh;
-aafji;
-aafjj;
-aafjk;
-aafjl;
-aafjm;
-aafjn;
-aafjo;
-aafjp;
-aafjq;
-aafjr;
-aafjs;
-aafjt;
-aafju;
-aafjv;
-aafjw;
-aafjx;
-aafjy;
-aafjz;
-aafka;
-aafkb;
-aafkc;
-aafkd;
-aafke;
-aafkf;
-aafkg;
-aafkh;
-aafki;
-aafkj;
-aafkk;
-aafkl;
-aafkm;
-aafkn;
-aafko;
-aafkp;
-aafkq;
-aafkr;
-aafks;
-aafkt;
-aafku;
-aafkv;
-aafkw;
-aafkx;
-aafky;
-aafkz;
-aafla;
-aaflb;
-aaflc;
-aafld;
-aafle;
-aaflf;
-aaflg;
-aaflh;
-aafli;
-aaflj;
-aaflk;
-aafll;
-aaflm;
-aafln;
-aaflo;
-aaflp;
-aaflq;
-aaflr;
-aafls;
-aaflt;
-aaflu;
-aaflv;
-aaflw;
-aaflx;
-aafly;
-aaflz;
-aafma;
-aafmb;
-aafmc;
-aafmd;
-aafme;
-aafmf;
-aafmg;
-aafmh;
-aafmi;
-aafmj;
-aafmk;
-aafml;
-aafmm;
-aafmn;
-aafmo;
-aafmp;
-aafmq;
-aafmr;
-aafms;
-aafmt;
-aafmu;
-aafmv;
-aafmw;
-aafmx;
-aafmy;
-aafmz;
-aafna;
-aafnb;
-aafnc;
-aafnd;
-aafne;
-aafnf;
-aafng;
-aafnh;
-aafni;
-aafnj;
-aafnk;
-aafnl;
-aafnm;
-aafnn;
-aafno;
-aafnp;
-aafnq;
-aafnr;
-aafns;
-aafnt;
-aafnu;
-aafnv;
-aafnw;
-aafnx;
-aafny;
-aafnz;
-aafoa;
-aafob;
-aafoc;
-aafod;
-aafoe;
-aafof;
-aafog;
-aafoh;
-aafoi;
-aafoj;
-aafok;
-aafol;
-aafom;
-aafon;
-aafoo;
-aafop;
-aafoq;
-aafor;
-aafos;
-aafot;
-aafou;
-aafov;
-aafow;
-aafox;
-aafoy;
-aafoz;
-aafpa;
-aafpb;
-aafpc;
-aafpd;
-aafpe;
-aafpf;
-aafpg;
-aafph;
-aafpi;
-aafpj;
-aafpk;
-aafpl;
-aafpm;
-aafpn;
-aafpo;
-aafpp;
-aafpq;
-aafpr;
-aafps;
-aafpt;
-aafpu;
-aafpv;
-aafpw;
-aafpx;
-aafpy;
-aafpz;
-aafqa;
-aafqb;
-aafqc;
-aafqd;
-aafqe;
-aafqf;
-aafqg;
-aafqh;
-aafqi;
-aafqj;
-aafqk;
-aafql;
-aafqm;
-aafqn;
-aafqo;
-aafqp;
-aafqq;
-aafqr;
-aafqs;
-aafqt;
-aafqu;
-aafqv;
-aafqw;
-aafqx;
-aafqy;
-aafqz;
-aafra;
-aafrb;
-aafrc;
-aafrd;
-aafre;
-aafrf;
-aafrg;
-aafrh;
-aafri;
-aafrj;
-aafrk;
-aafrl;
-aafrm;
-aafrn;
-aafro;
-aafrp;
-aafrq;
-aafrr;
-aafrs;
-aafrt;
-aafru;
-aafrv;
-aafrw;
-aafrx;
-aafry;
-aafrz;
-aafsa;
-aafsb;
-aafsc;
-aafsd;
-aafse;
-aafsf;
-aafsg;
-aafsh;
-aafsi;
-aafsj;
-aafsk;
-aafsl;
-aafsm;
-aafsn;
-aafso;
-aafsp;
-aafsq;
-aafsr;
-aafss;
-aafst;
-aafsu;
-aafsv;
-aafsw;
-aafsx;
-aafsy;
-aafsz;
-aafta;
-aaftb;
-aaftc;
-aaftd;
-aafte;
-aaftf;
-aaftg;
-aafth;
-aafti;
-aaftj;
-aaftk;
-aaftl;
-aaftm;
-aaftn;
-aafto;
-aaftp;
-aaftq;
-aaftr;
-aafts;
-aaftt;
-aaftu;
-aaftv;
-aaftw;
-aaftx;
-aafty;
-aaftz;
-aafua;
-aafub;
-aafuc;
-aafud;
-aafue;
-aafuf;
-aafug;
-aafuh;
-aafui;
-aafuj;
-aafuk;
-aaful;
-aafum;
-aafun;
-aafuo;
-aafup;
-aafuq;
-aafur;
-aafus;
-aafut;
-aafuu;
-aafuv;
-aafuw;
-aafux;
-aafuy;
-aafuz;
-aafva;
-aafvb;
-aafvc;
-aafvd;
-aafve;
-aafvf;
-aafvg;
-aafvh;
-aafvi;
-aafvj;
-aafvk;
-aafvl;
-aafvm;
-aafvn;
-aafvo;
-aafvp;
-aafvq;
-aafvr;
-aafvs;
-aafvt;
-aafvu;
-aafvv;
-aafvw;
-aafvx;
-aafvy;
-aafvz;
-aafwa;
-aafwb;
-aafwc;
-aafwd;
-aafwe;
-aafwf;
-aafwg;
-aafwh;
-aafwi;
-aafwj;
-aafwk;
-aafwl;
-aafwm;
-aafwn;
-aafwo;
-aafwp;
-aafwq;
-aafwr;
-aafws;
-aafwt;
-aafwu;
-aafwv;
-aafww;
-aafwx;
-aafwy;
-aafwz;
-aafxa;
-aafxb;
-aafxc;
-aafxd;
-aafxe;
-aafxf;
-aafxg;
-aafxh;
-aafxi;
-aafxj;
-aafxk;
-aafxl;
-aafxm;
-aafxn;
-aafxo;
-aafxp;
-aafxq;
-aafxr;
-aafxs;
-aafxt;
-aafxu;
-aafxv;
-aafxw;
-aafxx;
-aafxy;
-aafxz;
-aafya;
-aafyb;
-aafyc;
-aafyd;
-aafye;
-aafyf;
-aafyg;
-aafyh;
-aafyi;
-aafyj;
-aafyk;
-aafyl;
-aafym;
-aafyn;
-aafyo;
-aafyp;
-aafyq;
-aafyr;
-aafys;
-aafyt;
-aafyu;
-aafyv;
-aafyw;
-aafyx;
-aafyy;
-aafyz;
-aafza;
-aafzb;
-aafzc;
-aafzd;
-aafze;
-aafzf;
-aafzg;
-aafzh;
-aafzi;
-aafzj;
-aafzk;
-aafzl;
-aafzm;
-aafzn;
-aafzo;
-aafzp;
-aafzq;
-aafzr;
-aafzs;
-aafzt;
-aafzu;
-aafzv;
-aafzw;
-aafzx;
-aafzy;
-aafzz;
-aagaa;
-aagab;
-aagac;
-aagad;
-aagae;
-aagaf;
-aagag;
-aagah;
-aagai;
-aagaj;
-aagak;
-aagal;
-aagam;
-aagan;
-aagao;
-aagap;
-aagaq;
-aagar;
-aagas;
-aagat;
-aagau;
-aagav;
-aagaw;
-aagax;
-aagay;
-aagaz;
-aagba;
-aagbb;
-aagbc;
-aagbd;
-aagbe;
-aagbf;
-aagbg;
-aagbh;
-aagbi;
-aagbj;
-aagbk;
-aagbl;
-aagbm;
-aagbn;
-aagbo;
-aagbp;
-aagbq;
-aagbr;
-aagbs;
-aagbt;
-aagbu;
-aagbv;
-aagbw;
-aagbx;
-aagby;
-aagbz;
-aagca;
-aagcb;
-aagcc;
-aagcd;
-aagce;
-aagcf;
-aagcg;
-aagch;
-aagci;
-aagcj;
-aagck;
-aagcl;
-aagcm;
-aagcn;
-aagco;
-aagcp;
-aagcq;
-aagcr;
-aagcs;
-aagct;
-aagcu;
-aagcv;
-aagcw;
-aagcx;
-aagcy;
-aagcz;
-aagda;
-aagdb;
-aagdc;
-aagdd;
-aagde;
-aagdf;
-aagdg;
-aagdh;
-aagdi;
-aagdj;
-aagdk;
-aagdl;
-aagdm;
-aagdn;
-aagdo;
-aagdp;
-aagdq;
-aagdr;
-aagds;
-aagdt;
-aagdu;
-aagdv;
-aagdw;
-aagdx;
-aagdy;
-aagdz;
-aagea;
-aageb;
-aagec;
-aaged;
-aagee;
-aagef;
-aageg;
-aageh;
-aagei;
-aagej;
-aagek;
-aagel;
-aagem;
-aagen;
-aageo;
-aagep;
-aageq;
-aager;
-aages;
-aaget;
-aageu;
-aagev;
-aagew;
-aagex;
-aagey;
-aagez;
-aagfa;
-aagfb;
-aagfc;
-aagfd;
-aagfe;
-aagff;
-aagfg;
-aagfh;
-aagfi;
-aagfj;
-aagfk;
-aagfl;
-aagfm;
-aagfn;
-aagfo;
-aagfp;
-aagfq;
-aagfr;
-aagfs;
-aagft;
-aagfu;
-aagfv;
-aagfw;
-aagfx;
-aagfy;
-aagfz;
-aagga;
-aaggb;
-aaggc;
-aaggd;
-aagge;
-aaggf;
-aaggg;
-aaggh;
-aaggi;
-aaggj;
-aaggk;
-aaggl;
-aaggm;
-aaggn;
-aaggo;
-aaggp;
-aaggq;
-aaggr;
-aaggs;
-aaggt;
-aaggu;
-aaggv;
-aaggw;
-aaggx;
-aaggy;
-aaggz;
-aagha;
-aaghb;
-aaghc;
-aaghd;
-aaghe;
-aaghf;
-aaghg;
-aaghh;
-aaghi;
-aaghj;
-aaghk;
-aaghl;
-aaghm;
-aaghn;
-aagho;
-aaghp;
-aaghq;
-aaghr;
-aaghs;
-aaght;
-aaghu;
-aaghv;
-aaghw;
-aaghx;
-aaghy;
-aaghz;
-aagia;
-aagib;
-aagic;
-aagid;
-aagie;
-aagif;
-aagig;
-aagih;
-aagii;
-aagij;
-aagik;
-aagil;
-aagim;
-aagin;
-aagio;
-aagip;
-aagiq;
-aagir;
-aagis;
-aagit;
-aagiu;
-aagiv;
-aagiw;
-aagix;
-aagiy;
-aagiz;
-aagja;
-aagjb;
-aagjc;
-aagjd;
-aagje;
-aagjf;
-aagjg;
-aagjh;
-aagji;
-aagjj;
-aagjk;
-aagjl;
-aagjm;
-aagjn;
-aagjo;
-aagjp;
-aagjq;
-aagjr;
-aagjs;
-aagjt;
-aagju;
-aagjv;
-aagjw;
-aagjx;
-aagjy;
-aagjz;
-aagka;
-aagkb;
-aagkc;
-aagkd;
-aagke;
-aagkf;
-aagkg;
-aagkh;
-aagki;
-aagkj;
-aagkk;
-aagkl;
-aagkm;
-aagkn;
-aagko;
-aagkp;
-aagkq;
-aagkr;
-aagks;
-aagkt;
-aagku;
-aagkv;
-aagkw;
-aagkx;
-aagky;
-aagkz;
-aagla;
-aaglb;
-aaglc;
-aagld;
-aagle;
-aaglf;
-aaglg;
-aaglh;
-aagli;
-aaglj;
-aaglk;
-aagll;
-aaglm;
-aagln;
-aaglo;
-aaglp;
-aaglq;
-aaglr;
-aagls;
-aaglt;
-aaglu;
-aaglv;
-aaglw;
-aaglx;
-aagly;
-aaglz;
-aagma;
-aagmb;
-aagmc;
-aagmd;
-aagme;
-aagmf;
-aagmg;
-aagmh;
-aagmi;
-aagmj;
-aagmk;
-aagml;
-aagmm;
-aagmn;
-aagmo;
-aagmp;
-aagmq;
-aagmr;
-aagms;
-aagmt;
-aagmu;
-aagmv;
-aagmw;
-aagmx;
-aagmy;
-aagmz;
-aagna;
-aagnb;
-aagnc;
-aagnd;
-aagne;
-aagnf;
-aagng;
-aagnh;
-aagni;
-aagnj;
-aagnk;
-aagnl;
-aagnm;
-aagnn;
-aagno;
-aagnp;
-aagnq;
-aagnr;
-aagns;
-aagnt;
-aagnu;
-aagnv;
-aagnw;
-aagnx;
-aagny;
-aagnz;
-aagoa;
-aagob;
-aagoc;
-aagod;
-aagoe;
-aagof;
-aagog;
-aagoh;
-aagoi;
-aagoj;
-aagok;
-aagol;
-aagom;
-aagon;
-aagoo;
-aagop;
-aagoq;
-aagor;
-aagos;
-aagot;
-aagou;
-aagov;
-aagow;
-aagox;
-aagoy;
-aagoz;
-aagpa;
-aagpb;
-aagpc;
-aagpd;
-aagpe;
-aagpf;
-aagpg;
-aagph;
-aagpi;
-aagpj;
-aagpk;
-aagpl;
-aagpm;
-aagpn;
-aagpo;
-aagpp;
-aagpq;
-aagpr;
-aagps;
-aagpt;
-aagpu;
-aagpv;
-aagpw;
-aagpx;
-aagpy;
-aagpz;
-aagqa;
-aagqb;
-aagqc;
-aagqd;
-aagqe;
-aagqf;
-aagqg;
-aagqh;
-aagqi;
-aagqj;
-aagqk;
-aagql;
-aagqm;
-aagqn;
-aagqo;
-aagqp;
-aagqq;
-aagqr;
-aagqs;
-aagqt;
-aagqu;
-aagqv;
-aagqw;
-aagqx;
-aagqy;
-aagqz;
-aagra;
-aagrb;
-aagrc;
-aagrd;
-aagre;
-aagrf;
-aagrg;
-aagrh;
-aagri;
-aagrj;
-aagrk;
-aagrl;
-aagrm;
-aagrn;
-aagro;
-aagrp;
-aagrq;
-aagrr;
-aagrs;
-aagrt;
-aagru;
-aagrv;
-aagrw;
-aagrx;
-aagry;
-aagrz;
-aagsa;
-aagsb;
-aagsc;
-aagsd;
-aagse;
-aagsf;
-aagsg;
-aagsh;
-aagsi;
-aagsj;
-aagsk;
-aagsl;
-aagsm;
-aagsn;
-aagso;
-aagsp;
-aagsq;
-aagsr;
-aagss;
-aagst;
-aagsu;
-aagsv;
-aagsw;
-aagsx;
-aagsy;
-aagsz;
-aagta;
-aagtb;
-aagtc;
-aagtd;
-aagte;
-aagtf;
-aagtg;
-aagth;
-aagti;
-aagtj;
-aagtk;
-aagtl;
-aagtm;
-aagtn;
-aagto;
-aagtp;
-aagtq;
-aagtr;
-aagts;
-aagtt;
-aagtu;
-aagtv;
-aagtw;
-aagtx;
-aagty;
-aagtz;
-aagua;
-aagub;
-aaguc;
-aagud;
-aague;
-aaguf;
-aagug;
-aaguh;
-aagui;
-aaguj;
-aaguk;
-aagul;
-aagum;
-aagun;
-aaguo;
-aagup;
-aaguq;
-aagur;
-aagus;
-aagut;
-aaguu;
-aaguv;
-aaguw;
-aagux;
-aaguy;
-aaguz;
-aagva;
-aagvb;
-aagvc;
-aagvd;
-aagve;
-aagvf;
-aagvg;
-aagvh;
-aagvi;
-aagvj;
-aagvk;
-aagvl;
-aagvm;
-aagvn;
-aagvo;
-aagvp;
-aagvq;
-aagvr;
-aagvs;
-aagvt;
-aagvu;
-aagvv;
-aagvw;
-aagvx;
-aagvy;
-aagvz;
-aagwa;
-aagwb;
-aagwc;
-aagwd;
-aagwe;
-aagwf;
-aagwg;
-aagwh;
-aagwi;
-aagwj;
-aagwk;
-aagwl;
-aagwm;
-aagwn;
-aagwo;
-aagwp;
-aagwq;
-aagwr;
-aagws;
-aagwt;
-aagwu;
-aagwv;
-aagww;
-aagwx;
-aagwy;
-aagwz;
-aagxa;
-aagxb;
-aagxc;
-aagxd;
-aagxe;
-aagxf;
-aagxg;
-aagxh;
-aagxi;
-aagxj;
-aagxk;
-aagxl;
-aagxm;
-aagxn;
-aagxo;
-aagxp;
-aagxq;
-aagxr;
-aagxs;
-aagxt;
-aagxu;
-aagxv;
-aagxw;
-aagxx;
-aagxy;
-aagxz;
-aagya;
-aagyb;
-aagyc;
-aagyd;
-aagye;
-aagyf;
-aagyg;
-aagyh;
-aagyi;
-aagyj;
-aagyk;
-aagyl;
-aagym;
-aagyn;
-aagyo;
-aagyp;
-aagyq;
-aagyr;
-aagys;
-aagyt;
-aagyu;
-aagyv;
-aagyw;
-aagyx;
-aagyy;
-aagyz;
-aagza;
-aagzb;
-aagzc;
-aagzd;
-aagze;
-aagzf;
-aagzg;
-aagzh;
-aagzi;
-aagzj;
-aagzk;
-aagzl;
-aagzm;
-aagzn;
-aagzo;
-aagzp;
-aagzq;
-aagzr;
-aagzs;
-aagzt;
-aagzu;
-aagzv;
-aagzw;
-aagzx;
-aagzy;
-aagzz;
-aahaa;
-aahab;
-aahac;
-aahad;
-aahae;
-aahaf;
-aahag;
-aahah;
-aahai;
-aahaj;
-aahak;
-aahal;
-aaham;
-aahan;
-aahao;
-aahap;
-aahaq;
-aahar;
-aahas;
-aahat;
-aahau;
-aahav;
-aahaw;
-aahax;
-aahay;
-aahaz;
-aahba;
-aahbb;
-aahbc;
-aahbd;
-aahbe;
-aahbf;
-aahbg;
-aahbh;
-aahbi;
-aahbj;
-aahbk;
-aahbl;
-aahbm;
-aahbn;
-aahbo;
-aahbp;
-aahbq;
-aahbr;
-aahbs;
-aahbt;
-aahbu;
-aahbv;
-aahbw;
-aahbx;
-aahby;
-aahbz;
-aahca;
-aahcb;
-aahcc;
-aahcd;
-aahce;
-aahcf;
-aahcg;
-aahch;
-aahci;
-aahcj;
-aahck;
-aahcl;
-aahcm;
-aahcn;
-aahco;
-aahcp;
-aahcq;
-aahcr;
-aahcs;
-aahct;
-aahcu;
-aahcv;
-aahcw;
-aahcx;
-aahcy;
-aahcz;
-aahda;
-aahdb;
-aahdc;
-aahdd;
-aahde;
-aahdf;
-aahdg;
-aahdh;
-aahdi;
-aahdj;
-aahdk;
-aahdl;
-aahdm;
-aahdn;
-aahdo;
-aahdp;
-aahdq;
-aahdr;
-aahds;
-aahdt;
-aahdu;
-aahdv;
-aahdw;
-aahdx;
-aahdy;
-aahdz;
-aahea;
-aaheb;
-aahec;
-aahed;
-aahee;
-aahef;
-aaheg;
-aaheh;
-aahei;
-aahej;
-aahek;
-aahel;
-aahem;
-aahen;
-aaheo;
-aahep;
-aaheq;
-aaher;
-aahes;
-aahet;
-aaheu;
-aahev;
-aahew;
-aahex;
-aahey;
-aahez;
-aahfa;
-aahfb;
-aahfc;
-aahfd;
-aahfe;
-aahff;
-aahfg;
-aahfh;
-aahfi;
-aahfj;
-aahfk;
-aahfl;
-aahfm;
-aahfn;
-aahfo;
-aahfp;
-aahfq;
-aahfr;
-aahfs;
-aahft;
-aahfu;
-aahfv;
-aahfw;
-aahfx;
-aahfy;
-aahfz;
-aahga;
-aahgb;
-aahgc;
-aahgd;
-aahge;
-aahgf;
-aahgg;
-aahgh;
-aahgi;
-aahgj;
-aahgk;
-aahgl;
-aahgm;
-aahgn;
-aahgo;
-aahgp;
-aahgq;
-aahgr;
-aahgs;
-aahgt;
-aahgu;
-aahgv;
-aahgw;
-aahgx;
-aahgy;
-aahgz;
-aahha;
-aahhb;
-aahhc;
-aahhd;
-aahhe;
-aahhf;
-aahhg;
-aahhh;
-aahhi;
-aahhj;
-aahhk;
-aahhl;
-aahhm;
-aahhn;
-aahho;
-aahhp;
-aahhq;
-aahhr;
-aahhs;
-aahht;
-aahhu;
-aahhv;
-aahhw;
-aahhx;
-aahhy;
-aahhz;
-aahia;
-aahib;
-aahic;
-aahid;
-aahie;
-aahif;
-aahig;
-aahih;
-aahii;
-aahij;
-aahik;
-aahil;
-aahim;
-aahin;
-aahio;
-aahip;
-aahiq;
-aahir;
-aahis;
-aahit;
-aahiu;
-aahiv;
-aahiw;
-aahix;
-aahiy;
-aahiz;
-aahja;
-aahjb;
-aahjc;
-aahjd;
-aahje;
-aahjf;
-aahjg;
-aahjh;
-aahji;
-aahjj;
-aahjk;
-aahjl;
-aahjm;
-aahjn;
-aahjo;
-aahjp;
-aahjq;
-aahjr;
-aahjs;
-aahjt;
-aahju;
-aahjv;
-aahjw;
-aahjx;
-aahjy;
-aahjz;
-aahka;
-aahkb;
-aahkc;
-aahkd;
-aahke;
-aahkf;
-aahkg;
-aahkh;
-aahki;
-aahkj;
-aahkk;
-aahkl;
-aahkm;
-aahkn;
-aahko;
-aahkp;
-aahkq;
-aahkr;
-aahks;
-aahkt;
-aahku;
-aahkv;
-aahkw;
-aahkx;
-aahky;
-aahkz;
-aahla;
-aahlb;
-aahlc;
-aahld;
-aahle;
-aahlf;
-aahlg;
-aahlh;
-aahli;
-aahlj;
-aahlk;
-aahll;
-aahlm;
-aahln;
-aahlo;
-aahlp;
-aahlq;
-aahlr;
-aahls;
-aahlt;
-aahlu;
-aahlv;
-aahlw;
-aahlx;
-aahly;
-aahlz;
-aahma;
-aahmb;
-aahmc;
-aahmd;
-aahme;
-aahmf;
-aahmg;
-aahmh;
-aahmi;
-aahmj;
-aahmk;
-aahml;
-aahmm;
-aahmn;
-aahmo;
-aahmp;
-aahmq;
-aahmr;
-aahms;
-aahmt;
-aahmu;
-aahmv;
-aahmw;
-aahmx;
-aahmy;
-aahmz;
-aahna;
-aahnb;
-aahnc;
-aahnd;
-aahne;
-aahnf;
-aahng;
-aahnh;
-aahni;
-aahnj;
-aahnk;
-aahnl;
-aahnm;
-aahnn;
-aahno;
-aahnp;
-aahnq;
-aahnr;
-aahns;
-aahnt;
-aahnu;
-aahnv;
-aahnw;
-aahnx;
-aahny;
-aahnz;
-aahoa;
-aahob;
-aahoc;
-aahod;
-aahoe;
-aahof;
-aahog;
-aahoh;
-aahoi;
-aahoj;
-aahok;
-aahol;
-aahom;
-aahon;
-aahoo;
-aahop;
-aahoq;
-aahor;
-aahos;
-aahot;
-aahou;
-aahov;
-aahow;
-aahox;
-aahoy;
-aahoz;
-aahpa;
-aahpb;
-aahpc;
-aahpd;
-aahpe;
-aahpf;
-aahpg;
-aahph;
-aahpi;
-aahpj;
-aahpk;
-aahpl;
-aahpm;
-aahpn;
-aahpo;
-aahpp;
-aahpq;
-aahpr;
-aahps;
-aahpt;
-aahpu;
-aahpv;
-aahpw;
-aahpx;
-aahpy;
-aahpz;
-aahqa;
-aahqb;
-aahqc;
-aahqd;
-aahqe;
-aahqf;
-aahqg;
-aahqh;
-aahqi;
-aahqj;
-aahqk;
-aahql;
-aahqm;
-aahqn;
-aahqo;
-aahqp;
-aahqq;
-aahqr;
-aahqs;
-aahqt;
-aahqu;
-aahqv;
-aahqw;
-aahqx;
-aahqy;
-aahqz;
-aahra;
-aahrb;
-aahrc;
-aahrd;
-aahre;
-aahrf;
-aahrg;
-aahrh;
-aahri;
-aahrj;
-aahrk;
-aahrl;
-aahrm;
-aahrn;
-aahro;
-aahrp;
-aahrq;
-aahrr;
-aahrs;
-aahrt;
-aahru;
-aahrv;
-aahrw;
-aahrx;
-aahry;
-aahrz;
-aahsa;
-aahsb;
-aahsc;
-aahsd;
-aahse;
-aahsf;
-aahsg;
-aahsh;
-aahsi;
-aahsj;
-aahsk;
-aahsl;
-aahsm;
-aahsn;
-aahso;
-aahsp;
-aahsq;
-aahsr;
-aahss;
-aahst;
-aahsu;
-aahsv;
-aahsw;
-aahsx;
-aahsy;
-aahsz;
-aahta;
-aahtb;
-aahtc;
-aahtd;
-aahte;
-aahtf;
-aahtg;
-aahth;
-aahti;
-aahtj;
-aahtk;
-aahtl;
-aahtm;
-aahtn;
-aahto;
-aahtp;
-aahtq;
-aahtr;
-aahts;
-aahtt;
-aahtu;
-aahtv;
-aahtw;
-aahtx;
-aahty;
-aahtz;
-aahua;
-aahub;
-aahuc;
-aahud;
-aahue;
-aahuf;
-aahug;
-aahuh;
-aahui;
-aahuj;
-aahuk;
-aahul;
-aahum;
-aahun;
-aahuo;
-aahup;
-aahuq;
-aahur;
-aahus;
-aahut;
-aahuu;
-aahuv;
-aahuw;
-aahux;
-aahuy;
-aahuz;
-aahva;
-aahvb;
-aahvc;
-aahvd;
-aahve;
-aahvf;
-aahvg;
-aahvh;
-aahvi;
-aahvj;
-aahvk;
-aahvl;
-aahvm;
-aahvn;
-aahvo;
-aahvp;
-aahvq;
-aahvr;
-aahvs;
-aahvt;
-aahvu;
-aahvv;
-aahvw;
-aahvx;
-aahvy;
-aahvz;
-aahwa;
-aahwb;
-aahwc;
-aahwd;
-aahwe;
-aahwf;
-aahwg;
-aahwh;
-aahwi;
-aahwj;
-aahwk;
-aahwl;
-aahwm;
-aahwn;
-aahwo;
-aahwp;
-aahwq;
-aahwr;
-aahws;
-aahwt;
-aahwu;
-aahwv;
-aahww;
-aahwx;
-aahwy;
-aahwz;
-aahxa;
-aahxb;
-aahxc;
-aahxd;
-aahxe;
-aahxf;
-aahxg;
-aahxh;
-aahxi;
-aahxj;
-aahxk;
-aahxl;
-aahxm;
-aahxn;
-aahxo;
-aahxp;
-aahxq;
-aahxr;
-aahxs;
-aahxt;
-aahxu;
-aahxv;
-aahxw;
-aahxx;
-aahxy;
-aahxz;
-aahya;
-aahyb;
-aahyc;
-aahyd;
-aahye;
-aahyf;
-aahyg;
-aahyh;
-aahyi;
-aahyj;
-aahyk;
-aahyl;
-aahym;
-aahyn;
-aahyo;
-aahyp;
-aahyq;
-aahyr;
-aahys;
-aahyt;
-aahyu;
-aahyv;
-aahyw;
-aahyx;
-aahyy;
-aahyz;
-aahza;
-aahzb;
-aahzc;
-aahzd;
-aahze;
-aahzf;
-aahzg;
-aahzh;
-aahzi;
-aahzj;
-aahzk;
-aahzl;
-aahzm;
-aahzn;
-aahzo;
-aahzp;
-aahzq;
-aahzr;
-aahzs;
-aahzt;
-aahzu;
-aahzv;
-aahzw;
-aahzx;
-aahzy;
-aahzz;
-aaiaa;
-aaiab;
-aaiac;
-aaiad;
-aaiae;
-aaiaf;
-aaiag;
-aaiah;
-aaiai;
-aaiaj;
-aaiak;
-aaial;
-aaiam;
-aaian;
-aaiao;
-aaiap;
-aaiaq;
-aaiar;
-aaias;
-aaiat;
-aaiau;
-aaiav;
-aaiaw;
-aaiax;
-aaiay;
-aaiaz;
-aaiba;
-aaibb;
-aaibc;
-aaibd;
-aaibe;
-aaibf;
-aaibg;
-aaibh;
-aaibi;
-aaibj;
-aaibk;
-aaibl;
-aaibm;
-aaibn;
-aaibo;
-aaibp;
-aaibq;
-aaibr;
-aaibs;
-aaibt;
-aaibu;
-aaibv;
-aaibw;
-aaibx;
-aaiby;
-aaibz;
-aaica;
-aaicb;
-aaicc;
-aaicd;
-aaice;
-aaicf;
-aaicg;
-aaich;
-aaici;
-aaicj;
-aaick;
-aaicl;
-aaicm;
-aaicn;
-aaico;
-aaicp;
-aaicq;
-aaicr;
-aaics;
-aaict;
-aaicu;
-aaicv;
-aaicw;
-aaicx;
-aaicy;
-aaicz;
-aaida;
-aaidb;
-aaidc;
-aaidd;
-aaide;
-aaidf;
-aaidg;
-aaidh;
-aaidi;
-aaidj;
-aaidk;
-aaidl;
-aaidm;
-aaidn;
-aaido;
-aaidp;
-aaidq;
-aaidr;
-aaids;
-aaidt;
-aaidu;
-aaidv;
-aaidw;
-aaidx;
-aaidy;
-aaidz;
-aaiea;
-aaieb;
-aaiec;
-aaied;
-aaiee;
-aaief;
-aaieg;
-aaieh;
-aaiei;
-aaiej;
-aaiek;
-aaiel;
-aaiem;
-aaien;
-aaieo;
-aaiep;
-aaieq;
-aaier;
-aaies;
-aaiet;
-aaieu;
-aaiev;
-aaiew;
-aaiex;
-aaiey;
-aaiez;
-aaifa;
-aaifb;
-aaifc;
-aaifd;
-aaife;
-aaiff;
-aaifg;
-aaifh;
-aaifi;
-aaifj;
-aaifk;
-aaifl;
-aaifm;
-aaifn;
-aaifo;
-aaifp;
-aaifq;
-aaifr;
-aaifs;
-aaift;
-aaifu;
-aaifv;
-aaifw;
-aaifx;
-aaify;
-aaifz;
-aaiga;
-aaigb;
-aaigc;
-aaigd;
-aaige;
-aaigf;
-aaigg;
-aaigh;
-aaigi;
-aaigj;
-aaigk;
-aaigl;
-aaigm;
-aaign;
-aaigo;
-aaigp;
-aaigq;
-aaigr;
-aaigs;
-aaigt;
-aaigu;
-aaigv;
-aaigw;
-aaigx;
-aaigy;
-aaigz;
-aaiha;
-aaihb;
-aaihc;
-aaihd;
-aaihe;
-aaihf;
-aaihg;
-aaihh;
-aaihi;
-aaihj;
-aaihk;
-aaihl;
-aaihm;
-aaihn;
-aaiho;
-aaihp;
-aaihq;
-aaihr;
-aaihs;
-aaiht;
-aaihu;
-aaihv;
-aaihw;
-aaihx;
-aaihy;
-aaihz;
-aaiia;
-aaiib;
-aaiic;
-aaiid;
-aaiie;
-aaiif;
-aaiig;
-aaiih;
-aaiii;
-aaiij;
-aaiik;
-aaiil;
-aaiim;
-aaiin;
-aaiio;
-aaiip;
-aaiiq;
-aaiir;
-aaiis;
-aaiit;
-aaiiu;
-aaiiv;
-aaiiw;
-aaiix;
-aaiiy;
-aaiiz;
-aaija;
-aaijb;
-aaijc;
-aaijd;
-aaije;
-aaijf;
-aaijg;
-aaijh;
-aaiji;
-aaijj;
-aaijk;
-aaijl;
-aaijm;
-aaijn;
-aaijo;
-aaijp;
-aaijq;
-aaijr;
-aaijs;
-aaijt;
-aaiju;
-aaijv;
-aaijw;
-aaijx;
-aaijy;
-aaijz;
-aaika;
-aaikb;
-aaikc;
-aaikd;
-aaike;
-aaikf;
-aaikg;
-aaikh;
-aaiki;
-aaikj;
-aaikk;
-aaikl;
-aaikm;
-aaikn;
-aaiko;
-aaikp;
-aaikq;
-aaikr;
-aaiks;
-aaikt;
-aaiku;
-aaikv;
-aaikw;
-aaikx;
-aaiky;
-aaikz;
-aaila;
-aailb;
-aailc;
-aaild;
-aaile;
-aailf;
-aailg;
-aailh;
-aaili;
-aailj;
-aailk;
-aaill;
-aailm;
-aailn;
-aailo;
-aailp;
-aailq;
-aailr;
-aails;
-aailt;
-aailu;
-aailv;
-aailw;
-aailx;
-aaily;
-aailz;
-aaima;
-aaimb;
-aaimc;
-aaimd;
-aaime;
-aaimf;
-aaimg;
-aaimh;
-aaimi;
-aaimj;
-aaimk;
-aaiml;
-aaimm;
-aaimn;
-aaimo;
-aaimp;
-aaimq;
-aaimr;
-aaims;
-aaimt;
-aaimu;
-aaimv;
-aaimw;
-aaimx;
-aaimy;
-aaimz;
-aaina;
-aainb;
-aainc;
-aaind;
-aaine;
-aainf;
-aaing;
-aainh;
-aaini;
-aainj;
-aaink;
-aainl;
-aainm;
-aainn;
-aaino;
-aainp;
-aainq;
-aainr;
-aains;
-aaint;
-aainu;
-aainv;
-aainw;
-aainx;
-aainy;
-aainz;
-aaioa;
-aaiob;
-aaioc;
-aaiod;
-aaioe;
-aaiof;
-aaiog;
-aaioh;
-aaioi;
-aaioj;
-aaiok;
-aaiol;
-aaiom;
-aaion;
-aaioo;
-aaiop;
-aaioq;
-aaior;
-aaios;
-aaiot;
-aaiou;
-aaiov;
-aaiow;
-aaiox;
-aaioy;
-aaioz;
-aaipa;
-aaipb;
-aaipc;
-aaipd;
-aaipe;
-aaipf;
-aaipg;
-aaiph;
-aaipi;
-aaipj;
-aaipk;
-aaipl;
-aaipm;
-aaipn;
-aaipo;
-aaipp;
-aaipq;
-aaipr;
-aaips;
-aaipt;
-aaipu;
-aaipv;
-aaipw;
-aaipx;
-aaipy;
-aaipz;
-aaiqa;
-aaiqb;
-aaiqc;
-aaiqd;
-aaiqe;
-aaiqf;
-aaiqg;
-aaiqh;
-aaiqi;
-aaiqj;
-aaiqk;
-aaiql;
-aaiqm;
-aaiqn;
-aaiqo;
-aaiqp;
-aaiqq;
-aaiqr;
-aaiqs;
-aaiqt;
-aaiqu;
-aaiqv;
-aaiqw;
-aaiqx;
-aaiqy;
-aaiqz;
-aaira;
-aairb;
-aairc;
-aaird;
-aaire;
-aairf;
-aairg;
-aairh;
-aairi;
-aairj;
-aairk;
-aairl;
-aairm;
-aairn;
-aairo;
-aairp;
-aairq;
-aairr;
-aairs;
-aairt;
-aairu;
-aairv;
-aairw;
-aairx;
-aairy;
-aairz;
-aaisa;
-aaisb;
-aaisc;
-aaisd;
-aaise;
-aaisf;
-aaisg;
-aaish;
-aaisi;
-aaisj;
-aaisk;
-aaisl;
-aaism;
-aaisn;
-aaiso;
-aaisp;
-aaisq;
-aaisr;
-aaiss;
-aaist;
-aaisu;
-aaisv;
-aaisw;
-aaisx;
-aaisy;
-aaisz;
-aaita;
-aaitb;
-aaitc;
-aaitd;
-aaite;
-aaitf;
-aaitg;
-aaith;
-aaiti;
-aaitj;
-aaitk;
-aaitl;
-aaitm;
-aaitn;
-aaito;
-aaitp;
-aaitq;
-aaitr;
-aaits;
-aaitt;
-aaitu;
-aaitv;
-aaitw;
-aaitx;
-aaity;
-aaitz;
-aaiua;
-aaiub;
-aaiuc;
-aaiud;
-aaiue;
-aaiuf;
-aaiug;
-aaiuh;
-aaiui;
-aaiuj;
-aaiuk;
-aaiul;
-aaium;
-aaiun;
-aaiuo;
-aaiup;
-aaiuq;
-aaiur;
-aaius;
-aaiut;
-aaiuu;
-aaiuv;
-aaiuw;
-aaiux;
-aaiuy;
-aaiuz;
-aaiva;
-aaivb;
-aaivc;
-aaivd;
-aaive;
-aaivf;
-aaivg;
-aaivh;
-aaivi;
-aaivj;
-aaivk;
-aaivl;
-aaivm;
-aaivn;
-aaivo;
-aaivp;
-aaivq;
-aaivr;
-aaivs;
-aaivt;
-aaivu;
-aaivv;
-aaivw;
-aaivx;
-aaivy;
-aaivz;
-aaiwa;
-aaiwb;
-aaiwc;
-aaiwd;
-aaiwe;
-aaiwf;
-aaiwg;
-aaiwh;
-aaiwi;
-aaiwj;
-aaiwk;
-aaiwl;
-aaiwm;
-aaiwn;
-aaiwo;
-aaiwp;
-aaiwq;
-aaiwr;
-aaiws;
-aaiwt;
-aaiwu;
-aaiwv;
-aaiww;
-aaiwx;
-aaiwy;
-aaiwz;
-aaixa;
-aaixb;
-aaixc;
-aaixd;
-aaixe;
-aaixf;
-aaixg;
-aaixh;
-aaixi;
-aaixj;
-aaixk;
-aaixl;
-aaixm;
-aaixn;
-aaixo;
-aaixp;
-aaixq;
-aaixr;
-aaixs;
-aaixt;
-aaixu;
-aaixv;
-aaixw;
-aaixx;
-aaixy;
-aaixz;
-aaiya;
-aaiyb;
-aaiyc;
-aaiyd;
-aaiye;
-aaiyf;
-aaiyg;
-aaiyh;
-aaiyi;
-aaiyj;
-aaiyk;
-aaiyl;
-aaiym;
-aaiyn;
-aaiyo;
-aaiyp;
-aaiyq;
-aaiyr;
-aaiys;
-aaiyt;
-aaiyu;
-aaiyv;
-aaiyw;
-aaiyx;
-aaiyy;
-aaiyz;
-aaiza;
-aaizb;
-aaizc;
-aaizd;
-aaize;
-aaizf;
-aaizg;
-aaizh;
-aaizi;
-aaizj;
-aaizk;
-aaizl;
-aaizm;
-aaizn;
-aaizo;
-aaizp;
-aaizq;
-aaizr;
-aaizs;
-aaizt;
-aaizu;
-aaizv;
-aaizw;
-aaizx;
-aaizy;
-aaizz;
-aajaa;
-aajab;
-aajac;
-aajad;
-aajae;
-aajaf;
-aajag;
-aajah;
-aajai;
-aajaj;
-aajak;
-aajal;
-aajam;
-aajan;
-aajao;
-aajap;
-aajaq;
-aajar;
-aajas;
-aajat;
-aajau;
-aajav;
-aajaw;
-aajax;
-aajay;
-aajaz;
-aajba;
-aajbb;
-aajbc;
-aajbd;
-aajbe;
-aajbf;
-aajbg;
-aajbh;
-aajbi;
-aajbj;
-aajbk;
-aajbl;
-aajbm;
-aajbn;
-aajbo;
-aajbp;
-aajbq;
-aajbr;
-aajbs;
-aajbt;
-aajbu;
-aajbv;
-aajbw;
-aajbx;
-aajby;
-aajbz;
-aajca;
-aajcb;
-aajcc;
-aajcd;
-aajce;
-aajcf;
-aajcg;
-aajch;
-aajci;
-aajcj;
-aajck;
-aajcl;
-aajcm;
-aajcn;
-aajco;
-aajcp;
-aajcq;
-aajcr;
-aajcs;
-aajct;
-aajcu;
-aajcv;
-aajcw;
-aajcx;
-aajcy;
-aajcz;
-aajda;
-aajdb;
-aajdc;
-aajdd;
-aajde;
-aajdf;
-aajdg;
-aajdh;
-aajdi;
-aajdj;
-aajdk;
-aajdl;
-aajdm;
-aajdn;
-aajdo;
-aajdp;
-aajdq;
-aajdr;
-aajds;
-aajdt;
-aajdu;
-aajdv;
-aajdw;
-aajdx;
-aajdy;
-aajdz;
-aajea;
-aajeb;
-aajec;
-aajed;
-aajee;
-aajef;
-aajeg;
-aajeh;
-aajei;
-aajej;
-aajek;
-aajel;
-aajem;
-aajen;
-aajeo;
-aajep;
-aajeq;
-aajer;
-aajes;
-aajet;
-aajeu;
-aajev;
-aajew;
-aajex;
-aajey;
-aajez;
-aajfa;
-aajfb;
-aajfc;
-aajfd;
-aajfe;
-aajff;
-aajfg;
-aajfh;
-aajfi;
-aajfj;
-aajfk;
-aajfl;
-aajfm;
-aajfn;
-aajfo;
-aajfp;
-aajfq;
-aajfr;
-aajfs;
-aajft;
-aajfu;
-aajfv;
-aajfw;
-aajfx;
-aajfy;
-aajfz;
-aajga;
-aajgb;
-aajgc;
-aajgd;
-aajge;
-aajgf;
-aajgg;
-aajgh;
-aajgi;
-aajgj;
-aajgk;
-aajgl;
-aajgm;
-aajgn;
-aajgo;
-aajgp;
-aajgq;
-aajgr;
-aajgs;
-aajgt;
-aajgu;
-aajgv;
-aajgw;
-aajgx;
-aajgy;
-aajgz;
-aajha;
-aajhb;
-aajhc;
-aajhd;
-aajhe;
-aajhf;
-aajhg;
-aajhh;
-aajhi;
-aajhj;
-aajhk;
-aajhl;
-aajhm;
-aajhn;
-aajho;
-aajhp;
-aajhq;
-aajhr;
-aajhs;
-aajht;
-aajhu;
-aajhv;
-aajhw;
-aajhx;
-aajhy;
-aajhz;
-aajia;
-aajib;
-aajic;
-aajid;
-aajie;
-aajif;
-aajig;
-aajih;
-aajii;
-aajij;
-aajik;
-aajil;
-aajim;
-aajin;
-aajio;
-aajip;
-aajiq;
-aajir;
-aajis;
-aajit;
-aajiu;
-aajiv;
-aajiw;
-aajix;
-aajiy;
-aajiz;
-aajja;
-aajjb;
-aajjc;
-aajjd;
-aajje;
-aajjf;
-aajjg;
-aajjh;
-aajji;
-aajjj;
-aajjk;
-aajjl;
-aajjm;
-aajjn;
-aajjo;
-aajjp;
-aajjq;
-aajjr;
-aajjs;
-aajjt;
-aajju;
-aajjv;
-aajjw;
-aajjx;
-aajjy;
-aajjz;
-aajka;
-aajkb;
-aajkc;
-aajkd;
-aajke;
-aajkf;
-aajkg;
-aajkh;
-aajki;
-aajkj;
-aajkk;
-aajkl;
-aajkm;
-aajkn;
-aajko;
-aajkp;
-aajkq;
-aajkr;
-aajks;
-aajkt;
-aajku;
-aajkv;
-aajkw;
-aajkx;
-aajky;
-aajkz;
-aajla;
-aajlb;
-aajlc;
-aajld;
-aajle;
-aajlf;
-aajlg;
-aajlh;
-aajli;
-aajlj;
-aajlk;
-aajll;
-aajlm;
-aajln;
-aajlo;
-aajlp;
-aajlq;
-aajlr;
-aajls;
-aajlt;
-aajlu;
-aajlv;
-aajlw;
-aajlx;
-aajly;
-aajlz;
-aajma;
-aajmb;
-aajmc;
-aajmd;
-aajme;
-aajmf;
-aajmg;
-aajmh;
-aajmi;
-aajmj;
-aajmk;
-aajml;
-aajmm;
-aajmn;
-aajmo;
-aajmp;
-aajmq;
-aajmr;
-aajms;
-aajmt;
-aajmu;
-aajmv;
-aajmw;
-aajmx;
-aajmy;
-aajmz;
-aajna;
-aajnb;
-aajnc;
-aajnd;
-aajne;
-aajnf;
-aajng;
-aajnh;
-aajni;
-aajnj;
-aajnk;
-aajnl;
-aajnm;
-aajnn;
-aajno;
-aajnp;
-aajnq;
-aajnr;
-aajns;
-aajnt;
-aajnu;
-aajnv;
-aajnw;
-aajnx;
-aajny;
-aajnz;
-aajoa;
-aajob;
-aajoc;
-aajod;
-aajoe;
-aajof;
-aajog;
-aajoh;
-aajoi;
-aajoj;
-aajok;
-aajol;
-aajom;
-aajon;
-aajoo;
-aajop;
-aajoq;
-aajor;
-aajos;
-aajot;
-aajou;
-aajov;
-aajow;
-aajox;
-aajoy;
-aajoz;
-aajpa;
-aajpb;
-aajpc;
-aajpd;
-aajpe;
-aajpf;
-aajpg;
-aajph;
-aajpi;
-aajpj;
-aajpk;
-aajpl;
-aajpm;
-aajpn;
-aajpo;
-aajpp;
-aajpq;
-aajpr;
-aajps;
-aajpt;
-aajpu;
-aajpv;
-aajpw;
-aajpx;
-aajpy;
-aajpz;
-aajqa;
-aajqb;
-aajqc;
-aajqd;
-aajqe;
-aajqf;
-aajqg;
-aajqh;
-aajqi;
-aajqj;
-aajqk;
-aajql;
-aajqm;
-aajqn;
-aajqo;
-aajqp;
-aajqq;
-aajqr;
-aajqs;
-aajqt;
-aajqu;
-aajqv;
-aajqw;
-aajqx;
-aajqy;
-aajqz;
-aajra;
-aajrb;
-aajrc;
-aajrd;
-aajre;
-aajrf;
-aajrg;
-aajrh;
-aajri;
-aajrj;
-aajrk;
-aajrl;
-aajrm;
-aajrn;
-aajro;
-aajrp;
-aajrq;
-aajrr;
-aajrs;
-aajrt;
-aajru;
-aajrv;
-aajrw;
-aajrx;
-aajry;
-aajrz;
-aajsa;
-aajsb;
-aajsc;
-aajsd;
-aajse;
-aajsf;
-aajsg;
-aajsh;
-aajsi;
-aajsj;
-aajsk;
-aajsl;
-aajsm;
-aajsn;
-aajso;
-aajsp;
-aajsq;
-aajsr;
-aajss;
-aajst;
-aajsu;
-aajsv;
-aajsw;
-aajsx;
-aajsy;
-aajsz;
-aajta;
-aajtb;
-aajtc;
-aajtd;
-aajte;
-aajtf;
-aajtg;
-aajth;
-aajti;
-aajtj;
-aajtk;
-aajtl;
-aajtm;
-aajtn;
-aajto;
-aajtp;
-aajtq;
-aajtr;
-aajts;
-aajtt;
-aajtu;
-aajtv;
-aajtw;
-aajtx;
-aajty;
-aajtz;
-aajua;
-aajub;
-aajuc;
-aajud;
-aajue;
-aajuf;
-aajug;
-aajuh;
-aajui;
-aajuj;
-aajuk;
-aajul;
-aajum;
-aajun;
-aajuo;
-aajup;
-aajuq;
-aajur;
-aajus;
-aajut;
-aajuu;
-aajuv;
-aajuw;
-aajux;
-aajuy;
-aajuz;
-aajva;
-aajvb;
-aajvc;
-aajvd;
-aajve;
-aajvf;
-aajvg;
-aajvh;
-aajvi;
-aajvj;
-aajvk;
-aajvl;
-aajvm;
-aajvn;
-aajvo;
-aajvp;
-aajvq;
-aajvr;
-aajvs;
-aajvt;
-aajvu;
-aajvv;
-aajvw;
-aajvx;
-aajvy;
-aajvz;
-aajwa;
-aajwb;
-aajwc;
-aajwd;
-aajwe;
-aajwf;
-aajwg;
-aajwh;
-aajwi;
-aajwj;
-aajwk;
-aajwl;
-aajwm;
-aajwn;
-aajwo;
-aajwp;
-aajwq;
-aajwr;
-aajws;
-aajwt;
-aajwu;
-aajwv;
-aajww;
-aajwx;
-aajwy;
-aajwz;
-aajxa;
-aajxb;
-aajxc;
-aajxd;
-aajxe;
-aajxf;
-aajxg;
-aajxh;
-aajxi;
-aajxj;
-aajxk;
-aajxl;
-aajxm;
-aajxn;
-aajxo;
-aajxp;
-aajxq;
-aajxr;
-aajxs;
-aajxt;
-aajxu;
-aajxv;
-aajxw;
-aajxx;
-aajxy;
-aajxz;
-aajya;
-aajyb;
-aajyc;
-aajyd;
-aajye;
-aajyf;
-aajyg;
-aajyh;
-aajyi;
-aajyj;
-aajyk;
-aajyl;
-aajym;
-aajyn;
-aajyo;
-aajyp;
-aajyq;
-aajyr;
-aajys;
-aajyt;
-aajyu;
-aajyv;
-aajyw;
-aajyx;
-aajyy;
-aajyz;
-aajza;
-aajzb;
-aajzc;
-aajzd;
-aajze;
-aajzf;
-aajzg;
-aajzh;
-aajzi;
-aajzj;
-aajzk;
-aajzl;
-aajzm;
-aajzn;
-aajzo;
-aajzp;
-aajzq;
-aajzr;
-aajzs;
-aajzt;
-aajzu;
-aajzv;
-aajzw;
-aajzx;
-aajzy;
-aajzz;
-aakaa;
-aakab;
-aakac;
-aakad;
-aakae;
-aakaf;
-aakag;
-aakah;
-aakai;
-aakaj;
-aakak;
-aakal;
-aakam;
-aakan;
-aakao;
-aakap;
-aakaq;
-aakar;
-aakas;
-aakat;
-aakau;
-aakav;
-aakaw;
-aakax;
-aakay;
-aakaz;
-aakba;
-aakbb;
-aakbc;
-aakbd;
-aakbe;
-aakbf;
-aakbg;
-aakbh;
-aakbi;
-aakbj;
-aakbk;
-aakbl;
-aakbm;
-aakbn;
-aakbo;
-aakbp;
-aakbq;
-aakbr;
-aakbs;
-aakbt;
-aakbu;
-aakbv;
-aakbw;
-aakbx;
-aakby;
-aakbz;
-aakca;
-aakcb;
-aakcc;
-aakcd;
-aakce;
-aakcf;
-aakcg;
-aakch;
-aakci;
-aakcj;
-aakck;
-aakcl;
-aakcm;
-aakcn;
-aakco;
-aakcp;
-aakcq;
-aakcr;
-aakcs;
-aakct;
-aakcu;
-aakcv;
-aakcw;
-aakcx;
-aakcy;
-aakcz;
-aakda;
-aakdb;
-aakdc;
-aakdd;
-aakde;
-aakdf;
-aakdg;
-aakdh;
-aakdi;
-aakdj;
-aakdk;
-aakdl;
-aakdm;
-aakdn;
-aakdo;
-aakdp;
-aakdq;
-aakdr;
-aakds;
-aakdt;
-aakdu;
-aakdv;
-aakdw;
-aakdx;
-aakdy;
-aakdz;
-aakea;
-aakeb;
-aakec;
-aaked;
-aakee;
-aakef;
-aakeg;
-aakeh;
-aakei;
-aakej;
-aakek;
-aakel;
-aakem;
-aaken;
-aakeo;
-aakep;
-aakeq;
-aaker;
-aakes;
-aaket;
-aakeu;
-aakev;
-aakew;
-aakex;
-aakey;
-aakez;
-aakfa;
-aakfb;
-aakfc;
-aakfd;
-aakfe;
-aakff;
-aakfg;
-aakfh;
-aakfi;
-aakfj;
-aakfk;
-aakfl;
-aakfm;
-aakfn;
-aakfo;
-aakfp;
-aakfq;
-aakfr;
-aakfs;
-aakft;
-aakfu;
-aakfv;
-aakfw;
-aakfx;
-aakfy;
-aakfz;
-aakga;
-aakgb;
-aakgc;
-aakgd;
-aakge;
-aakgf;
-aakgg;
-aakgh;
-aakgi;
-aakgj;
-aakgk;
-aakgl;
-aakgm;
-aakgn;
-aakgo;
-aakgp;
-aakgq;
-aakgr;
-aakgs;
-aakgt;
-aakgu;
-aakgv;
-aakgw;
-aakgx;
-aakgy;
-aakgz;
-aakha;
-aakhb;
-aakhc;
-aakhd;
-aakhe;
-aakhf;
-aakhg;
-aakhh;
-aakhi;
-aakhj;
-aakhk;
-aakhl;
-aakhm;
-aakhn;
-aakho;
-aakhp;
-aakhq;
-aakhr;
-aakhs;
-aakht;
-aakhu;
-aakhv;
-aakhw;
-aakhx;
-aakhy;
-aakhz;
-aakia;
-aakib;
-aakic;
-aakid;
-aakie;
-aakif;
-aakig;
-aakih;
-aakii;
-aakij;
-aakik;
-aakil;
-aakim;
-aakin;
-aakio;
-aakip;
-aakiq;
-aakir;
-aakis;
-aakit;
-aakiu;
-aakiv;
-aakiw;
-aakix;
-aakiy;
-aakiz;
-aakja;
-aakjb;
-aakjc;
-aakjd;
-aakje;
-aakjf;
-aakjg;
-aakjh;
-aakji;
-aakjj;
-aakjk;
-aakjl;
-aakjm;
-aakjn;
-aakjo;
-aakjp;
-aakjq;
-aakjr;
-aakjs;
-aakjt;
-aakju;
-aakjv;
-aakjw;
-aakjx;
-aakjy;
-aakjz;
-aakka;
-aakkb;
-aakkc;
-aakkd;
-aakke;
-aakkf;
-aakkg;
-aakkh;
-aakki;
-aakkj;
-aakkk;
-aakkl;
-aakkm;
-aakkn;
-aakko;
-aakkp;
-aakkq;
-aakkr;
-aakks;
-aakkt;
-aakku;
-aakkv;
-aakkw;
-aakkx;
-aakky;
-aakkz;
-aakla;
-aaklb;
-aaklc;
-aakld;
-aakle;
-aaklf;
-aaklg;
-aaklh;
-aakli;
-aaklj;
-aaklk;
-aakll;
-aaklm;
-aakln;
-aaklo;
-aaklp;
-aaklq;
-aaklr;
-aakls;
-aaklt;
-aaklu;
-aaklv;
-aaklw;
-aaklx;
-aakly;
-aaklz;
-aakma;
-aakmb;
-aakmc;
-aakmd;
-aakme;
-aakmf;
-aakmg;
-aakmh;
-aakmi;
-aakmj;
-aakmk;
-aakml;
-aakmm;
-aakmn;
-aakmo;
-aakmp;
-aakmq;
-aakmr;
-aakms;
-aakmt;
-aakmu;
-aakmv;
-aakmw;
-aakmx;
-aakmy;
-aakmz;
-aakna;
-aaknb;
-aaknc;
-aaknd;
-aakne;
-aaknf;
-aakng;
-aaknh;
-aakni;
-aaknj;
-aaknk;
-aaknl;
-aaknm;
-aaknn;
-aakno;
-aaknp;
-aaknq;
-aaknr;
-aakns;
-aaknt;
-aaknu;
-aaknv;
-aaknw;
-aaknx;
-aakny;
-aaknz;
-aakoa;
-aakob;
-aakoc;
-aakod;
-aakoe;
-aakof;
-aakog;
-aakoh;
-aakoi;
-aakoj;
-aakok;
-aakol;
-aakom;
-aakon;
-aakoo;
-aakop;
-aakoq;
-aakor;
-aakos;
-aakot;
-aakou;
-aakov;
-aakow;
-aakox;
-aakoy;
-aakoz;
-aakpa;
-aakpb;
-aakpc;
-aakpd;
-aakpe;
-aakpf;
-aakpg;
-aakph;
-aakpi;
-aakpj;
-aakpk;
-aakpl;
-aakpm;
-aakpn;
-aakpo;
-aakpp;
-aakpq;
-aakpr;
-aakps;
-aakpt;
-aakpu;
-aakpv;
-aakpw;
-aakpx;
-aakpy;
-aakpz;
-aakqa;
-aakqb;
-aakqc;
-aakqd;
-aakqe;
-aakqf;
-aakqg;
-aakqh;
-aakqi;
-aakqj;
-aakqk;
-aakql;
-aakqm;
-aakqn;
-aakqo;
-aakqp;
-aakqq;
-aakqr;
-aakqs;
-aakqt;
-aakqu;
-aakqv;
-aakqw;
-aakqx;
-aakqy;
-aakqz;
-aakra;
-aakrb;
-aakrc;
-aakrd;
-aakre;
-aakrf;
-aakrg;
-aakrh;
-aakri;
-aakrj;
-aakrk;
-aakrl;
-aakrm;
-aakrn;
-aakro;
-aakrp;
-aakrq;
-aakrr;
-aakrs;
-aakrt;
-aakru;
-aakrv;
-aakrw;
-aakrx;
-aakry;
-aakrz;
-aaksa;
-aaksb;
-aaksc;
-aaksd;
-aakse;
-aaksf;
-aaksg;
-aaksh;
-aaksi;
-aaksj;
-aaksk;
-aaksl;
-aaksm;
-aaksn;
-aakso;
-aaksp;
-aaksq;
-aaksr;
-aakss;
-aakst;
-aaksu;
-aaksv;
-aaksw;
-aaksx;
-aaksy;
-aaksz;
-aakta;
-aaktb;
-aaktc;
-aaktd;
-aakte;
-aaktf;
-aaktg;
-aakth;
-aakti;
-aaktj;
-aaktk;
-aaktl;
-aaktm;
-aaktn;
-aakto;
-aaktp;
-aaktq;
-aaktr;
-aakts;
-aaktt;
-aaktu;
-aaktv;
-aaktw;
-aaktx;
-aakty;
-aaktz;
-aakua;
-aakub;
-aakuc;
-aakud;
-aakue;
-aakuf;
-aakug;
-aakuh;
-aakui;
-aakuj;
-aakuk;
-aakul;
-aakum;
-aakun;
-aakuo;
-aakup;
-aakuq;
-aakur;
-aakus;
-aakut;
-aakuu;
-aakuv;
-aakuw;
-aakux;
-aakuy;
-aakuz;
-aakva;
-aakvb;
-aakvc;
-aakvd;
-aakve;
-aakvf;
-aakvg;
-aakvh;
-aakvi;
-aakvj;
-aakvk;
-aakvl;
-aakvm;
-aakvn;
-aakvo;
-aakvp;
-aakvq;
-aakvr;
-aakvs;
-aakvt;
-aakvu;
-aakvv;
-aakvw;
-aakvx;
-aakvy;
-aakvz;
-aakwa;
-aakwb;
-aakwc;
-aakwd;
-aakwe;
-aakwf;
-aakwg;
-aakwh;
-aakwi;
-aakwj;
-aakwk;
-aakwl;
-aakwm;
-aakwn;
-aakwo;
-aakwp;
-aakwq;
-aakwr;
-aakws;
-aakwt;
-aakwu;
-aakwv;
-aakww;
-aakwx;
-aakwy;
-aakwz;
-aakxa;
-aakxb;
-aakxc;
-aakxd;
-aakxe;
-aakxf;
-aakxg;
-aakxh;
-aakxi;
-aakxj;
-aakxk;
-aakxl;
-aakxm;
-aakxn;
-aakxo;
-aakxp;
-aakxq;
-aakxr;
-aakxs;
-aakxt;
-aakxu;
-aakxv;
-aakxw;
-aakxx;
-aakxy;
-aakxz;
-aakya;
-aakyb;
-aakyc;
-aakyd;
-aakye;
-aakyf;
-aakyg;
-aakyh;
-aakyi;
-aakyj;
-aakyk;
-aakyl;
-aakym;
-aakyn;
-aakyo;
-aakyp;
-aakyq;
-aakyr;
-aakys;
-aakyt;
-aakyu;
-aakyv;
-aakyw;
-aakyx;
-aakyy;
-aakyz;
-aakza;
-aakzb;
-aakzc;
-aakzd;
-aakze;
-aakzf;
-aakzg;
-aakzh;
-aakzi;
-aakzj;
-aakzk;
-aakzl;
-aakzm;
-aakzn;
-aakzo;
-aakzp;
-aakzq;
-aakzr;
-aakzs;
-aakzt;
-aakzu;
-aakzv;
-aakzw;
-aakzx;
-aakzy;
-aakzz;
-aalaa;
-aalab;
-aalac;
-aalad;
-aalae;
-aalaf;
-aalag;
-aalah;
-aalai;
-aalaj;
-aalak;
-aalal;
-aalam;
-aalan;
-aalao;
-aalap;
-aalaq;
-aalar;
-aalas;
-aalat;
-aalau;
-aalav;
-aalaw;
-aalax;
-aalay;
-aalaz;
-aalba;
-aalbb;
-aalbc;
-aalbd;
-aalbe;
-aalbf;
-aalbg;
-aalbh;
-aalbi;
-aalbj;
-aalbk;
-aalbl;
-aalbm;
-aalbn;
-aalbo;
-aalbp;
-aalbq;
-aalbr;
-aalbs;
-aalbt;
-aalbu;
-aalbv;
-aalbw;
-aalbx;
-aalby;
-aalbz;
-aalca;
-aalcb;
-aalcc;
-aalcd;
-aalce;
-aalcf;
-aalcg;
-aalch;
-aalci;
-aalcj;
-aalck;
-aalcl;
-aalcm;
-aalcn;
-aalco;
-aalcp;
-aalcq;
-aalcr;
-aalcs;
-aalct;
-aalcu;
-aalcv;
-aalcw;
-aalcx;
-aalcy;
-aalcz;
-aalda;
-aaldb;
-aaldc;
-aaldd;
-aalde;
-aaldf;
-aaldg;
-aaldh;
-aaldi;
-aaldj;
-aaldk;
-aaldl;
-aaldm;
-aaldn;
-aaldo;
-aaldp;
-aaldq;
-aaldr;
-aalds;
-aaldt;
-aaldu;
-aaldv;
-aaldw;
-aaldx;
-aaldy;
-aaldz;
-aalea;
-aaleb;
-aalec;
-aaled;
-aalee;
-aalef;
-aaleg;
-aaleh;
-aalei;
-aalej;
-aalek;
-aalel;
-aalem;
-aalen;
-aaleo;
-aalep;
-aaleq;
-aaler;
-aales;
-aalet;
-aaleu;
-aalev;
-aalew;
-aalex;
-aaley;
-aalez;
-aalfa;
-aalfb;
-aalfc;
-aalfd;
-aalfe;
-aalff;
-aalfg;
-aalfh;
-aalfi;
-aalfj;
-aalfk;
-aalfl;
-aalfm;
-aalfn;
-aalfo;
-aalfp;
-aalfq;
-aalfr;
-aalfs;
-aalft;
-aalfu;
-aalfv;
-aalfw;
-aalfx;
-aalfy;
-aalfz;
-aalga;
-aalgb;
-aalgc;
-aalgd;
-aalge;
-aalgf;
-aalgg;
-aalgh;
-aalgi;
-aalgj;
-aalgk;
-aalgl;
-aalgm;
-aalgn;
-aalgo;
-aalgp;
-aalgq;
-aalgr;
-aalgs;
-aalgt;
-aalgu;
-aalgv;
-aalgw;
-aalgx;
-aalgy;
-aalgz;
-aalha;
-aalhb;
-aalhc;
-aalhd;
-aalhe;
-aalhf;
-aalhg;
-aalhh;
-aalhi;
-aalhj;
-aalhk;
-aalhl;
-aalhm;
-aalhn;
-aalho;
-aalhp;
-aalhq;
-aalhr;
-aalhs;
-aalht;
-aalhu;
-aalhv;
-aalhw;
-aalhx;
-aalhy;
-aalhz;
-aalia;
-aalib;
-aalic;
-aalid;
-aalie;
-aalif;
-aalig;
-aalih;
-aalii;
-aalij;
-aalik;
-aalil;
-aalim;
-aalin;
-aalio;
-aalip;
-aaliq;
-aalir;
-aalis;
-aalit;
-aaliu;
-aaliv;
-aaliw;
-aalix;
-aaliy;
-aaliz;
-aalja;
-aaljb;
-aaljc;
-aaljd;
-aalje;
-aaljf;
-aaljg;
-aaljh;
-aalji;
-aaljj;
-aaljk;
-aaljl;
-aaljm;
-aaljn;
-aaljo;
-aaljp;
-aaljq;
-aaljr;
-aaljs;
-aaljt;
-aalju;
-aaljv;
-aaljw;
-aaljx;
-aaljy;
-aaljz;
-aalka;
-aalkb;
-aalkc;
-aalkd;
-aalke;
-aalkf;
-aalkg;
-aalkh;
-aalki;
-aalkj;
-aalkk;
-aalkl;
-aalkm;
-aalkn;
-aalko;
-aalkp;
-aalkq;
-aalkr;
-aalks;
-aalkt;
-aalku;
-aalkv;
-aalkw;
-aalkx;
-aalky;
-aalkz;
-aalla;
-aallb;
-aallc;
-aalld;
-aalle;
-aallf;
-aallg;
-aallh;
-aalli;
-aallj;
-aallk;
-aalll;
-aallm;
-aalln;
-aallo;
-aallp;
-aallq;
-aallr;
-aalls;
-aallt;
-aallu;
-aallv;
-aallw;
-aallx;
-aally;
-aallz;
-aalma;
-aalmb;
-aalmc;
-aalmd;
-aalme;
-aalmf;
-aalmg;
-aalmh;
-aalmi;
-aalmj;
-aalmk;
-aalml;
-aalmm;
-aalmn;
-aalmo;
-aalmp;
-aalmq;
-aalmr;
-aalms;
-aalmt;
-aalmu;
-aalmv;
-aalmw;
-aalmx;
-aalmy;
-aalmz;
-aalna;
-aalnb;
-aalnc;
-aalnd;
-aalne;
-aalnf;
-aalng;
-aalnh;
-aalni;
-aalnj;
-aalnk;
-aalnl;
-aalnm;
-aalnn;
-aalno;
-aalnp;
-aalnq;
-aalnr;
-aalns;
-aalnt;
-aalnu;
-aalnv;
-aalnw;
-aalnx;
-aalny;
-aalnz;
-aaloa;
-aalob;
-aaloc;
-aalod;
-aaloe;
-aalof;
-aalog;
-aaloh;
-aaloi;
-aaloj;
-aalok;
-aalol;
-aalom;
-aalon;
-aaloo;
-aalop;
-aaloq;
-aalor;
-aalos;
-aalot;
-aalou;
-aalov;
-aalow;
-aalox;
-aaloy;
-aaloz;
-aalpa;
-aalpb;
-aalpc;
-aalpd;
-aalpe;
-aalpf;
-aalpg;
-aalph;
-aalpi;
-aalpj;
-aalpk;
-aalpl;
-aalpm;
-aalpn;
-aalpo;
-aalpp;
-aalpq;
-aalpr;
-aalps;
-aalpt;
-aalpu;
-aalpv;
-aalpw;
-aalpx;
-aalpy;
-aalpz;
-aalqa;
-aalqb;
-aalqc;
-aalqd;
-aalqe;
-aalqf;
-aalqg;
-aalqh;
-aalqi;
-aalqj;
-aalqk;
-aalql;
-aalqm;
-aalqn;
-aalqo;
-aalqp;
-aalqq;
-aalqr;
-aalqs;
-aalqt;
-aalqu;
-aalqv;
-aalqw;
-aalqx;
-aalqy;
-aalqz;
-aalra;
-aalrb;
-aalrc;
-aalrd;
-aalre;
-aalrf;
-aalrg;
-aalrh;
-aalri;
-aalrj;
-aalrk;
-aalrl;
-aalrm;
-aalrn;
-aalro;
-aalrp;
-aalrq;
-aalrr;
-aalrs;
-aalrt;
-aalru;
-aalrv;
-aalrw;
-aalrx;
-aalry;
-aalrz;
-aalsa;
-aalsb;
-aalsc;
-aalsd;
-aalse;
-aalsf;
-aalsg;
-aalsh;
-aalsi;
-aalsj;
-aalsk;
-aalsl;
-aalsm;
-aalsn;
-aalso;
-aalsp;
-aalsq;
-aalsr;
-aalss;
-aalst;
-aalsu;
-aalsv;
-aalsw;
-aalsx;
-aalsy;
-aalsz;
-aalta;
-aaltb;
-aaltc;
-aaltd;
-aalte;
-aaltf;
-aaltg;
-aalth;
-aalti;
-aaltj;
-aaltk;
-aaltl;
-aaltm;
-aaltn;
-aalto;
-aaltp;
-aaltq;
-aaltr;
-aalts;
-aaltt;
-aaltu;
-aaltv;
-aaltw;
-aaltx;
-aalty;
-aaltz;
-aalua;
-aalub;
-aaluc;
-aalud;
-aalue;
-aaluf;
-aalug;
-aaluh;
-aalui;
-aaluj;
-aaluk;
-aalul;
-aalum;
-aalun;
-aaluo;
-aalup;
-aaluq;
-aalur;
-aalus;
-aalut;
-aaluu;
-aaluv;
-aaluw;
-aalux;
-aaluy;
-aaluz;
-aalva;
-aalvb;
-aalvc;
-aalvd;
-aalve;
-aalvf;
-aalvg;
-aalvh;
-aalvi;
-aalvj;
-aalvk;
-aalvl;
-aalvm;
-aalvn;
-aalvo;
-aalvp;
-aalvq;
-aalvr;
-aalvs;
-aalvt;
-aalvu;
-aalvv;
-aalvw;
-aalvx;
-aalvy;
-aalvz;
-aalwa;
-aalwb;
-aalwc;
-aalwd;
-aalwe;
-aalwf;
-aalwg;
-aalwh;
-aalwi;
-aalwj;
-aalwk;
-aalwl;
-aalwm;
-aalwn;
-aalwo;
-aalwp;
-aalwq;
-aalwr;
-aalws;
-aalwt;
-aalwu;
-aalwv;
-aalww;
-aalwx;
-aalwy;
-aalwz;
-aalxa;
-aalxb;
-aalxc;
-aalxd;
-aalxe;
-aalxf;
-aalxg;
-aalxh;
-aalxi;
-aalxj;
-aalxk;
-aalxl;
-aalxm;
-aalxn;
-aalxo;
-aalxp;
-aalxq;
-aalxr;
-aalxs;
-aalxt;
-aalxu;
-aalxv;
-aalxw;
-aalxx;
-aalxy;
-aalxz;
-aalya;
-aalyb;
-aalyc;
-aalyd;
-aalye;
-aalyf;
-aalyg;
-aalyh;
-aalyi;
-aalyj;
-aalyk;
-aalyl;
-aalym;
-aalyn;
-aalyo;
-aalyp;
-aalyq;
-aalyr;
-aalys;
-aalyt;
-aalyu;
-aalyv;
-aalyw;
-aalyx;
-aalyy;
-aalyz;
-aalza;
-aalzb;
-aalzc;
-aalzd;
-aalze;
-aalzf;
-aalzg;
-aalzh;
-aalzi;
-aalzj;
-aalzk;
-aalzl;
-aalzm;
-aalzn;
-aalzo;
-aalzp;
-aalzq;
-aalzr;
-aalzs;
-aalzt;
-aalzu;
-aalzv;
-aalzw;
-aalzx;
-aalzy;
-aalzz;
-aamaa;
-aamab;
-aamac;
-aamad;
-aamae;
-aamaf;
-aamag;
-aamah;
-aamai;
-aamaj;
-aamak;
-aamal;
-aamam;
-aaman;
-aamao;
-aamap;
-aamaq;
-aamar;
-aamas;
-aamat;
-aamau;
-aamav;
-aamaw;
-aamax;
-aamay;
-aamaz;
-aamba;
-aambb;
-aambc;
-aambd;
-aambe;
-aambf;
-aambg;
-aambh;
-aambi;
-aambj;
-aambk;
-aambl;
-aambm;
-aambn;
-aambo;
-aambp;
-aambq;
-aambr;
-aambs;
-aambt;
-aambu;
-aambv;
-aambw;
-aambx;
-aamby;
-aambz;
-aamca;
-aamcb;
-aamcc;
-aamcd;
-aamce;
-aamcf;
-aamcg;
-aamch;
-aamci;
-aamcj;
-aamck;
-aamcl;
-aamcm;
-aamcn;
-aamco;
-aamcp;
-aamcq;
-aamcr;
-aamcs;
-aamct;
-aamcu;
-aamcv;
-aamcw;
-aamcx;
-aamcy;
-aamcz;
-aamda;
-aamdb;
-aamdc;
-aamdd;
-aamde;
-aamdf;
-aamdg;
-aamdh;
-aamdi;
-aamdj;
-aamdk;
-aamdl;
-aamdm;
-aamdn;
-aamdo;
-aamdp;
-aamdq;
-aamdr;
-aamds;
-aamdt;
-aamdu;
-aamdv;
-aamdw;
-aamdx;
-aamdy;
-aamdz;
-aamea;
-aameb;
-aamec;
-aamed;
-aamee;
-aamef;
-aameg;
-aameh;
-aamei;
-aamej;
-aamek;
-aamel;
-aamem;
-aamen;
-aameo;
-aamep;
-aameq;
-aamer;
-aames;
-aamet;
-aameu;
-aamev;
-aamew;
-aamex;
-aamey;
-aamez;
-aamfa;
-aamfb;
-aamfc;
-aamfd;
-aamfe;
-aamff;
-aamfg;
-aamfh;
-aamfi;
-aamfj;
-aamfk;
-aamfl;
-aamfm;
-aamfn;
-aamfo;
-aamfp;
-aamfq;
-aamfr;
-aamfs;
-aamft;
-aamfu;
-aamfv;
-aamfw;
-aamfx;
-aamfy;
-aamfz;
-aamga;
-aamgb;
-aamgc;
-aamgd;
-aamge;
-aamgf;
-aamgg;
-aamgh;
-aamgi;
-aamgj;
-aamgk;
-aamgl;
-aamgm;
-aamgn;
-aamgo;
-aamgp;
-aamgq;
-aamgr;
-aamgs;
-aamgt;
-aamgu;
-aamgv;
-aamgw;
-aamgx;
-aamgy;
-aamgz;
-aamha;
-aamhb;
-aamhc;
-aamhd;
-aamhe;
-aamhf;
-aamhg;
-aamhh;
-aamhi;
-aamhj;
-aamhk;
-aamhl;
-aamhm;
-aamhn;
-aamho;
-aamhp;
-aamhq;
-aamhr;
-aamhs;
-aamht;
-aamhu;
-aamhv;
-aamhw;
-aamhx;
-aamhy;
-aamhz;
-aamia;
-aamib;
-aamic;
-aamid;
-aamie;
-aamif;
-aamig;
-aamih;
-aamii;
-aamij;
-aamik;
-aamil;
-aamim;
-aamin;
-aamio;
-aamip;
-aamiq;
-aamir;
-aamis;
-aamit;
-aamiu;
-aamiv;
-aamiw;
-aamix;
-aamiy;
-aamiz;
-aamja;
-aamjb;
-aamjc;
-aamjd;
-aamje;
-aamjf;
-aamjg;
-aamjh;
-aamji;
-aamjj;
-aamjk;
-aamjl;
-aamjm;
-aamjn;
-aamjo;
-aamjp;
-aamjq;
-aamjr;
-aamjs;
-aamjt;
-aamju;
-aamjv;
-aamjw;
-aamjx;
-aamjy;
-aamjz;
-aamka;
-aamkb;
-aamkc;
-aamkd;
-aamke;
-aamkf;
-aamkg;
-aamkh;
-aamki;
-aamkj;
-aamkk;
-aamkl;
-aamkm;
-aamkn;
-aamko;
-aamkp;
-aamkq;
-aamkr;
-aamks;
-aamkt;
-aamku;
-aamkv;
-aamkw;
-aamkx;
-aamky;
-aamkz;
-aamla;
-aamlb;
-aamlc;
-aamld;
-aamle;
-aamlf;
-aamlg;
-aamlh;
-aamli;
-aamlj;
-aamlk;
-aamll;
-aamlm;
-aamln;
-aamlo;
-aamlp;
-aamlq;
-aamlr;
-aamls;
-aamlt;
-aamlu;
-aamlv;
-aamlw;
-aamlx;
-aamly;
-aamlz;
-aamma;
-aammb;
-aammc;
-aammd;
-aamme;
-aammf;
-aammg;
-aammh;
-aammi;
-aammj;
-aammk;
-aamml;
-aammm;
-aammn;
-aammo;
-aammp;
-aammq;
-aammr;
-aamms;
-aammt;
-aammu;
-aammv;
-aammw;
-aammx;
-aammy;
-aammz;
-aamna;
-aamnb;
-aamnc;
-aamnd;
-aamne;
-aamnf;
-aamng;
-aamnh;
-aamni;
-aamnj;
-aamnk;
-aamnl;
-aamnm;
-aamnn;
-aamno;
-aamnp;
-aamnq;
-aamnr;
-aamns;
-aamnt;
-aamnu;
-aamnv;
-aamnw;
-aamnx;
-aamny;
-aamnz;
-aamoa;
-aamob;
-aamoc;
-aamod;
-aamoe;
-aamof;
-aamog;
-aamoh;
-aamoi;
-aamoj;
-aamok;
-aamol;
-aamom;
-aamon;
-aamoo;
-aamop;
-aamoq;
-aamor;
-aamos;
-aamot;
-aamou;
-aamov;
-aamow;
-aamox;
-aamoy;
-aamoz;
-aampa;
-aampb;
-aampc;
-aampd;
-aampe;
-aampf;
-aampg;
-aamph;
-aampi;
-aampj;
-aampk;
-aampl;
-aampm;
-aampn;
-aampo;
-aampp;
-aampq;
-aampr;
-aamps;
-aampt;
-aampu;
-aampv;
-aampw;
-aampx;
-aampy;
-aampz;
-aamqa;
-aamqb;
-aamqc;
-aamqd;
-aamqe;
-aamqf;
-aamqg;
-aamqh;
-aamqi;
-aamqj;
-aamqk;
-aamql;
-aamqm;
-aamqn;
-aamqo;
-aamqp;
-aamqq;
-aamqr;
-aamqs;
-aamqt;
-aamqu;
-aamqv;
-aamqw;
-aamqx;
-aamqy;
-aamqz;
-aamra;
-aamrb;
-aamrc;
-aamrd;
-aamre;
-aamrf;
-aamrg;
-aamrh;
-aamri;
-aamrj;
-aamrk;
-aamrl;
-aamrm;
-aamrn;
-aamro;
-aamrp;
-aamrq;
-aamrr;
-aamrs;
-aamrt;
-aamru;
-aamrv;
-aamrw;
-aamrx;
-aamry;
-aamrz;
-aamsa;
-aamsb;
-aamsc;
-aamsd;
-aamse;
-aamsf;
-aamsg;
-aamsh;
-aamsi;
-aamsj;
-aamsk;
-aamsl;
-aamsm;
-aamsn;
-aamso;
-aamsp;
-aamsq;
-aamsr;
-aamss;
-aamst;
-aamsu;
-aamsv;
-aamsw;
-aamsx;
-aamsy;
-aamsz;
-aamta;
-aamtb;
-aamtc;
-aamtd;
-aamte;
-aamtf;
-aamtg;
-aamth;
-aamti;
-aamtj;
-aamtk;
-aamtl;
-aamtm;
-aamtn;
-aamto;
-aamtp;
-aamtq;
-aamtr;
-aamts;
-aamtt;
-aamtu;
-aamtv;
-aamtw;
-aamtx;
-aamty;
-aamtz;
-aamua;
-aamub;
-aamuc;
-aamud;
-aamue;
-aamuf;
-aamug;
-aamuh;
-aamui;
-aamuj;
-aamuk;
-aamul;
-aamum;
-aamun;
-aamuo;
-aamup;
-aamuq;
-aamur;
-aamus;
-aamut;
-aamuu;
-aamuv;
-aamuw;
-aamux;
-aamuy;
-aamuz;
-aamva;
-aamvb;
-aamvc;
-aamvd;
-aamve;
-aamvf;
-aamvg;
-aamvh;
-aamvi;
-aamvj;
-aamvk;
-aamvl;
-aamvm;
-aamvn;
-aamvo;
-aamvp;
-aamvq;
-aamvr;
-aamvs;
-aamvt;
-aamvu;
-aamvv;
-aamvw;
-aamvx;
-aamvy;
-aamvz;
-aamwa;
-aamwb;
-aamwc;
-aamwd;
-aamwe;
-aamwf;
-aamwg;
-aamwh;
-aamwi;
-aamwj;
-aamwk;
-aamwl;
-aamwm;
-aamwn;
-aamwo;
-aamwp;
-aamwq;
-aamwr;
-aamws;
-aamwt;
-aamwu;
-aamwv;
-aamww;
-aamwx;
-aamwy;
-aamwz;
-aamxa;
-aamxb;
-aamxc;
-aamxd;
-aamxe;
-aamxf;
-aamxg;
-aamxh;
-aamxi;
-aamxj;
-aamxk;
-aamxl;
-aamxm;
-aamxn;
-aamxo;
-aamxp;
-aamxq;
-aamxr;
-aamxs;
-aamxt;
-aamxu;
-aamxv;
-aamxw;
-aamxx;
-aamxy;
-aamxz;
-aamya;
-aamyb;
-aamyc;
-aamyd;
-aamye;
-aamyf;
-aamyg;
-aamyh;
-aamyi;
-aamyj;
-aamyk;
-aamyl;
-aamym;
-aamyn;
-aamyo;
-aamyp;
-aamyq;
-aamyr;
-aamys;
-aamyt;
-aamyu;
-aamyv;
-aamyw;
-aamyx;
-aamyy;
-aamyz;
-aamza;
-aamzb;
-aamzc;
-aamzd;
-aamze;
-aamzf;
-aamzg;
-aamzh;
-aamzi;
-aamzj;
-aamzk;
-aamzl;
-aamzm;
-aamzn;
-aamzo;
-aamzp;
-aamzq;
-aamzr;
-aamzs;
-aamzt;
-aamzu;
-aamzv;
-aamzw;
-aamzx;
-aamzy;
-aamzz;
-aanaa;
-aanab;
-aanac;
-aanad;
-aanae;
-aanaf;
-aanag;
-aanah;
-aanai;
-aanaj;
-aanak;
-aanal;
-aanam;
-aanan;
-aanao;
-aanap;
-aanaq;
-aanar;
-aanas;
-aanat;
-aanau;
-aanav;
-aanaw;
-aanax;
-aanay;
-aanaz;
-aanba;
-aanbb;
-aanbc;
-aanbd;
-aanbe;
-aanbf;
-aanbg;
-aanbh;
-aanbi;
-aanbj;
-aanbk;
-aanbl;
-aanbm;
-aanbn;
-aanbo;
-aanbp;
-aanbq;
-aanbr;
-aanbs;
-aanbt;
-aanbu;
-aanbv;
-aanbw;
-aanbx;
-aanby;
-aanbz;
-aanca;
-aancb;
-aancc;
-aancd;
-aance;
-aancf;
-aancg;
-aanch;
-aanci;
-aancj;
-aanck;
-aancl;
-aancm;
-aancn;
-aanco;
-aancp;
-aancq;
-aancr;
-aancs;
-aanct;
-aancu;
-aancv;
-aancw;
-aancx;
-aancy;
-aancz;
-aanda;
-aandb;
-aandc;
-aandd;
-aande;
-aandf;
-aandg;
-aandh;
-aandi;
-aandj;
-aandk;
-aandl;
-aandm;
-aandn;
-aando;
-aandp;
-aandq;
-aandr;
-aands;
-aandt;
-aandu;
-aandv;
-aandw;
-aandx;
-aandy;
-aandz;
-aanea;
-aaneb;
-aanec;
-aaned;
-aanee;
-aanef;
-aaneg;
-aaneh;
-aanei;
-aanej;
-aanek;
-aanel;
-aanem;
-aanen;
-aaneo;
-aanep;
-aaneq;
-aaner;
-aanes;
-aanet;
-aaneu;
-aanev;
-aanew;
-aanex;
-aaney;
-aanez;
-aanfa;
-aanfb;
-aanfc;
-aanfd;
-aanfe;
-aanff;
-aanfg;
-aanfh;
-aanfi;
-aanfj;
-aanfk;
-aanfl;
-aanfm;
-aanfn;
-aanfo;
-aanfp;
-aanfq;
-aanfr;
-aanfs;
-aanft;
-aanfu;
-aanfv;
-aanfw;
-aanfx;
-aanfy;
-aanfz;
-aanga;
-aangb;
-aangc;
-aangd;
-aange;
-aangf;
-aangg;
-aangh;
-aangi;
-aangj;
-aangk;
-aangl;
-aangm;
-aangn;
-aango;
-aangp;
-aangq;
-aangr;
-aangs;
-aangt;
-aangu;
-aangv;
-aangw;
-aangx;
-aangy;
-aangz;
-aanha;
-aanhb;
-aanhc;
-aanhd;
-aanhe;
-aanhf;
-aanhg;
-aanhh;
-aanhi;
-aanhj;
-aanhk;
-aanhl;
-aanhm;
-aanhn;
-aanho;
-aanhp;
-aanhq;
-aanhr;
-aanhs;
-aanht;
-aanhu;
-aanhv;
-aanhw;
-aanhx;
-aanhy;
-aanhz;
-aania;
-aanib;
-aanic;
-aanid;
-aanie;
-aanif;
-aanig;
-aanih;
-aanii;
-aanij;
-aanik;
-aanil;
-aanim;
-aanin;
-aanio;
-aanip;
-aaniq;
-aanir;
-aanis;
-aanit;
-aaniu;
-aaniv;
-aaniw;
-aanix;
-aaniy;
-aaniz;
-aanja;
-aanjb;
-aanjc;
-aanjd;
-aanje;
-aanjf;
-aanjg;
-aanjh;
-aanji;
-aanjj;
-aanjk;
-aanjl;
-aanjm;
-aanjn;
-aanjo;
-aanjp;
-aanjq;
-aanjr;
-aanjs;
-aanjt;
-aanju;
-aanjv;
-aanjw;
-aanjx;
-aanjy;
-aanjz;
-aanka;
-aankb;
-aankc;
-aankd;
-aanke;
-aankf;
-aankg;
-aankh;
-aanki;
-aankj;
-aankk;
-aankl;
-aankm;
-aankn;
-aanko;
-aankp;
-aankq;
-aankr;
-aanks;
-aankt;
-aanku;
-aankv;
-aankw;
-aankx;
-aanky;
-aankz;
-aanla;
-aanlb;
-aanlc;
-aanld;
-aanle;
-aanlf;
-aanlg;
-aanlh;
-aanli;
-aanlj;
-aanlk;
-aanll;
-aanlm;
-aanln;
-aanlo;
-aanlp;
-aanlq;
-aanlr;
-aanls;
-aanlt;
-aanlu;
-aanlv;
-aanlw;
-aanlx;
-aanly;
-aanlz;
-aanma;
-aanmb;
-aanmc;
-aanmd;
-aanme;
-aanmf;
-aanmg;
-aanmh;
-aanmi;
-aanmj;
-aanmk;
-aanml;
-aanmm;
-aanmn;
-aanmo;
-aanmp;
-aanmq;
-aanmr;
-aanms;
-aanmt;
-aanmu;
-aanmv;
-aanmw;
-aanmx;
-aanmy;
-aanmz;
-aanna;
-aannb;
-aannc;
-aannd;
-aanne;
-aannf;
-aanng;
-aannh;
-aanni;
-aannj;
-aannk;
-aannl;
-aannm;
-aannn;
-aanno;
-aannp;
-aannq;
-aannr;
-aanns;
-aannt;
-aannu;
-aannv;
-aannw;
-aannx;
-aanny;
-aannz;
-aanoa;
-aanob;
-aanoc;
-aanod;
-aanoe;
-aanof;
-aanog;
-aanoh;
-aanoi;
-aanoj;
-aanok;
-aanol;
-aanom;
-aanon;
-aanoo;
-aanop;
-aanoq;
-aanor;
-aanos;
-aanot;
-aanou;
-aanov;
-aanow;
-aanox;
-aanoy;
-aanoz;
-aanpa;
-aanpb;
-aanpc;
-aanpd;
-aanpe;
-aanpf;
-aanpg;
-aanph;
-aanpi;
-aanpj;
-aanpk;
-aanpl;
-aanpm;
-aanpn;
-aanpo;
-aanpp;
-aanpq;
-aanpr;
-aanps;
-aanpt;
-aanpu;
-aanpv;
-aanpw;
-aanpx;
-aanpy;
-aanpz;
-aanqa;
-aanqb;
-aanqc;
-aanqd;
-aanqe;
-aanqf;
-aanqg;
-aanqh;
-aanqi;
-aanqj;
-aanqk;
-aanql;
-aanqm;
-aanqn;
-aanqo;
-aanqp;
-aanqq;
-aanqr;
-aanqs;
-aanqt;
-aanqu;
-aanqv;
-aanqw;
-aanqx;
-aanqy;
-aanqz;
-aanra;
-aanrb;
-aanrc;
-aanrd;
-aanre;
-aanrf;
-aanrg;
-aanrh;
-aanri;
-aanrj;
-aanrk;
-aanrl;
-aanrm;
-aanrn;
-aanro;
-aanrp;
-aanrq;
-aanrr;
-aanrs;
-aanrt;
-aanru;
-aanrv;
-aanrw;
-aanrx;
-aanry;
-aanrz;
-aansa;
-aansb;
-aansc;
-aansd;
-aanse;
-aansf;
-aansg;
-aansh;
-aansi;
-aansj;
-aansk;
-aansl;
-aansm;
-aansn;
-aanso;
-aansp;
-aansq;
-aansr;
-aanss;
-aanst;
-aansu;
-aansv;
-aansw;
-aansx;
-aansy;
-aansz;
-aanta;
-aantb;
-aantc;
-aantd;
-aante;
-aantf;
-aantg;
-aanth;
-aanti;
-aantj;
-aantk;
-aantl;
-aantm;
-aantn;
-aanto;
-aantp;
-aantq;
-aantr;
-aants;
-aantt;
-aantu;
-aantv;
-aantw;
-aantx;
-aanty;
-aantz;
-aanua;
-aanub;
-aanuc;
-aanud;
-aanue;
-aanuf;
-aanug;
-aanuh;
-aanui;
-aanuj;
-aanuk;
-aanul;
-aanum;
-aanun;
-aanuo;
-aanup;
-aanuq;
-aanur;
-aanus;
-aanut;
-aanuu;
-aanuv;
-aanuw;
-aanux;
-aanuy;
-aanuz;
-aanva;
-aanvb;
-aanvc;
-aanvd;
-aanve;
-aanvf;
-aanvg;
-aanvh;
-aanvi;
-aanvj;
-aanvk;
-aanvl;
-aanvm;
-aanvn;
-aanvo;
-aanvp;
-aanvq;
-aanvr;
-aanvs;
-aanvt;
-aanvu;
-aanvv;
-aanvw;
-aanvx;
-aanvy;
-aanvz;
-aanwa;
-aanwb;
-aanwc;
-aanwd;
-aanwe;
-aanwf;
-aanwg;
-aanwh;
-aanwi;
-aanwj;
-aanwk;
-aanwl;
-aanwm;
-aanwn;
-aanwo;
-aanwp;
-aanwq;
-aanwr;
-aanws;
-aanwt;
-aanwu;
-aanwv;
-aanww;
-aanwx;
-aanwy;
-aanwz;
-aanxa;
-aanxb;
-aanxc;
-aanxd;
-aanxe;
-aanxf;
-aanxg;
-aanxh;
-aanxi;
-aanxj;
-aanxk;
-aanxl;
-aanxm;
-aanxn;
-aanxo;
-aanxp;
-aanxq;
-aanxr;
-aanxs;
-aanxt;
-aanxu;
-aanxv;
-aanxw;
-aanxx;
-aanxy;
-aanxz;
-aanya;
-aanyb;
-aanyc;
-aanyd;
-aanye;
-aanyf;
-aanyg;
-aanyh;
-aanyi;
-aanyj;
-aanyk;
-aanyl;
-aanym;
-aanyn;
-aanyo;
-aanyp;
-aanyq;
-aanyr;
-aanys;
-aanyt;
-aanyu;
-aanyv;
-aanyw;
-aanyx;
-aanyy;
-aanyz;
-aanza;
-aanzb;
-aanzc;
-aanzd;
-aanze;
-aanzf;
-aanzg;
-aanzh;
-aanzi;
-aanzj;
-aanzk;
-aanzl;
-aanzm;
-aanzn;
-aanzo;
-aanzp;
-aanzq;
-aanzr;
-aanzs;
-aanzt;
-aanzu;
-aanzv;
-aanzw;
-aanzx;
-aanzy;
-aanzz;
-aaoaa;
-aaoab;
-aaoac;
-aaoad;
-aaoae;
-aaoaf;
-aaoag;
-aaoah;
-aaoai;
-aaoaj;
-aaoak;
-aaoal;
-aaoam;
-aaoan;
-aaoao;
-aaoap;
-aaoaq;
-aaoar;
-aaoas;
-aaoat;
-aaoau;
-aaoav;
-aaoaw;
-aaoax;
-aaoay;
-aaoaz;
-aaoba;
-aaobb;
-aaobc;
-aaobd;
-aaobe;
-aaobf;
-aaobg;
-aaobh;
-aaobi;
-aaobj;
-aaobk;
-aaobl;
-aaobm;
-aaobn;
-aaobo;
-aaobp;
-aaobq;
-aaobr;
-aaobs;
-aaobt;
-aaobu;
-aaobv;
-aaobw;
-aaobx;
-aaoby;
-aaobz;
-aaoca;
-aaocb;
-aaocc;
-aaocd;
-aaoce;
-aaocf;
-aaocg;
-aaoch;
-aaoci;
-aaocj;
-aaock;
-aaocl;
-aaocm;
-aaocn;
-aaoco;
-aaocp;
-aaocq;
-aaocr;
-aaocs;
-aaoct;
-aaocu;
-aaocv;
-aaocw;
-aaocx;
-aaocy;
-aaocz;
-aaoda;
-aaodb;
-aaodc;
-aaodd;
-aaode;
-aaodf;
-aaodg;
-aaodh;
-aaodi;
-aaodj;
-aaodk;
-aaodl;
-aaodm;
-aaodn;
-aaodo;
-aaodp;
-aaodq;
-aaodr;
-aaods;
-aaodt;
-aaodu;
-aaodv;
-aaodw;
-aaodx;
-aaody;
-aaodz;
-aaoea;
-aaoeb;
-aaoec;
-aaoed;
-aaoee;
-aaoef;
-aaoeg;
-aaoeh;
-aaoei;
-aaoej;
-aaoek;
-aaoel;
-aaoem;
-aaoen;
-aaoeo;
-aaoep;
-aaoeq;
-aaoer;
-aaoes;
-aaoet;
-aaoeu;
-aaoev;
-aaoew;
-aaoex;
-aaoey;
-aaoez;
-aaofa;
-aaofb;
-aaofc;
-aaofd;
-aaofe;
-aaoff;
-aaofg;
-aaofh;
-aaofi;
-aaofj;
-aaofk;
-aaofl;
-aaofm;
-aaofn;
-aaofo;
-aaofp;
-aaofq;
-aaofr;
-aaofs;
-aaoft;
-aaofu;
-aaofv;
-aaofw;
-aaofx;
-aaofy;
-aaofz;
-aaoga;
-aaogb;
-aaogc;
-aaogd;
-aaoge;
-aaogf;
-aaogg;
-aaogh;
-aaogi;
-aaogj;
-aaogk;
-aaogl;
-aaogm;
-aaogn;
-aaogo;
-aaogp;
-aaogq;
-aaogr;
-aaogs;
-aaogt;
-aaogu;
-aaogv;
-aaogw;
-aaogx;
-aaogy;
-aaogz;
-aaoha;
-aaohb;
-aaohc;
-aaohd;
-aaohe;
-aaohf;
-aaohg;
-aaohh;
-aaohi;
-aaohj;
-aaohk;
-aaohl;
-aaohm;
-aaohn;
-aaoho;
-aaohp;
-aaohq;
-aaohr;
-aaohs;
-aaoht;
-aaohu;
-aaohv;
-aaohw;
-aaohx;
-aaohy;
-aaohz;
-aaoia;
-aaoib;
-aaoic;
-aaoid;
-aaoie;
-aaoif;
-aaoig;
-aaoih;
-aaoii;
-aaoij;
-aaoik;
-aaoil;
-aaoim;
-aaoin;
-aaoio;
-aaoip;
-aaoiq;
-aaoir;
-aaois;
-aaoit;
-aaoiu;
-aaoiv;
-aaoiw;
-aaoix;
-aaoiy;
-aaoiz;
-aaoja;
-aaojb;
-aaojc;
-aaojd;
-aaoje;
-aaojf;
-aaojg;
-aaojh;
-aaoji;
-aaojj;
-aaojk;
-aaojl;
-aaojm;
-aaojn;
-aaojo;
-aaojp;
-aaojq;
-aaojr;
-aaojs;
-aaojt;
-aaoju;
-aaojv;
-aaojw;
-aaojx;
-aaojy;
-aaojz;
-aaoka;
-aaokb;
-aaokc;
-aaokd;
-aaoke;
-aaokf;
-aaokg;
-aaokh;
-aaoki;
-aaokj;
-aaokk;
-aaokl;
-aaokm;
-aaokn;
-aaoko;
-aaokp;
-aaokq;
-aaokr;
-aaoks;
-aaokt;
-aaoku;
-aaokv;
-aaokw;
-aaokx;
-aaoky;
-aaokz;
-aaola;
-aaolb;
-aaolc;
-aaold;
-aaole;
-aaolf;
-aaolg;
-aaolh;
-aaoli;
-aaolj;
-aaolk;
-aaoll;
-aaolm;
-aaoln;
-aaolo;
-aaolp;
-aaolq;
-aaolr;
-aaols;
-aaolt;
-aaolu;
-aaolv;
-aaolw;
-aaolx;
-aaoly;
-aaolz;
-aaoma;
-aaomb;
-aaomc;
-aaomd;
-aaome;
-aaomf;
-aaomg;
-aaomh;
-aaomi;
-aaomj;
-aaomk;
-aaoml;
-aaomm;
-aaomn;
-aaomo;
-aaomp;
-aaomq;
-aaomr;
-aaoms;
-aaomt;
-aaomu;
-aaomv;
-aaomw;
-aaomx;
-aaomy;
-aaomz;
-aaona;
-aaonb;
-aaonc;
-aaond;
-aaone;
-aaonf;
-aaong;
-aaonh;
-aaoni;
-aaonj;
-aaonk;
-aaonl;
-aaonm;
-aaonn;
-aaono;
-aaonp;
-aaonq;
-aaonr;
-aaons;
-aaont;
-aaonu;
-aaonv;
-aaonw;
-aaonx;
-aaony;
-aaonz;
-aaooa;
-aaoob;
-aaooc;
-aaood;
-aaooe;
-aaoof;
-aaoog;
-aaooh;
-aaooi;
-aaooj;
-aaook;
-aaool;
-aaoom;
-aaoon;
-aaooo;
-aaoop;
-aaooq;
-aaoor;
-aaoos;
-aaoot;
-aaoou;
-aaoov;
-aaoow;
-aaoox;
-aaooy;
-aaooz;
-aaopa;
-aaopb;
-aaopc;
-aaopd;
-aaope;
-aaopf;
-aaopg;
-aaoph;
-aaopi;
-aaopj;
-aaopk;
-aaopl;
-aaopm;
-aaopn;
-aaopo;
-aaopp;
-aaopq;
-aaopr;
-aaops;
-aaopt;
-aaopu;
-aaopv;
-aaopw;
-aaopx;
-aaopy;
-aaopz;
-aaoqa;
-aaoqb;
-aaoqc;
-aaoqd;
-aaoqe;
-aaoqf;
-aaoqg;
-aaoqh;
-aaoqi;
-aaoqj;
-aaoqk;
-aaoql;
-aaoqm;
-aaoqn;
-aaoqo;
-aaoqp;
-aaoqq;
-aaoqr;
-aaoqs;
-aaoqt;
-aaoqu;
-aaoqv;
-aaoqw;
-aaoqx;
-aaoqy;
-aaoqz;
-aaora;
-aaorb;
-aaorc;
-aaord;
-aaore;
-aaorf;
-aaorg;
-aaorh;
-aaori;
-aaorj;
-aaork;
-aaorl;
-aaorm;
-aaorn;
-aaoro;
-aaorp;
-aaorq;
-aaorr;
-aaors;
-aaort;
-aaoru;
-aaorv;
-aaorw;
-aaorx;
-aaory;
-aaorz;
-aaosa;
-aaosb;
-aaosc;
-aaosd;
-aaose;
-aaosf;
-aaosg;
-aaosh;
-aaosi;
-aaosj;
-aaosk;
-aaosl;
-aaosm;
-aaosn;
-aaoso;
-aaosp;
-aaosq;
-aaosr;
-aaoss;
-aaost;
-aaosu;
-aaosv;
-aaosw;
-aaosx;
-aaosy;
-aaosz;
-aaota;
-aaotb;
-aaotc;
-aaotd;
-aaote;
-aaotf;
-aaotg;
-aaoth;
-aaoti;
-aaotj;
-aaotk;
-aaotl;
-aaotm;
-aaotn;
-aaoto;
-aaotp;
-aaotq;
-aaotr;
-aaots;
-aaott;
-aaotu;
-aaotv;
-aaotw;
-aaotx;
-aaoty;
-aaotz;
-aaoua;
-aaoub;
-aaouc;
-aaoud;
-aaoue;
-aaouf;
-aaoug;
-aaouh;
-aaoui;
-aaouj;
-aaouk;
-aaoul;
-aaoum;
-aaoun;
-aaouo;
-aaoup;
-aaouq;
-aaour;
-aaous;
-aaout;
-aaouu;
-aaouv;
-aaouw;
-aaoux;
-aaouy;
-aaouz;
-aaova;
-aaovb;
-aaovc;
-aaovd;
-aaove;
-aaovf;
-aaovg;
-aaovh;
-aaovi;
-aaovj;
-aaovk;
-aaovl;
-aaovm;
-aaovn;
-aaovo;
-aaovp;
-aaovq;
-aaovr;
-aaovs;
-aaovt;
-aaovu;
-aaovv;
-aaovw;
-aaovx;
-aaovy;
-aaovz;
-aaowa;
-aaowb;
-aaowc;
-aaowd;
-aaowe;
-aaowf;
-aaowg;
-aaowh;
-aaowi;
-aaowj;
-aaowk;
-aaowl;
-aaowm;
-aaown;
-aaowo;
-aaowp;
-aaowq;
-aaowr;
-aaows;
-aaowt;
-aaowu;
-aaowv;
-aaoww;
-aaowx;
-aaowy;
-aaowz;
-aaoxa;
-aaoxb;
-aaoxc;
-aaoxd;
-aaoxe;
-aaoxf;
-aaoxg;
-aaoxh;
-aaoxi;
-aaoxj;
-aaoxk;
-aaoxl;
-aaoxm;
-aaoxn;
-aaoxo;
-aaoxp;
-aaoxq;
-aaoxr;
-aaoxs;
-aaoxt;
-aaoxu;
-aaoxv;
-aaoxw;
-aaoxx;
-aaoxy;
-aaoxz;
-aaoya;
-aaoyb;
-aaoyc;
-aaoyd;
-aaoye;
-aaoyf;
-aaoyg;
-aaoyh;
-aaoyi;
-aaoyj;
-aaoyk;
-aaoyl;
-aaoym;
-aaoyn;
-aaoyo;
-aaoyp;
-aaoyq;
-aaoyr;
-aaoys;
-aaoyt;
-aaoyu;
-aaoyv;
-aaoyw;
-aaoyx;
-aaoyy;
-aaoyz;
-aaoza;
-aaozb;
-aaozc;
-aaozd;
-aaoze;
-aaozf;
-aaozg;
-aaozh;
-aaozi;
-aaozj;
-aaozk;
-aaozl;
-aaozm;
-aaozn;
-aaozo;
-aaozp;
-aaozq;
-aaozr;
-aaozs;
-aaozt;
-aaozu;
-aaozv;
-aaozw;
-aaozx;
-aaozy;
-aaozz;
-aapaa;
-aapab;
-aapac;
-aapad;
-aapae;
-aapaf;
-aapag;
-aapah;
-aapai;
-aapaj;
-aapak;
-aapal;
-aapam;
-aapan;
-aapao;
-aapap;
-aapaq;
-aapar;
-aapas;
-aapat;
-aapau;
-aapav;
-aapaw;
-aapax;
-aapay;
-aapaz;
-aapba;
-aapbb;
-aapbc;
-aapbd;
-aapbe;
-aapbf;
-aapbg;
-aapbh;
-aapbi;
-aapbj;
-aapbk;
-aapbl;
-aapbm;
-aapbn;
-aapbo;
-aapbp;
-aapbq;
-aapbr;
-aapbs;
-aapbt;
-aapbu;
-aapbv;
-aapbw;
-aapbx;
-aapby;
-aapbz;
-aapca;
-aapcb;
-aapcc;
-aapcd;
-aapce;
-aapcf;
-aapcg;
-aapch;
-aapci;
-aapcj;
-aapck;
-aapcl;
-aapcm;
-aapcn;
-aapco;
-aapcp;
-aapcq;
-aapcr;
-aapcs;
-aapct;
-aapcu;
-aapcv;
-aapcw;
-aapcx;
-aapcy;
-aapcz;
-aapda;
-aapdb;
-aapdc;
-aapdd;
-aapde;
-aapdf;
-aapdg;
-aapdh;
-aapdi;
-aapdj;
-aapdk;
-aapdl;
-aapdm;
-aapdn;
-aapdo;
-aapdp;
-aapdq;
-aapdr;
-aapds;
-aapdt;
-aapdu;
-aapdv;
-aapdw;
-aapdx;
-aapdy;
-aapdz;
-aapea;
-aapeb;
-aapec;
-aaped;
-aapee;
-aapef;
-aapeg;
-aapeh;
-aapei;
-aapej;
-aapek;
-aapel;
-aapem;
-aapen;
-aapeo;
-aapep;
-aapeq;
-aaper;
-aapes;
-aapet;
-aapeu;
-aapev;
-aapew;
-aapex;
-aapey;
-aapez;
-aapfa;
-aapfb;
-aapfc;
-aapfd;
-aapfe;
-aapff;
-aapfg;
-aapfh;
-aapfi;
-aapfj;
-aapfk;
-aapfl;
-aapfm;
-aapfn;
-aapfo;
-aapfp;
-aapfq;
-aapfr;
-aapfs;
-aapft;
-aapfu;
-aapfv;
-aapfw;
-aapfx;
-aapfy;
-aapfz;
-aapga;
-aapgb;
-aapgc;
-aapgd;
-aapge;
-aapgf;
-aapgg;
-aapgh;
-aapgi;
-aapgj;
-aapgk;
-aapgl;
-aapgm;
-aapgn;
-aapgo;
-aapgp;
-aapgq;
-aapgr;
-aapgs;
-aapgt;
-aapgu;
-aapgv;
-aapgw;
-aapgx;
-aapgy;
-aapgz;
-aapha;
-aaphb;
-aaphc;
-aaphd;
-aaphe;
-aaphf;
-aaphg;
-aaphh;
-aaphi;
-aaphj;
-aaphk;
-aaphl;
-aaphm;
-aaphn;
-aapho;
-aaphp;
-aaphq;
-aaphr;
-aaphs;
-aapht;
-aaphu;
-aaphv;
-aaphw;
-aaphx;
-aaphy;
-aaphz;
-aapia;
-aapib;
-aapic;
-aapid;
-aapie;
-aapif;
-aapig;
-aapih;
-aapii;
-aapij;
-aapik;
-aapil;
-aapim;
-aapin;
-aapio;
-aapip;
-aapiq;
-aapir;
-aapis;
-aapit;
-aapiu;
-aapiv;
-aapiw;
-aapix;
-aapiy;
-aapiz;
-aapja;
-aapjb;
-aapjc;
-aapjd;
-aapje;
-aapjf;
-aapjg;
-aapjh;
-aapji;
-aapjj;
-aapjk;
-aapjl;
-aapjm;
-aapjn;
-aapjo;
-aapjp;
-aapjq;
-aapjr;
-aapjs;
-aapjt;
-aapju;
-aapjv;
-aapjw;
-aapjx;
-aapjy;
-aapjz;
-aapka;
-aapkb;
-aapkc;
-aapkd;
-aapke;
-aapkf;
-aapkg;
-aapkh;
-aapki;
-aapkj;
-aapkk;
-aapkl;
-aapkm;
-aapkn;
-aapko;
-aapkp;
-aapkq;
-aapkr;
-aapks;
-aapkt;
-aapku;
-aapkv;
-aapkw;
-aapkx;
-aapky;
-aapkz;
-aapla;
-aaplb;
-aaplc;
-aapld;
-aaple;
-aaplf;
-aaplg;
-aaplh;
-aapli;
-aaplj;
-aaplk;
-aapll;
-aaplm;
-aapln;
-aaplo;
-aaplp;
-aaplq;
-aaplr;
-aapls;
-aaplt;
-aaplu;
-aaplv;
-aaplw;
-aaplx;
-aaply;
-aaplz;
-aapma;
-aapmb;
-aapmc;
-aapmd;
-aapme;
-aapmf;
-aapmg;
-aapmh;
-aapmi;
-aapmj;
-aapmk;
-aapml;
-aapmm;
-aapmn;
-aapmo;
-aapmp;
-aapmq;
-aapmr;
-aapms;
-aapmt;
-aapmu;
-aapmv;
-aapmw;
-aapmx;
-aapmy;
-aapmz;
-aapna;
-aapnb;
-aapnc;
-aapnd;
-aapne;
-aapnf;
-aapng;
-aapnh;
-aapni;
-aapnj;
-aapnk;
-aapnl;
-aapnm;
-aapnn;
-aapno;
-aapnp;
-aapnq;
-aapnr;
-aapns;
-aapnt;
-aapnu;
-aapnv;
-aapnw;
-aapnx;
-aapny;
-aapnz;
-aapoa;
-aapob;
-aapoc;
-aapod;
-aapoe;
-aapof;
-aapog;
-aapoh;
-aapoi;
-aapoj;
-aapok;
-aapol;
-aapom;
-aapon;
-aapoo;
-aapop;
-aapoq;
-aapor;
-aapos;
-aapot;
-aapou;
-aapov;
-aapow;
-aapox;
-aapoy;
-aapoz;
-aappa;
-aappb;
-aappc;
-aappd;
-aappe;
-aappf;
-aappg;
-aapph;
-aappi;
-aappj;
-aappk;
-aappl;
-aappm;
-aappn;
-aappo;
-aappp;
-aappq;
-aappr;
-aapps;
-aappt;
-aappu;
-aappv;
-aappw;
-aappx;
-aappy;
-aappz;
-aapqa;
-aapqb;
-aapqc;
-aapqd;
-aapqe;
-aapqf;
-aapqg;
-aapqh;
-aapqi;
-aapqj;
-aapqk;
-aapql;
-aapqm;
-aapqn;
-aapqo;
-aapqp;
-aapqq;
-aapqr;
-aapqs;
-aapqt;
-aapqu;
-aapqv;
-aapqw;
-aapqx;
-aapqy;
-aapqz;
-aapra;
-aaprb;
-aaprc;
-aaprd;
-aapre;
-aaprf;
-aaprg;
-aaprh;
-aapri;
-aaprj;
-aaprk;
-aaprl;
-aaprm;
-aaprn;
-aapro;
-aaprp;
-aaprq;
-aaprr;
-aaprs;
-aaprt;
-aapru;
-aaprv;
-aaprw;
-aaprx;
-aapry;
-aaprz;
-aapsa;
-aapsb;
-aapsc;
-aapsd;
-aapse;
-aapsf;
-aapsg;
-aapsh;
-aapsi;
-aapsj;
-aapsk;
-aapsl;
-aapsm;
-aapsn;
-aapso;
-aapsp;
-aapsq;
-aapsr;
-aapss;
-aapst;
-aapsu;
-aapsv;
-aapsw;
-aapsx;
-aapsy;
-aapsz;
-aapta;
-aaptb;
-aaptc;
-aaptd;
-aapte;
-aaptf;
-aaptg;
-aapth;
-aapti;
-aaptj;
-aaptk;
-aaptl;
-aaptm;
-aaptn;
-aapto;
-aaptp;
-aaptq;
-aaptr;
-aapts;
-aaptt;
-aaptu;
-aaptv;
-aaptw;
-aaptx;
-aapty;
-aaptz;
-aapua;
-aapub;
-aapuc;
-aapud;
-aapue;
-aapuf;
-aapug;
-aapuh;
-aapui;
-aapuj;
-aapuk;
-aapul;
-aapum;
-aapun;
-aapuo;
-aapup;
-aapuq;
-aapur;
-aapus;
-aaput;
-aapuu;
-aapuv;
-aapuw;
-aapux;
-aapuy;
-aapuz;
-aapva;
-aapvb;
-aapvc;
-aapvd;
-aapve;
-aapvf;
-aapvg;
-aapvh;
-aapvi;
-aapvj;
-aapvk;
-aapvl;
-aapvm;
-aapvn;
-aapvo;
-aapvp;
-aapvq;
-aapvr;
-aapvs;
-aapvt;
-aapvu;
-aapvv;
-aapvw;
-aapvx;
-aapvy;
-aapvz;
-aapwa;
-aapwb;
-aapwc;
-aapwd;
-aapwe;
-aapwf;
-aapwg;
-aapwh;
-aapwi;
-aapwj;
-aapwk;
-aapwl;
-aapwm;
-aapwn;
-aapwo;
-aapwp;
-aapwq;
-aapwr;
-aapws;
-aapwt;
-aapwu;
-aapwv;
-aapww;
-aapwx;
-aapwy;
-aapwz;
-aapxa;
-aapxb;
-aapxc;
-aapxd;
-aapxe;
-aapxf;
-aapxg;
-aapxh;
-aapxi;
-aapxj;
-aapxk;
-aapxl;
-aapxm;
-aapxn;
-aapxo;
-aapxp;
-aapxq;
-aapxr;
-aapxs;
-aapxt;
-aapxu;
-aapxv;
-aapxw;
-aapxx;
-aapxy;
-aapxz;
-aapya;
-aapyb;
-aapyc;
-aapyd;
-aapye;
-aapyf;
-aapyg;
-aapyh;
-aapyi;
-aapyj;
-aapyk;
-aapyl;
-aapym;
-aapyn;
-aapyo;
-aapyp;
-aapyq;
-aapyr;
-aapys;
-aapyt;
-aapyu;
-aapyv;
-aapyw;
-aapyx;
-aapyy;
-aapyz;
-aapza;
-aapzb;
-aapzc;
-aapzd;
-aapze;
-aapzf;
-aapzg;
-aapzh;
-aapzi;
-aapzj;
-aapzk;
-aapzl;
-aapzm;
-aapzn;
-aapzo;
-aapzp;
-aapzq;
-aapzr;
-aapzs;
-aapzt;
-aapzu;
-aapzv;
-aapzw;
-aapzx;
-aapzy;
-aapzz;
-aaqaa;
-aaqab;
-aaqac;
-aaqad;
-aaqae;
-aaqaf;
-aaqag;
-aaqah;
-aaqai;
-aaqaj;
-aaqak;
-aaqal;
-aaqam;
-aaqan;
-aaqao;
-aaqap;
-aaqaq;
-aaqar;
-aaqas;
-aaqat;
-aaqau;
-aaqav;
-aaqaw;
-aaqax;
-aaqay;
-aaqaz;
-aaqba;
-aaqbb;
-aaqbc;
-aaqbd;
-aaqbe;
-aaqbf;
-aaqbg;
-aaqbh;
-aaqbi;
-aaqbj;
-aaqbk;
-aaqbl;
-aaqbm;
-aaqbn;
-aaqbo;
-aaqbp;
-aaqbq;
-aaqbr;
-aaqbs;
-aaqbt;
-aaqbu;
-aaqbv;
-aaqbw;
-aaqbx;
-aaqby;
-aaqbz;
-aaqca;
-aaqcb;
-aaqcc;
-aaqcd;
-aaqce;
-aaqcf;
-aaqcg;
-aaqch;
-aaqci;
-aaqcj;
-aaqck;
-aaqcl;
-aaqcm;
-aaqcn;
-aaqco;
-aaqcp;
-aaqcq;
-aaqcr;
-aaqcs;
-aaqct;
-aaqcu;
-aaqcv;
-aaqcw;
-aaqcx;
-aaqcy;
-aaqcz;
-aaqda;
-aaqdb;
-aaqdc;
-aaqdd;
-aaqde;
-aaqdf;
-aaqdg;
-aaqdh;
-aaqdi;
-aaqdj;
-aaqdk;
-aaqdl;
-aaqdm;
-aaqdn;
-aaqdo;
-aaqdp;
-aaqdq;
-aaqdr;
-aaqds;
-aaqdt;
-aaqdu;
-aaqdv;
-aaqdw;
-aaqdx;
-aaqdy;
-aaqdz;
-aaqea;
-aaqeb;
-aaqec;
-aaqed;
-aaqee;
-aaqef;
-aaqeg;
-aaqeh;
-aaqei;
-aaqej;
-aaqek;
-aaqel;
-aaqem;
-aaqen;
-aaqeo;
-aaqep;
-aaqeq;
-aaqer;
-aaqes;
-aaqet;
-aaqeu;
-aaqev;
-aaqew;
-aaqex;
-aaqey;
-aaqez;
-aaqfa;
-aaqfb;
-aaqfc;
-aaqfd;
-aaqfe;
-aaqff;
-aaqfg;
-aaqfh;
-aaqfi;
-aaqfj;
-aaqfk;
-aaqfl;
-aaqfm;
-aaqfn;
-aaqfo;
-aaqfp;
-aaqfq;
-aaqfr;
-aaqfs;
-aaqft;
-aaqfu;
-aaqfv;
-aaqfw;
-aaqfx;
-aaqfy;
-aaqfz;
-aaqga;
-aaqgb;
-aaqgc;
-aaqgd;
-aaqge;
-aaqgf;
-aaqgg;
-aaqgh;
-aaqgi;
-aaqgj;
-aaqgk;
-aaqgl;
-aaqgm;
-aaqgn;
-aaqgo;
-aaqgp;
-aaqgq;
-aaqgr;
-aaqgs;
-aaqgt;
-aaqgu;
-aaqgv;
-aaqgw;
-aaqgx;
-aaqgy;
-aaqgz;
-aaqha;
-aaqhb;
-aaqhc;
-aaqhd;
-aaqhe;
-aaqhf;
-aaqhg;
-aaqhh;
-aaqhi;
-aaqhj;
-aaqhk;
-aaqhl;
-aaqhm;
-aaqhn;
-aaqho;
-aaqhp;
-aaqhq;
-aaqhr;
-aaqhs;
-aaqht;
-aaqhu;
-aaqhv;
-aaqhw;
-aaqhx;
-aaqhy;
-aaqhz;
-aaqia;
-aaqib;
-aaqic;
-aaqid;
-aaqie;
-aaqif;
-aaqig;
-aaqih;
-aaqii;
-aaqij;
-aaqik;
-aaqil;
-aaqim;
-aaqin;
-aaqio;
-aaqip;
-aaqiq;
-aaqir;
-aaqis;
-aaqit;
-aaqiu;
-aaqiv;
-aaqiw;
-aaqix;
-aaqiy;
-aaqiz;
-aaqja;
-aaqjb;
-aaqjc;
-aaqjd;
-aaqje;
-aaqjf;
-aaqjg;
-aaqjh;
-aaqji;
-aaqjj;
-aaqjk;
-aaqjl;
-aaqjm;
-aaqjn;
-aaqjo;
-aaqjp;
-aaqjq;
-aaqjr;
-aaqjs;
-aaqjt;
-aaqju;
-aaqjv;
-aaqjw;
-aaqjx;
-aaqjy;
-aaqjz;
-aaqka;
-aaqkb;
-aaqkc;
-aaqkd;
-aaqke;
-aaqkf;
-aaqkg;
-aaqkh;
-aaqki;
-aaqkj;
-aaqkk;
-aaqkl;
-aaqkm;
-aaqkn;
-aaqko;
-aaqkp;
-aaqkq;
-aaqkr;
-aaqks;
-aaqkt;
-aaqku;
-aaqkv;
-aaqkw;
-aaqkx;
-aaqky;
-aaqkz;
-aaqla;
-aaqlb;
-aaqlc;
-aaqld;
-aaqle;
-aaqlf;
-aaqlg;
-aaqlh;
-aaqli;
-aaqlj;
-aaqlk;
-aaqll;
-aaqlm;
-aaqln;
-aaqlo;
-aaqlp;
-aaqlq;
-aaqlr;
-aaqls;
-aaqlt;
-aaqlu;
-aaqlv;
-aaqlw;
-aaqlx;
-aaqly;
-aaqlz;
-aaqma;
-aaqmb;
-aaqmc;
-aaqmd;
-aaqme;
-aaqmf;
-aaqmg;
-aaqmh;
-aaqmi;
-aaqmj;
-aaqmk;
-aaqml;
-aaqmm;
-aaqmn;
-aaqmo;
-aaqmp;
-aaqmq;
-aaqmr;
-aaqms;
-aaqmt;
-aaqmu;
-aaqmv;
-aaqmw;
-aaqmx;
-aaqmy;
-aaqmz;
-aaqna;
-aaqnb;
-aaqnc;
-aaqnd;
-aaqne;
-aaqnf;
-aaqng;
-aaqnh;
-aaqni;
-aaqnj;
-aaqnk;
-aaqnl;
-aaqnm;
-aaqnn;
-aaqno;
-aaqnp;
-aaqnq;
-aaqnr;
-aaqns;
-aaqnt;
-aaqnu;
-aaqnv;
-aaqnw;
-aaqnx;
-aaqny;
-aaqnz;
-aaqoa;
-aaqob;
-aaqoc;
-aaqod;
-aaqoe;
-aaqof;
-aaqog;
-aaqoh;
-aaqoi;
-aaqoj;
-aaqok;
-aaqol;
-aaqom;
-aaqon;
-aaqoo;
-aaqop;
-aaqoq;
-aaqor;
-aaqos;
-aaqot;
-aaqou;
-aaqov;
-aaqow;
-aaqox;
-aaqoy;
-aaqoz;
-aaqpa;
-aaqpb;
-aaqpc;
-aaqpd;
-aaqpe;
-aaqpf;
-aaqpg;
-aaqph;
-aaqpi;
-aaqpj;
-aaqpk;
-aaqpl;
-aaqpm;
-aaqpn;
-aaqpo;
-aaqpp;
-aaqpq;
-aaqpr;
-aaqps;
-aaqpt;
-aaqpu;
-aaqpv;
-aaqpw;
-aaqpx;
-aaqpy;
-aaqpz;
-aaqqa;
-aaqqb;
-aaqqc;
-aaqqd;
-aaqqe;
-aaqqf;
-aaqqg;
-aaqqh;
-aaqqi;
-aaqqj;
-aaqqk;
-aaqql;
-aaqqm;
-aaqqn;
-aaqqo;
-aaqqp;
-aaqqq;
-aaqqr;
-aaqqs;
-aaqqt;
-aaqqu;
-aaqqv;
-aaqqw;
-aaqqx;
-aaqqy;
-aaqqz;
-aaqra;
-aaqrb;
-aaqrc;
-aaqrd;
-aaqre;
-aaqrf;
-aaqrg;
-aaqrh;
-aaqri;
-aaqrj;
-aaqrk;
-aaqrl;
-aaqrm;
-aaqrn;
-aaqro;
-aaqrp;
-aaqrq;
-aaqrr;
-aaqrs;
-aaqrt;
-aaqru;
-aaqrv;
-aaqrw;
-aaqrx;
-aaqry;
-aaqrz;
-aaqsa;
-aaqsb;
-aaqsc;
-aaqsd;
-aaqse;
-aaqsf;
-aaqsg;
-aaqsh;
-aaqsi;
-aaqsj;
-aaqsk;
-aaqsl;
-aaqsm;
-aaqsn;
-aaqso;
-aaqsp;
-aaqsq;
-aaqsr;
-aaqss;
-aaqst;
-aaqsu;
-aaqsv;
-aaqsw;
-aaqsx;
-aaqsy;
-aaqsz;
-aaqta;
-aaqtb;
-aaqtc;
-aaqtd;
-aaqte;
-aaqtf;
-aaqtg;
-aaqth;
-aaqti;
-aaqtj;
-aaqtk;
-aaqtl;
-aaqtm;
-aaqtn;
-aaqto;
-aaqtp;
-aaqtq;
-aaqtr;
-aaqts;
-aaqtt;
-aaqtu;
-aaqtv;
-aaqtw;
-aaqtx;
-aaqty;
-aaqtz;
-aaqua;
-aaqub;
-aaquc;
-aaqud;
-aaque;
-aaquf;
-aaqug;
-aaquh;
-aaqui;
-aaquj;
-aaquk;
-aaqul;
-aaqum;
-aaqun;
-aaquo;
-aaqup;
-aaquq;
-aaqur;
-aaqus;
-aaqut;
-aaquu;
-aaquv;
-aaquw;
-aaqux;
-aaquy;
-aaquz;
-aaqva;
-aaqvb;
-aaqvc;
-aaqvd;
-aaqve;
-aaqvf;
-aaqvg;
-aaqvh;
-aaqvi;
-aaqvj;
-aaqvk;
-aaqvl;
-aaqvm;
-aaqvn;
-aaqvo;
-aaqvp;
-aaqvq;
-aaqvr;
-aaqvs;
-aaqvt;
-aaqvu;
-aaqvv;
-aaqvw;
-aaqvx;
-aaqvy;
-aaqvz;
-aaqwa;
-aaqwb;
-aaqwc;
-aaqwd;
-aaqwe;
-aaqwf;
-aaqwg;
-aaqwh;
-aaqwi;
-aaqwj;
-aaqwk;
-aaqwl;
-aaqwm;
-aaqwn;
-aaqwo;
-aaqwp;
-aaqwq;
-aaqwr;
-aaqws;
-aaqwt;
-aaqwu;
-aaqwv;
-aaqww;
-aaqwx;
-aaqwy;
-aaqwz;
-aaqxa;
-aaqxb;
-aaqxc;
-aaqxd;
-aaqxe;
-aaqxf;
-aaqxg;
-aaqxh;
-aaqxi;
-aaqxj;
-aaqxk;
-aaqxl;
-aaqxm;
-aaqxn;
-aaqxo;
-aaqxp;
-aaqxq;
-aaqxr;
-aaqxs;
-aaqxt;
-aaqxu;
-aaqxv;
-aaqxw;
-aaqxx;
-aaqxy;
-aaqxz;
-aaqya;
-aaqyb;
-aaqyc;
-aaqyd;
-aaqye;
-aaqyf;
-aaqyg;
-aaqyh;
-aaqyi;
-aaqyj;
-aaqyk;
-aaqyl;
-aaqym;
-aaqyn;
-aaqyo;
-aaqyp;
-aaqyq;
-aaqyr;
-aaqys;
-aaqyt;
-aaqyu;
-aaqyv;
-aaqyw;
-aaqyx;
-aaqyy;
-aaqyz;
-aaqza;
-aaqzb;
-aaqzc;
-aaqzd;
-aaqze;
-aaqzf;
-aaqzg;
-aaqzh;
-aaqzi;
-aaqzj;
-aaqzk;
-aaqzl;
-aaqzm;
-aaqzn;
-aaqzo;
-aaqzp;
-aaqzq;
-aaqzr;
-aaqzs;
-aaqzt;
-aaqzu;
-aaqzv;
-aaqzw;
-aaqzx;
-aaqzy;
-aaqzz;
-aaraa;
-aarab;
-aarac;
-aarad;
-aarae;
-aaraf;
-aarag;
-aarah;
-aarai;
-aaraj;
-aarak;
-aaral;
-aaram;
-aaran;
-aarao;
-aarap;
-aaraq;
-aarar;
-aaras;
-aarat;
-aarau;
-aarav;
-aaraw;
-aarax;
-aaray;
-aaraz;
-aarba;
-aarbb;
-aarbc;
-aarbd;
-aarbe;
-aarbf;
-aarbg;
-aarbh;
-aarbi;
-aarbj;
-aarbk;
-aarbl;
-aarbm;
-aarbn;
-aarbo;
-aarbp;
-aarbq;
-aarbr;
-aarbs;
-aarbt;
-aarbu;
-aarbv;
-aarbw;
-aarbx;
-aarby;
-aarbz;
-aarca;
-aarcb;
-aarcc;
-aarcd;
-aarce;
-aarcf;
-aarcg;
-aarch;
-aarci;
-aarcj;
-aarck;
-aarcl;
-aarcm;
-aarcn;
-aarco;
-aarcp;
-aarcq;
-aarcr;
-aarcs;
-aarct;
-aarcu;
-aarcv;
-aarcw;
-aarcx;
-aarcy;
-aarcz;
-aarda;
-aardb;
-aardc;
-aardd;
-aarde;
-aardf;
-aardg;
-aardh;
-aardi;
-aardj;
-aardk;
-aardl;
-aardm;
-aardn;
-aardo;
-aardp;
-aardq;
-aardr;
-aards;
-aardt;
-aardu;
-aardv;
-aardw;
-aardx;
-aardy;
-aardz;
-aarea;
-aareb;
-aarec;
-aared;
-aaree;
-aaref;
-aareg;
-aareh;
-aarei;
-aarej;
-aarek;
-aarel;
-aarem;
-aaren;
-aareo;
-aarep;
-aareq;
-aarer;
-aares;
-aaret;
-aareu;
-aarev;
-aarew;
-aarex;
-aarey;
-aarez;
-aarfa;
-aarfb;
-aarfc;
-aarfd;
-aarfe;
-aarff;
-aarfg;
-aarfh;
-aarfi;
-aarfj;
-aarfk;
-aarfl;
-aarfm;
-aarfn;
-aarfo;
-aarfp;
-aarfq;
-aarfr;
-aarfs;
-aarft;
-aarfu;
-aarfv;
-aarfw;
-aarfx;
-aarfy;
-aarfz;
-aarga;
-aargb;
-aargc;
-aargd;
-aarge;
-aargf;
-aargg;
-aargh;
-aargi;
-aargj;
-aargk;
-aargl;
-aargm;
-aargn;
-aargo;
-aargp;
-aargq;
-aargr;
-aargs;
-aargt;
-aargu;
-aargv;
-aargw;
-aargx;
-aargy;
-aargz;
-aarha;
-aarhb;
-aarhc;
-aarhd;
-aarhe;
-aarhf;
-aarhg;
-aarhh;
-aarhi;
-aarhj;
-aarhk;
-aarhl;
-aarhm;
-aarhn;
-aarho;
-aarhp;
-aarhq;
-aarhr;
-aarhs;
-aarht;
-aarhu;
-aarhv;
-aarhw;
-aarhx;
-aarhy;
-aarhz;
-aaria;
-aarib;
-aaric;
-aarid;
-aarie;
-aarif;
-aarig;
-aarih;
-aarii;
-aarij;
-aarik;
-aaril;
-aarim;
-aarin;
-aario;
-aarip;
-aariq;
-aarir;
-aaris;
-aarit;
-aariu;
-aariv;
-aariw;
-aarix;
-aariy;
-aariz;
-aarja;
-aarjb;
-aarjc;
-aarjd;
-aarje;
-aarjf;
-aarjg;
-aarjh;
-aarji;
-aarjj;
-aarjk;
-aarjl;
-aarjm;
-aarjn;
-aarjo;
-aarjp;
-aarjq;
-aarjr;
-aarjs;
-aarjt;
-aarju;
-aarjv;
-aarjw;
-aarjx;
-aarjy;
-aarjz;
-aarka;
-aarkb;
-aarkc;
-aarkd;
-aarke;
-aarkf;
-aarkg;
-aarkh;
-aarki;
-aarkj;
-aarkk;
-aarkl;
-aarkm;
-aarkn;
-aarko;
-aarkp;
-aarkq;
-aarkr;
-aarks;
-aarkt;
-aarku;
-aarkv;
-aarkw;
-aarkx;
-aarky;
-aarkz;
-aarla;
-aarlb;
-aarlc;
-aarld;
-aarle;
-aarlf;
-aarlg;
-aarlh;
-aarli;
-aarlj;
-aarlk;
-aarll;
-aarlm;
-aarln;
-aarlo;
-aarlp;
-aarlq;
-aarlr;
-aarls;
-aarlt;
-aarlu;
-aarlv;
-aarlw;
-aarlx;
-aarly;
-aarlz;
-aarma;
-aarmb;
-aarmc;
-aarmd;
-aarme;
-aarmf;
-aarmg;
-aarmh;
-aarmi;
-aarmj;
-aarmk;
-aarml;
-aarmm;
-aarmn;
-aarmo;
-aarmp;
-aarmq;
-aarmr;
-aarms;
-aarmt;
-aarmu;
-aarmv;
-aarmw;
-aarmx;
-aarmy;
-aarmz;
-aarna;
-aarnb;
-aarnc;
-aarnd;
-aarne;
-aarnf;
-aarng;
-aarnh;
-aarni;
-aarnj;
-aarnk;
-aarnl;
-aarnm;
-aarnn;
-aarno;
-aarnp;
-aarnq;
-aarnr;
-aarns;
-aarnt;
-aarnu;
-aarnv;
-aarnw;
-aarnx;
-aarny;
-aarnz;
-aaroa;
-aarob;
-aaroc;
-aarod;
-aaroe;
-aarof;
-aarog;
-aaroh;
-aaroi;
-aaroj;
-aarok;
-aarol;
-aarom;
-aaron;
-aaroo;
-aarop;
-aaroq;
-aaror;
-aaros;
-aarot;
-aarou;
-aarov;
-aarow;
-aarox;
-aaroy;
-aaroz;
-aarpa;
-aarpb;
-aarpc;
-aarpd;
-aarpe;
-aarpf;
-aarpg;
-aarph;
-aarpi;
-aarpj;
-aarpk;
-aarpl;
-aarpm;
-aarpn;
-aarpo;
-aarpp;
-aarpq;
-aarpr;
-aarps;
-aarpt;
-aarpu;
-aarpv;
-aarpw;
-aarpx;
-aarpy;
-aarpz;
-aarqa;
-aarqb;
-aarqc;
-aarqd;
-aarqe;
-aarqf;
-aarqg;
-aarqh;
-aarqi;
-aarqj;
-aarqk;
-aarql;
-aarqm;
-aarqn;
-aarqo;
-aarqp;
-aarqq;
-aarqr;
-aarqs;
-aarqt;
-aarqu;
-aarqv;
-aarqw;
-aarqx;
-aarqy;
-aarqz;
-aarra;
-aarrb;
-aarrc;
-aarrd;
-aarre;
-aarrf;
-aarrg;
-aarrh;
-aarri;
-aarrj;
-aarrk;
-aarrl;
-aarrm;
-aarrn;
-aarro;
-aarrp;
-aarrq;
-aarrr;
-aarrs;
-aarrt;
-aarru;
-aarrv;
-aarrw;
-aarrx;
-aarry;
-aarrz;
-aarsa;
-aarsb;
-aarsc;
-aarsd;
-aarse;
-aarsf;
-aarsg;
-aarsh;
-aarsi;
-aarsj;
-aarsk;
-aarsl;
-aarsm;
-aarsn;
-aarso;
-aarsp;
-aarsq;
-aarsr;
-aarss;
-aarst;
-aarsu;
-aarsv;
-aarsw;
-aarsx;
-aarsy;
-aarsz;
-aarta;
-aartb;
-aartc;
-aartd;
-aarte;
-aartf;
-aartg;
-aarth;
-aarti;
-aartj;
-aartk;
-aartl;
-aartm;
-aartn;
-aarto;
-aartp;
-aartq;
-aartr;
-aarts;
-aartt;
-aartu;
-aartv;
-aartw;
-aartx;
-aarty;
-aartz;
-aarua;
-aarub;
-aaruc;
-aarud;
-aarue;
-aaruf;
-aarug;
-aaruh;
-aarui;
-aaruj;
-aaruk;
-aarul;
-aarum;
-aarun;
-aaruo;
-aarup;
-aaruq;
-aarur;
-aarus;
-aarut;
-aaruu;
-aaruv;
-aaruw;
-aarux;
-aaruy;
-aaruz;
-aarva;
-aarvb;
-aarvc;
-aarvd;
-aarve;
-aarvf;
-aarvg;
-aarvh;
-aarvi;
-aarvj;
-aarvk;
-aarvl;
-aarvm;
-aarvn;
-aarvo;
-aarvp;
-aarvq;
-aarvr;
-aarvs;
-aarvt;
-aarvu;
-aarvv;
-aarvw;
-aarvx;
-aarvy;
-aarvz;
-aarwa;
-aarwb;
-aarwc;
-aarwd;
-aarwe;
-aarwf;
-aarwg;
-aarwh;
-aarwi;
-aarwj;
-aarwk;
-aarwl;
-aarwm;
-aarwn;
-aarwo;
-aarwp;
-aarwq;
-aarwr;
-aarws;
-aarwt;
-aarwu;
-aarwv;
-aarww;
-aarwx;
-aarwy;
-aarwz;
-aarxa;
-aarxb;
-aarxc;
-aarxd;
-aarxe;
-aarxf;
-aarxg;
-aarxh;
-aarxi;
-aarxj;
-aarxk;
-aarxl;
-aarxm;
-aarxn;
-aarxo;
-aarxp;
-aarxq;
-aarxr;
-aarxs;
-aarxt;
-aarxu;
-aarxv;
-aarxw;
-aarxx;
-aarxy;
-aarxz;
-aarya;
-aaryb;
-aaryc;
-aaryd;
-aarye;
-aaryf;
-aaryg;
-aaryh;
-aaryi;
-aaryj;
-aaryk;
-aaryl;
-aarym;
-aaryn;
-aaryo;
-aaryp;
-aaryq;
-aaryr;
-aarys;
-aaryt;
-aaryu;
-aaryv;
-aaryw;
-aaryx;
-aaryy;
-aaryz;
-aarza;
-aarzb;
-aarzc;
-aarzd;
-aarze;
-aarzf;
-aarzg;
-aarzh;
-aarzi;
-aarzj;
-aarzk;
-aarzl;
-aarzm;
-aarzn;
-aarzo;
-aarzp;
-aarzq;
-aarzr;
-aarzs;
-aarzt;
-aarzu;
-aarzv;
-aarzw;
-aarzx;
-aarzy;
-aarzz;
-aasaa;
-aasab;
-aasac;
-aasad;
-aasae;
-aasaf;
-aasag;
-aasah;
-aasai;
-aasaj;
-aasak;
-aasal;
-aasam;
-aasan;
-aasao;
-aasap;
-aasaq;
-aasar;
-aasas;
-aasat;
-aasau;
-aasav;
-aasaw;
-aasax;
-aasay;
-aasaz;
-aasba;
-aasbb;
-aasbc;
-aasbd;
-aasbe;
-aasbf;
-aasbg;
-aasbh;
-aasbi;
-aasbj;
-aasbk;
-aasbl;
-aasbm;
-aasbn;
-aasbo;
-aasbp;
-aasbq;
-aasbr;
-aasbs;
-aasbt;
-aasbu;
-aasbv;
-aasbw;
-aasbx;
-aasby;
-aasbz;
-aasca;
-aascb;
-aascc;
-aascd;
-aasce;
-aascf;
-aascg;
-aasch;
-aasci;
-aascj;
-aasck;
-aascl;
-aascm;
-aascn;
-aasco;
-aascp;
-aascq;
-aascr;
-aascs;
-aasct;
-aascu;
-aascv;
-aascw;
-aascx;
-aascy;
-aascz;
-aasda;
-aasdb;
-aasdc;
-aasdd;
-aasde;
-aasdf;
-aasdg;
-aasdh;
-aasdi;
-aasdj;
-aasdk;
-aasdl;
-aasdm;
-aasdn;
-aasdo;
-aasdp;
-aasdq;
-aasdr;
-aasds;
-aasdt;
-aasdu;
-aasdv;
-aasdw;
-aasdx;
-aasdy;
-aasdz;
-aasea;
-aaseb;
-aasec;
-aased;
-aasee;
-aasef;
-aaseg;
-aaseh;
-aasei;
-aasej;
-aasek;
-aasel;
-aasem;
-aasen;
-aaseo;
-aasep;
-aaseq;
-aaser;
-aases;
-aaset;
-aaseu;
-aasev;
-aasew;
-aasex;
-aasey;
-aasez;
-aasfa;
-aasfb;
-aasfc;
-aasfd;
-aasfe;
-aasff;
-aasfg;
-aasfh;
-aasfi;
-aasfj;
-aasfk;
-aasfl;
-aasfm;
-aasfn;
-aasfo;
-aasfp;
-aasfq;
-aasfr;
-aasfs;
-aasft;
-aasfu;
-aasfv;
-aasfw;
-aasfx;
-aasfy;
-aasfz;
-aasga;
-aasgb;
-aasgc;
-aasgd;
-aasge;
-aasgf;
-aasgg;
-aasgh;
-aasgi;
-aasgj;
-aasgk;
-aasgl;
-aasgm;
-aasgn;
-aasgo;
-aasgp;
-aasgq;
-aasgr;
-aasgs;
-aasgt;
-aasgu;
-aasgv;
-aasgw;
-aasgx;
-aasgy;
-aasgz;
-aasha;
-aashb;
-aashc;
-aashd;
-aashe;
-aashf;
-aashg;
-aashh;
-aashi;
-aashj;
-aashk;
-aashl;
-aashm;
-aashn;
-aasho;
-aashp;
-aashq;
-aashr;
-aashs;
-aasht;
-aashu;
-aashv;
-aashw;
-aashx;
-aashy;
-aashz;
-aasia;
-aasib;
-aasic;
-aasid;
-aasie;
-aasif;
-aasig;
-aasih;
-aasii;
-aasij;
-aasik;
-aasil;
-aasim;
-aasin;
-aasio;
-aasip;
-aasiq;
-aasir;
-aasis;
-aasit;
-aasiu;
-aasiv;
-aasiw;
-aasix;
-aasiy;
-aasiz;
-aasja;
-aasjb;
-aasjc;
-aasjd;
-aasje;
-aasjf;
-aasjg;
-aasjh;
-aasji;
-aasjj;
-aasjk;
-aasjl;
-aasjm;
-aasjn;
-aasjo;
-aasjp;
-aasjq;
-aasjr;
-aasjs;
-aasjt;
-aasju;
-aasjv;
-aasjw;
-aasjx;
-aasjy;
-aasjz;
-aaska;
-aaskb;
-aaskc;
-aaskd;
-aaske;
-aaskf;
-aaskg;
-aaskh;
-aaski;
-aaskj;
-aaskk;
-aaskl;
-aaskm;
-aaskn;
-aasko;
-aaskp;
-aaskq;
-aaskr;
-aasks;
-aaskt;
-aasku;
-aaskv;
-aaskw;
-aaskx;
-aasky;
-aaskz;
-aasla;
-aaslb;
-aaslc;
-aasld;
-aasle;
-aaslf;
-aaslg;
-aaslh;
-aasli;
-aaslj;
-aaslk;
-aasll;
-aaslm;
-aasln;
-aaslo;
-aaslp;
-aaslq;
-aaslr;
-aasls;
-aaslt;
-aaslu;
-aaslv;
-aaslw;
-aaslx;
-aasly;
-aaslz;
-aasma;
-aasmb;
-aasmc;
-aasmd;
-aasme;
-aasmf;
-aasmg;
-aasmh;
-aasmi;
-aasmj;
-aasmk;
-aasml;
-aasmm;
-aasmn;
-aasmo;
-aasmp;
-aasmq;
-aasmr;
-aasms;
-aasmt;
-aasmu;
-aasmv;
-aasmw;
-aasmx;
-aasmy;
-aasmz;
-aasna;
-aasnb;
-aasnc;
-aasnd;
-aasne;
-aasnf;
-aasng;
-aasnh;
-aasni;
-aasnj;
-aasnk;
-aasnl;
-aasnm;
-aasnn;
-aasno;
-aasnp;
-aasnq;
-aasnr;
-aasns;
-aasnt;
-aasnu;
-aasnv;
-aasnw;
-aasnx;
-aasny;
-aasnz;
-aasoa;
-aasob;
-aasoc;
-aasod;
-aasoe;
-aasof;
-aasog;
-aasoh;
-aasoi;
-aasoj;
-aasok;
-aasol;
-aasom;
-aason;
-aasoo;
-aasop;
-aasoq;
-aasor;
-aasos;
-aasot;
-aasou;
-aasov;
-aasow;
-aasox;
-aasoy;
-aasoz;
-aaspa;
-aaspb;
-aaspc;
-aaspd;
-aaspe;
-aaspf;
-aaspg;
-aasph;
-aaspi;
-aaspj;
-aaspk;
-aaspl;
-aaspm;
-aaspn;
-aaspo;
-aaspp;
-aaspq;
-aaspr;
-aasps;
-aaspt;
-aaspu;
-aaspv;
-aaspw;
-aaspx;
-aaspy;
-aaspz;
-aasqa;
-aasqb;
-aasqc;
-aasqd;
-aasqe;
-aasqf;
-aasqg;
-aasqh;
-aasqi;
-aasqj;
-aasqk;
-aasql;
-aasqm;
-aasqn;
-aasqo;
-aasqp;
-aasqq;
-aasqr;
-aasqs;
-aasqt;
-aasqu;
-aasqv;
-aasqw;
-aasqx;
-aasqy;
-aasqz;
-aasra;
-aasrb;
-aasrc;
-aasrd;
-aasre;
-aasrf;
-aasrg;
-aasrh;
-aasri;
-aasrj;
-aasrk;
-aasrl;
-aasrm;
-aasrn;
-aasro;
-aasrp;
-aasrq;
-aasrr;
-aasrs;
-aasrt;
-aasru;
-aasrv;
-aasrw;
-aasrx;
-aasry;
-aasrz;
-aassa;
-aassb;
-aassc;
-aassd;
-aasse;
-aassf;
-aassg;
-aassh;
-aassi;
-aassj;
-aassk;
-aassl;
-aassm;
-aassn;
-aasso;
-aassp;
-aassq;
-aassr;
-aasss;
-aasst;
-aassu;
-aassv;
-aassw;
-aassx;
-aassy;
-aassz;
-aasta;
-aastb;
-aastc;
-aastd;
-aaste;
-aastf;
-aastg;
-aasth;
-aasti;
-aastj;
-aastk;
-aastl;
-aastm;
-aastn;
-aasto;
-aastp;
-aastq;
-aastr;
-aasts;
-aastt;
-aastu;
-aastv;
-aastw;
-aastx;
-aasty;
-aastz;
-aasua;
-aasub;
-aasuc;
-aasud;
-aasue;
-aasuf;
-aasug;
-aasuh;
-aasui;
-aasuj;
-aasuk;
-aasul;
-aasum;
-aasun;
-aasuo;
-aasup;
-aasuq;
-aasur;
-aasus;
-aasut;
-aasuu;
-aasuv;
-aasuw;
-aasux;
-aasuy;
-aasuz;
-aasva;
-aasvb;
-aasvc;
-aasvd;
-aasve;
-aasvf;
-aasvg;
-aasvh;
-aasvi;
-aasvj;
-aasvk;
-aasvl;
-aasvm;
-aasvn;
-aasvo;
-aasvp;
-aasvq;
-aasvr;
-aasvs;
-aasvt;
-aasvu;
-aasvv;
-aasvw;
-aasvx;
-aasvy;
-aasvz;
-aaswa;
-aaswb;
-aaswc;
-aaswd;
-aaswe;
-aaswf;
-aaswg;
-aaswh;
-aaswi;
-aaswj;
-aaswk;
-aaswl;
-aaswm;
-aaswn;
-aaswo;
-aaswp;
-aaswq;
-aaswr;
-aasws;
-aaswt;
-aaswu;
-aaswv;
-aasww;
-aaswx;
-aaswy;
-aaswz;
-aasxa;
-aasxb;
-aasxc;
-aasxd;
-aasxe;
-aasxf;
-aasxg;
-aasxh;
-aasxi;
-aasxj;
-aasxk;
-aasxl;
-aasxm;
-aasxn;
-aasxo;
-aasxp;
-aasxq;
-aasxr;
-aasxs;
-aasxt;
-aasxu;
-aasxv;
-aasxw;
-aasxx;
-aasxy;
-aasxz;
-aasya;
-aasyb;
-aasyc;
-aasyd;
-aasye;
-aasyf;
-aasyg;
-aasyh;
-aasyi;
-aasyj;
-aasyk;
-aasyl;
-aasym;
-aasyn;
-aasyo;
-aasyp;
-aasyq;
-aasyr;
-aasys;
-aasyt;
-aasyu;
-aasyv;
-aasyw;
-aasyx;
-aasyy;
-aasyz;
-aasza;
-aaszb;
-aaszc;
-aaszd;
-aasze;
-aaszf;
-aaszg;
-aaszh;
-aaszi;
-aaszj;
-aaszk;
-aaszl;
-aaszm;
-aaszn;
-aaszo;
-aaszp;
-aaszq;
-aaszr;
-aaszs;
-aaszt;
-aaszu;
-aaszv;
-aaszw;
-aaszx;
-aaszy;
-aaszz;
-aataa;
-aatab;
-aatac;
-aatad;
-aatae;
-aataf;
-aatag;
-aatah;
-aatai;
-aataj;
-aatak;
-aatal;
-aatam;
-aatan;
-aatao;
-aatap;
-aataq;
-aatar;
-aatas;
-aatat;
-aatau;
-aatav;
-aataw;
-aatax;
-aatay;
-aataz;
-aatba;
-aatbb;
-aatbc;
-aatbd;
-aatbe;
-aatbf;
-aatbg;
-aatbh;
-aatbi;
-aatbj;
-aatbk;
-aatbl;
-aatbm;
-aatbn;
-aatbo;
-aatbp;
-aatbq;
-aatbr;
-aatbs;
-aatbt;
-aatbu;
-aatbv;
-aatbw;
-aatbx;
-aatby;
-aatbz;
-aatca;
-aatcb;
-aatcc;
-aatcd;
-aatce;
-aatcf;
-aatcg;
-aatch;
-aatci;
-aatcj;
-aatck;
-aatcl;
-aatcm;
-aatcn;
-aatco;
-aatcp;
-aatcq;
-aatcr;
-aatcs;
-aatct;
-aatcu;
-aatcv;
-aatcw;
-aatcx;
-aatcy;
-aatcz;
-aatda;
-aatdb;
-aatdc;
-aatdd;
-aatde;
-aatdf;
-aatdg;
-aatdh;
-aatdi;
-aatdj;
-aatdk;
-aatdl;
-aatdm;
-aatdn;
-aatdo;
-aatdp;
-aatdq;
-aatdr;
-aatds;
-aatdt;
-aatdu;
-aatdv;
-aatdw;
-aatdx;
-aatdy;
-aatdz;
-aatea;
-aateb;
-aatec;
-aated;
-aatee;
-aatef;
-aateg;
-aateh;
-aatei;
-aatej;
-aatek;
-aatel;
-aatem;
-aaten;
-aateo;
-aatep;
-aateq;
-aater;
-aates;
-aatet;
-aateu;
-aatev;
-aatew;
-aatex;
-aatey;
-aatez;
-aatfa;
-aatfb;
-aatfc;
-aatfd;
-aatfe;
-aatff;
-aatfg;
-aatfh;
-aatfi;
-aatfj;
-aatfk;
-aatfl;
-aatfm;
-aatfn;
-aatfo;
-aatfp;
-aatfq;
-aatfr;
-aatfs;
-aatft;
-aatfu;
-aatfv;
-aatfw;
-aatfx;
-aatfy;
-aatfz;
-aatga;
-aatgb;
-aatgc;
-aatgd;
-aatge;
-aatgf;
-aatgg;
-aatgh;
-aatgi;
-aatgj;
-aatgk;
-aatgl;
-aatgm;
-aatgn;
-aatgo;
-aatgp;
-aatgq;
-aatgr;
-aatgs;
-aatgt;
-aatgu;
-aatgv;
-aatgw;
-aatgx;
-aatgy;
-aatgz;
-aatha;
-aathb;
-aathc;
-aathd;
-aathe;
-aathf;
-aathg;
-aathh;
-aathi;
-aathj;
-aathk;
-aathl;
-aathm;
-aathn;
-aatho;
-aathp;
-aathq;
-aathr;
-aaths;
-aatht;
-aathu;
-aathv;
-aathw;
-aathx;
-aathy;
-aathz;
-aatia;
-aatib;
-aatic;
-aatid;
-aatie;
-aatif;
-aatig;
-aatih;
-aatii;
-aatij;
-aatik;
-aatil;
-aatim;
-aatin;
-aatio;
-aatip;
-aatiq;
-aatir;
-aatis;
-aatit;
-aatiu;
-aativ;
-aatiw;
-aatix;
-aatiy;
-aatiz;
-aatja;
-aatjb;
-aatjc;
-aatjd;
-aatje;
-aatjf;
-aatjg;
-aatjh;
-aatji;
-aatjj;
-aatjk;
-aatjl;
-aatjm;
-aatjn;
-aatjo;
-aatjp;
-aatjq;
-aatjr;
-aatjs;
-aatjt;
-aatju;
-aatjv;
-aatjw;
-aatjx;
-aatjy;
-aatjz;
-aatka;
-aatkb;
-aatkc;
-aatkd;
-aatke;
-aatkf;
-aatkg;
-aatkh;
-aatki;
-aatkj;
-aatkk;
-aatkl;
-aatkm;
-aatkn;
-aatko;
-aatkp;
-aatkq;
-aatkr;
-aatks;
-aatkt;
-aatku;
-aatkv;
-aatkw;
-aatkx;
-aatky;
-aatkz;
-aatla;
-aatlb;
-aatlc;
-aatld;
-aatle;
-aatlf;
-aatlg;
-aatlh;
-aatli;
-aatlj;
-aatlk;
-aatll;
-aatlm;
-aatln;
-aatlo;
-aatlp;
-aatlq;
-aatlr;
-aatls;
-aatlt;
-aatlu;
-aatlv;
-aatlw;
-aatlx;
-aatly;
-aatlz;
-aatma;
-aatmb;
-aatmc;
-aatmd;
-aatme;
-aatmf;
-aatmg;
-aatmh;
-aatmi;
-aatmj;
-aatmk;
-aatml;
-aatmm;
-aatmn;
-aatmo;
-aatmp;
-aatmq;
-aatmr;
-aatms;
-aatmt;
-aatmu;
-aatmv;
-aatmw;
-aatmx;
-aatmy;
-aatmz;
-aatna;
-aatnb;
-aatnc;
-aatnd;
-aatne;
-aatnf;
-aatng;
-aatnh;
-aatni;
-aatnj;
-aatnk;
-aatnl;
-aatnm;
-aatnn;
-aatno;
-aatnp;
-aatnq;
-aatnr;
-aatns;
-aatnt;
-aatnu;
-aatnv;
-aatnw;
-aatnx;
-aatny;
-aatnz;
-aatoa;
-aatob;
-aatoc;
-aatod;
-aatoe;
-aatof;
-aatog;
-aatoh;
-aatoi;
-aatoj;
-aatok;
-aatol;
-aatom;
-aaton;
-aatoo;
-aatop;
-aatoq;
-aator;
-aatos;
-aatot;
-aatou;
-aatov;
-aatow;
-aatox;
-aatoy;
-aatoz;
-aatpa;
-aatpb;
-aatpc;
-aatpd;
-aatpe;
-aatpf;
-aatpg;
-aatph;
-aatpi;
-aatpj;
-aatpk;
-aatpl;
-aatpm;
-aatpn;
-aatpo;
-aatpp;
-aatpq;
-aatpr;
-aatps;
-aatpt;
-aatpu;
-aatpv;
-aatpw;
-aatpx;
-aatpy;
-aatpz;
-aatqa;
-aatqb;
-aatqc;
-aatqd;
-aatqe;
-aatqf;
-aatqg;
-aatqh;
-aatqi;
-aatqj;
-aatqk;
-aatql;
-aatqm;
-aatqn;
-aatqo;
-aatqp;
-aatqq;
-aatqr;
-aatqs;
-aatqt;
-aatqu;
-aatqv;
-aatqw;
-aatqx;
-aatqy;
-aatqz;
-aatra;
-aatrb;
-aatrc;
-aatrd;
-aatre;
-aatrf;
-aatrg;
-aatrh;
-aatri;
-aatrj;
-aatrk;
-aatrl;
-aatrm;
-aatrn;
-aatro;
-aatrp;
-aatrq;
-aatrr;
-aatrs;
-aatrt;
-aatru;
-aatrv;
-aatrw;
-aatrx;
-aatry;
-aatrz;
-aatsa;
-aatsb;
-aatsc;
-aatsd;
-aatse;
-aatsf;
-aatsg;
-aatsh;
-aatsi;
-aatsj;
-aatsk;
-aatsl;
-aatsm;
-aatsn;
-aatso;
-aatsp;
-aatsq;
-aatsr;
-aatss;
-aatst;
-aatsu;
-aatsv;
-aatsw;
-aatsx;
-aatsy;
-aatsz;
-aatta;
-aattb;
-aattc;
-aattd;
-aatte;
-aattf;
-aattg;
-aatth;
-aatti;
-aattj;
-aattk;
-aattl;
-aattm;
-aattn;
-aatto;
-aattp;
-aattq;
-aattr;
-aatts;
-aattt;
-aattu;
-aattv;
-aattw;
-aattx;
-aatty;
-aattz;
-aatua;
-aatub;
-aatuc;
-aatud;
-aatue;
-aatuf;
-aatug;
-aatuh;
-aatui;
-aatuj;
-aatuk;
-aatul;
-aatum;
-aatun;
-aatuo;
-aatup;
-aatuq;
-aatur;
-aatus;
-aatut;
-aatuu;
-aatuv;
-aatuw;
-aatux;
-aatuy;
-aatuz;
-aatva;
-aatvb;
-aatvc;
-aatvd;
-aatve;
-aatvf;
-aatvg;
-aatvh;
-aatvi;
-aatvj;
-aatvk;
-aatvl;
-aatvm;
-aatvn;
-aatvo;
-aatvp;
-aatvq;
-aatvr;
-aatvs;
-aatvt;
-aatvu;
-aatvv;
-aatvw;
-aatvx;
-aatvy;
-aatvz;
-aatwa;
-aatwb;
-aatwc;
-aatwd;
-aatwe;
-aatwf;
-aatwg;
-aatwh;
-aatwi;
-aatwj;
-aatwk;
-aatwl;
-aatwm;
-aatwn;
-aatwo;
-aatwp;
-aatwq;
-aatwr;
-aatws;
-aatwt;
-aatwu;
-aatwv;
-aatww;
-aatwx;
-aatwy;
-aatwz;
-aatxa;
-aatxb;
-aatxc;
-aatxd;
-aatxe;
-aatxf;
-aatxg;
-aatxh;
-aatxi;
-aatxj;
-aatxk;
-aatxl;
-aatxm;
-aatxn;
-aatxo;
-aatxp;
-aatxq;
-aatxr;
-aatxs;
-aatxt;
-aatxu;
-aatxv;
-aatxw;
-aatxx;
-aatxy;
-aatxz;
-aatya;
-aatyb;
-aatyc;
-aatyd;
-aatye;
-aatyf;
-aatyg;
-aatyh;
-aatyi;
-aatyj;
-aatyk;
-aatyl;
-aatym;
-aatyn;
-aatyo;
-aatyp;
-aatyq;
-aatyr;
-aatys;
-aatyt;
-aatyu;
-aatyv;
-aatyw;
-aatyx;
-aatyy;
-aatyz;
-aatza;
-aatzb;
-aatzc;
-aatzd;
-aatze;
-aatzf;
-aatzg;
-aatzh;
-aatzi;
-aatzj;
-aatzk;
-aatzl;
-aatzm;
-aatzn;
-aatzo;
-aatzp;
-aatzq;
-aatzr;
-aatzs;
-aatzt;
-aatzu;
-aatzv;
-aatzw;
-aatzx;
-aatzy;
-aatzz;
-aauaa;
-aauab;
-aauac;
-aauad;
-aauae;
-aauaf;
-aauag;
-aauah;
-aauai;
-aauaj;
-aauak;
-aaual;
-aauam;
-aauan;
-aauao;
-aauap;
-aauaq;
-aauar;
-aauas;
-aauat;
-aauau;
-aauav;
-aauaw;
-aauax;
-aauay;
-aauaz;
-aauba;
-aaubb;
-aaubc;
-aaubd;
-aaube;
-aaubf;
-aaubg;
-aaubh;
-aaubi;
-aaubj;
-aaubk;
-aaubl;
-aaubm;
-aaubn;
-aaubo;
-aaubp;
-aaubq;
-aaubr;
-aaubs;
-aaubt;
-aaubu;
-aaubv;
-aaubw;
-aaubx;
-aauby;
-aaubz;
-aauca;
-aaucb;
-aaucc;
-aaucd;
-aauce;
-aaucf;
-aaucg;
-aauch;
-aauci;
-aaucj;
-aauck;
-aaucl;
-aaucm;
-aaucn;
-aauco;
-aaucp;
-aaucq;
-aaucr;
-aaucs;
-aauct;
-aaucu;
-aaucv;
-aaucw;
-aaucx;
-aaucy;
-aaucz;
-aauda;
-aaudb;
-aaudc;
-aaudd;
-aaude;
-aaudf;
-aaudg;
-aaudh;
-aaudi;
-aaudj;
-aaudk;
-aaudl;
-aaudm;
-aaudn;
-aaudo;
-aaudp;
-aaudq;
-aaudr;
-aauds;
-aaudt;
-aaudu;
-aaudv;
-aaudw;
-aaudx;
-aaudy;
-aaudz;
-aauea;
-aaueb;
-aauec;
-aaued;
-aauee;
-aauef;
-aaueg;
-aaueh;
-aauei;
-aauej;
-aauek;
-aauel;
-aauem;
-aauen;
-aaueo;
-aauep;
-aaueq;
-aauer;
-aaues;
-aauet;
-aaueu;
-aauev;
-aauew;
-aauex;
-aauey;
-aauez;
-aaufa;
-aaufb;
-aaufc;
-aaufd;
-aaufe;
-aauff;
-aaufg;
-aaufh;
-aaufi;
-aaufj;
-aaufk;
-aaufl;
-aaufm;
-aaufn;
-aaufo;
-aaufp;
-aaufq;
-aaufr;
-aaufs;
-aauft;
-aaufu;
-aaufv;
-aaufw;
-aaufx;
-aaufy;
-aaufz;
-aauga;
-aaugb;
-aaugc;
-aaugd;
-aauge;
-aaugf;
-aaugg;
-aaugh;
-aaugi;
-aaugj;
-aaugk;
-aaugl;
-aaugm;
-aaugn;
-aaugo;
-aaugp;
-aaugq;
-aaugr;
-aaugs;
-aaugt;
-aaugu;
-aaugv;
-aaugw;
-aaugx;
-aaugy;
-aaugz;
-aauha;
-aauhb;
-aauhc;
-aauhd;
-aauhe;
-aauhf;
-aauhg;
-aauhh;
-aauhi;
-aauhj;
-aauhk;
-aauhl;
-aauhm;
-aauhn;
-aauho;
-aauhp;
-aauhq;
-aauhr;
-aauhs;
-aauht;
-aauhu;
-aauhv;
-aauhw;
-aauhx;
-aauhy;
-aauhz;
-aauia;
-aauib;
-aauic;
-aauid;
-aauie;
-aauif;
-aauig;
-aauih;
-aauii;
-aauij;
-aauik;
-aauil;
-aauim;
-aauin;
-aauio;
-aauip;
-aauiq;
-aauir;
-aauis;
-aauit;
-aauiu;
-aauiv;
-aauiw;
-aauix;
-aauiy;
-aauiz;
-aauja;
-aaujb;
-aaujc;
-aaujd;
-aauje;
-aaujf;
-aaujg;
-aaujh;
-aauji;
-aaujj;
-aaujk;
-aaujl;
-aaujm;
-aaujn;
-aaujo;
-aaujp;
-aaujq;
-aaujr;
-aaujs;
-aaujt;
-aauju;
-aaujv;
-aaujw;
-aaujx;
-aaujy;
-aaujz;
-aauka;
-aaukb;
-aaukc;
-aaukd;
-aauke;
-aaukf;
-aaukg;
-aaukh;
-aauki;
-aaukj;
-aaukk;
-aaukl;
-aaukm;
-aaukn;
-aauko;
-aaukp;
-aaukq;
-aaukr;
-aauks;
-aaukt;
-aauku;
-aaukv;
-aaukw;
-aaukx;
-aauky;
-aaukz;
-aaula;
-aaulb;
-aaulc;
-aauld;
-aaule;
-aaulf;
-aaulg;
-aaulh;
-aauli;
-aaulj;
-aaulk;
-aaull;
-aaulm;
-aauln;
-aaulo;
-aaulp;
-aaulq;
-aaulr;
-aauls;
-aault;
-aaulu;
-aaulv;
-aaulw;
-aaulx;
-aauly;
-aaulz;
-aauma;
-aaumb;
-aaumc;
-aaumd;
-aaume;
-aaumf;
-aaumg;
-aaumh;
-aaumi;
-aaumj;
-aaumk;
-aauml;
-aaumm;
-aaumn;
-aaumo;
-aaump;
-aaumq;
-aaumr;
-aaums;
-aaumt;
-aaumu;
-aaumv;
-aaumw;
-aaumx;
-aaumy;
-aaumz;
-aauna;
-aaunb;
-aaunc;
-aaund;
-aaune;
-aaunf;
-aaung;
-aaunh;
-aauni;
-aaunj;
-aaunk;
-aaunl;
-aaunm;
-aaunn;
-aauno;
-aaunp;
-aaunq;
-aaunr;
-aauns;
-aaunt;
-aaunu;
-aaunv;
-aaunw;
-aaunx;
-aauny;
-aaunz;
-aauoa;
-aauob;
-aauoc;
-aauod;
-aauoe;
-aauof;
-aauog;
-aauoh;
-aauoi;
-aauoj;
-aauok;
-aauol;
-aauom;
-aauon;
-aauoo;
-aauop;
-aauoq;
-aauor;
-aauos;
-aauot;
-aauou;
-aauov;
-aauow;
-aauox;
-aauoy;
-aauoz;
-aaupa;
-aaupb;
-aaupc;
-aaupd;
-aaupe;
-aaupf;
-aaupg;
-aauph;
-aaupi;
-aaupj;
-aaupk;
-aaupl;
-aaupm;
-aaupn;
-aaupo;
-aaupp;
-aaupq;
-aaupr;
-aaups;
-aaupt;
-aaupu;
-aaupv;
-aaupw;
-aaupx;
-aaupy;
-aaupz;
-aauqa;
-aauqb;
-aauqc;
-aauqd;
-aauqe;
-aauqf;
-aauqg;
-aauqh;
-aauqi;
-aauqj;
-aauqk;
-aauql;
-aauqm;
-aauqn;
-aauqo;
-aauqp;
-aauqq;
-aauqr;
-aauqs;
-aauqt;
-aauqu;
-aauqv;
-aauqw;
-aauqx;
-aauqy;
-aauqz;
-aaura;
-aaurb;
-aaurc;
-aaurd;
-aaure;
-aaurf;
-aaurg;
-aaurh;
-aauri;
-aaurj;
-aaurk;
-aaurl;
-aaurm;
-aaurn;
-aauro;
-aaurp;
-aaurq;
-aaurr;
-aaurs;
-aaurt;
-aauru;
-aaurv;
-aaurw;
-aaurx;
-aaury;
-aaurz;
-aausa;
-aausb;
-aausc;
-aausd;
-aause;
-aausf;
-aausg;
-aaush;
-aausi;
-aausj;
-aausk;
-aausl;
-aausm;
-aausn;
-aauso;
-aausp;
-aausq;
-aausr;
-aauss;
-aaust;
-aausu;
-aausv;
-aausw;
-aausx;
-aausy;
-aausz;
-aauta;
-aautb;
-aautc;
-aautd;
-aaute;
-aautf;
-aautg;
-aauth;
-aauti;
-aautj;
-aautk;
-aautl;
-aautm;
-aautn;
-aauto;
-aautp;
-aautq;
-aautr;
-aauts;
-aautt;
-aautu;
-aautv;
-aautw;
-aautx;
-aauty;
-aautz;
-aauua;
-aauub;
-aauuc;
-aauud;
-aauue;
-aauuf;
-aauug;
-aauuh;
-aauui;
-aauuj;
-aauuk;
-aauul;
-aauum;
-aauun;
-aauuo;
-aauup;
-aauuq;
-aauur;
-aauus;
-aauut;
-aauuu;
-aauuv;
-aauuw;
-aauux;
-aauuy;
-aauuz;
-aauva;
-aauvb;
-aauvc;
-aauvd;
-aauve;
-aauvf;
-aauvg;
-aauvh;
-aauvi;
-aauvj;
-aauvk;
-aauvl;
-aauvm;
-aauvn;
-aauvo;
-aauvp;
-aauvq;
-aauvr;
-aauvs;
-aauvt;
-aauvu;
-aauvv;
-aauvw;
-aauvx;
-aauvy;
-aauvz;
-aauwa;
-aauwb;
-aauwc;
-aauwd;
-aauwe;
-aauwf;
-aauwg;
-aauwh;
-aauwi;
-aauwj;
-aauwk;
-aauwl;
-aauwm;
-aauwn;
-aauwo;
-aauwp;
-aauwq;
-aauwr;
-aauws;
-aauwt;
-aauwu;
-aauwv;
-aauww;
-aauwx;
-aauwy;
-aauwz;
-aauxa;
-aauxb;
-aauxc;
-aauxd;
-aauxe;
-aauxf;
-aauxg;
-aauxh;
-aauxi;
-aauxj;
-aauxk;
-aauxl;
-aauxm;
-aauxn;
-aauxo;
-aauxp;
-aauxq;
-aauxr;
-aauxs;
-aauxt;
-aauxu;
-aauxv;
-aauxw;
-aauxx;
-aauxy;
-aauxz;
-aauya;
-aauyb;
-aauyc;
-aauyd;
-aauye;
-aauyf;
-aauyg;
-aauyh;
-aauyi;
-aauyj;
-aauyk;
-aauyl;
-aauym;
-aauyn;
-aauyo;
-aauyp;
-aauyq;
-aauyr;
-aauys;
-aauyt;
-aauyu;
-aauyv;
-aauyw;
-aauyx;
-aauyy;
-aauyz;
-aauza;
-aauzb;
-aauzc;
-aauzd;
-aauze;
-aauzf;
-aauzg;
-aauzh;
-aauzi;
-aauzj;
-aauzk;
-aauzl;
-aauzm;
-aauzn;
-aauzo;
-aauzp;
-aauzq;
-aauzr;
-aauzs;
-aauzt;
-aauzu;
-aauzv;
-aauzw;
-aauzx;
-aauzy;
-aauzz;
-aavaa;
-aavab;
-aavac;
-aavad;
-aavae;
-aavaf;
-aavag;
-aavah;
-aavai;
-aavaj;
-aavak;
-aaval;
-aavam;
-aavan;
-aavao;
-aavap;
-aavaq;
-aavar;
-aavas;
-aavat;
-aavau;
-aavav;
-aavaw;
-aavax;
-aavay;
-aavaz;
-aavba;
-aavbb;
-aavbc;
-aavbd;
-aavbe;
-aavbf;
-aavbg;
-aavbh;
-aavbi;
-aavbj;
-aavbk;
-aavbl;
-aavbm;
-aavbn;
-aavbo;
-aavbp;
-aavbq;
-aavbr;
-aavbs;
-aavbt;
-aavbu;
-aavbv;
-aavbw;
-aavbx;
-aavby;
-aavbz;
-aavca;
-aavcb;
-aavcc;
-aavcd;
-aavce;
-aavcf;
-aavcg;
-aavch;
-aavci;
-aavcj;
-aavck;
-aavcl;
-aavcm;
-aavcn;
-aavco;
-aavcp;
-aavcq;
-aavcr;
-aavcs;
-aavct;
-aavcu;
-aavcv;
-aavcw;
-aavcx;
-aavcy;
-aavcz;
-aavda;
-aavdb;
-aavdc;
-aavdd;
-aavde;
-aavdf;
-aavdg;
-aavdh;
-aavdi;
-aavdj;
-aavdk;
-aavdl;
-aavdm;
-aavdn;
-aavdo;
-aavdp;
-aavdq;
-aavdr;
-aavds;
-aavdt;
-aavdu;
-aavdv;
-aavdw;
-aavdx;
-aavdy;
-aavdz;
-aavea;
-aaveb;
-aavec;
-aaved;
-aavee;
-aavef;
-aaveg;
-aaveh;
-aavei;
-aavej;
-aavek;
-aavel;
-aavem;
-aaven;
-aaveo;
-aavep;
-aaveq;
-aaver;
-aaves;
-aavet;
-aaveu;
-aavev;
-aavew;
-aavex;
-aavey;
-aavez;
-aavfa;
-aavfb;
-aavfc;
-aavfd;
-aavfe;
-aavff;
-aavfg;
-aavfh;
-aavfi;
-aavfj;
-aavfk;
-aavfl;
-aavfm;
-aavfn;
-aavfo;
-aavfp;
-aavfq;
-aavfr;
-aavfs;
-aavft;
-aavfu;
-aavfv;
-aavfw;
-aavfx;
-aavfy;
-aavfz;
-aavga;
-aavgb;
-aavgc;
-aavgd;
-aavge;
-aavgf;
-aavgg;
-aavgh;
-aavgi;
-aavgj;
-aavgk;
-aavgl;
-aavgm;
-aavgn;
-aavgo;
-aavgp;
-aavgq;
-aavgr;
-aavgs;
-aavgt;
-aavgu;
-aavgv;
-aavgw;
-aavgx;
-aavgy;
-aavgz;
-aavha;
-aavhb;
-aavhc;
-aavhd;
-aavhe;
-aavhf;
-aavhg;
-aavhh;
-aavhi;
-aavhj;
-aavhk;
-aavhl;
-aavhm;
-aavhn;
-aavho;
-aavhp;
-aavhq;
-aavhr;
-aavhs;
-aavht;
-aavhu;
-aavhv;
-aavhw;
-aavhx;
-aavhy;
-aavhz;
-aavia;
-aavib;
-aavic;
-aavid;
-aavie;
-aavif;
-aavig;
-aavih;
-aavii;
-aavij;
-aavik;
-aavil;
-aavim;
-aavin;
-aavio;
-aavip;
-aaviq;
-aavir;
-aavis;
-aavit;
-aaviu;
-aaviv;
-aaviw;
-aavix;
-aaviy;
-aaviz;
-aavja;
-aavjb;
-aavjc;
-aavjd;
-aavje;
-aavjf;
-aavjg;
-aavjh;
-aavji;
-aavjj;
-aavjk;
-aavjl;
-aavjm;
-aavjn;
-aavjo;
-aavjp;
-aavjq;
-aavjr;
-aavjs;
-aavjt;
-aavju;
-aavjv;
-aavjw;
-aavjx;
-aavjy;
-aavjz;
-aavka;
-aavkb;
-aavkc;
-aavkd;
-aavke;
-aavkf;
-aavkg;
-aavkh;
-aavki;
-aavkj;
-aavkk;
-aavkl;
-aavkm;
-aavkn;
-aavko;
-aavkp;
-aavkq;
-aavkr;
-aavks;
-aavkt;
-aavku;
-aavkv;
-aavkw;
-aavkx;
-aavky;
-aavkz;
-aavla;
-aavlb;
-aavlc;
-aavld;
-aavle;
-aavlf;
-aavlg;
-aavlh;
-aavli;
-aavlj;
-aavlk;
-aavll;
-aavlm;
-aavln;
-aavlo;
-aavlp;
-aavlq;
-aavlr;
-aavls;
-aavlt;
-aavlu;
-aavlv;
-aavlw;
-aavlx;
-aavly;
-aavlz;
-aavma;
-aavmb;
-aavmc;
-aavmd;
-aavme;
-aavmf;
-aavmg;
-aavmh;
-aavmi;
-aavmj;
-aavmk;
-aavml;
-aavmm;
-aavmn;
-aavmo;
-aavmp;
-aavmq;
-aavmr;
-aavms;
-aavmt;
-aavmu;
-aavmv;
-aavmw;
-aavmx;
-aavmy;
-aavmz;
-aavna;
-aavnb;
-aavnc;
-aavnd;
-aavne;
-aavnf;
-aavng;
-aavnh;
-aavni;
-aavnj;
-aavnk;
-aavnl;
-aavnm;
-aavnn;
-aavno;
-aavnp;
-aavnq;
-aavnr;
-aavns;
-aavnt;
-aavnu;
-aavnv;
-aavnw;
-aavnx;
-aavny;
-aavnz;
-aavoa;
-aavob;
-aavoc;
-aavod;
-aavoe;
-aavof;
-aavog;
-aavoh;
-aavoi;
-aavoj;
-aavok;
-aavol;
-aavom;
-aavon;
-aavoo;
-aavop;
-aavoq;
-aavor;
-aavos;
-aavot;
-aavou;
-aavov;
-aavow;
-aavox;
-aavoy;
-aavoz;
-aavpa;
-aavpb;
-aavpc;
-aavpd;
-aavpe;
-aavpf;
-aavpg;
-aavph;
-aavpi;
-aavpj;
-aavpk;
-aavpl;
-aavpm;
-aavpn;
-aavpo;
-aavpp;
-aavpq;
-aavpr;
-aavps;
-aavpt;
-aavpu;
-aavpv;
-aavpw;
-aavpx;
-aavpy;
-aavpz;
-aavqa;
-aavqb;
-aavqc;
-aavqd;
-aavqe;
-aavqf;
-aavqg;
-aavqh;
-aavqi;
-aavqj;
-aavqk;
-aavql;
-aavqm;
-aavqn;
-aavqo;
-aavqp;
-aavqq;
-aavqr;
-aavqs;
-aavqt;
-aavqu;
-aavqv;
-aavqw;
-aavqx;
-aavqy;
-aavqz;
-aavra;
-aavrb;
-aavrc;
-aavrd;
-aavre;
-aavrf;
-aavrg;
-aavrh;
-aavri;
-aavrj;
-aavrk;
-aavrl;
-aavrm;
-aavrn;
-aavro;
-aavrp;
-aavrq;
-aavrr;
-aavrs;
-aavrt;
-aavru;
-aavrv;
-aavrw;
-aavrx;
-aavry;
-aavrz;
-aavsa;
-aavsb;
-aavsc;
-aavsd;
-aavse;
-aavsf;
-aavsg;
-aavsh;
-aavsi;
-aavsj;
-aavsk;
-aavsl;
-aavsm;
-aavsn;
-aavso;
-aavsp;
-aavsq;
-aavsr;
-aavss;
-aavst;
-aavsu;
-aavsv;
-aavsw;
-aavsx;
-aavsy;
-aavsz;
-aavta;
-aavtb;
-aavtc;
-aavtd;
-aavte;
-aavtf;
-aavtg;
-aavth;
-aavti;
-aavtj;
-aavtk;
-aavtl;
-aavtm;
-aavtn;
-aavto;
-aavtp;
-aavtq;
-aavtr;
-aavts;
-aavtt;
-aavtu;
-aavtv;
-aavtw;
-aavtx;
-aavty;
-aavtz;
-aavua;
-aavub;
-aavuc;
-aavud;
-aavue;
-aavuf;
-aavug;
-aavuh;
-aavui;
-aavuj;
-aavuk;
-aavul;
-aavum;
-aavun;
-aavuo;
-aavup;
-aavuq;
-aavur;
-aavus;
-aavut;
-aavuu;
-aavuv;
-aavuw;
-aavux;
-aavuy;
-aavuz;
-aavva;
-aavvb;
-aavvc;
-aavvd;
-aavve;
-aavvf;
-aavvg;
-aavvh;
-aavvi;
-aavvj;
-aavvk;
-aavvl;
-aavvm;
-aavvn;
-aavvo;
-aavvp;
-aavvq;
-aavvr;
-aavvs;
-aavvt;
-aavvu;
-aavvv;
-aavvw;
-aavvx;
-aavvy;
-aavvz;
-aavwa;
-aavwb;
-aavwc;
-aavwd;
-aavwe;
-aavwf;
-aavwg;
-aavwh;
-aavwi;
-aavwj;
-aavwk;
-aavwl;
-aavwm;
-aavwn;
-aavwo;
-aavwp;
-aavwq;
-aavwr;
-aavws;
-aavwt;
-aavwu;
-aavwv;
-aavww;
-aavwx;
-aavwy;
-aavwz;
-aavxa;
-aavxb;
-aavxc;
-aavxd;
-aavxe;
-aavxf;
-aavxg;
-aavxh;
-aavxi;
-aavxj;
-aavxk;
-aavxl;
-aavxm;
-aavxn;
-aavxo;
-aavxp;
-aavxq;
-aavxr;
-aavxs;
-aavxt;
-aavxu;
-aavxv;
-aavxw;
-aavxx;
-aavxy;
-aavxz;
-aavya;
-aavyb;
-aavyc;
-aavyd;
-aavye;
-aavyf;
-aavyg;
-aavyh;
-aavyi;
-aavyj;
-aavyk;
-aavyl;
-aavym;
-aavyn;
-aavyo;
-aavyp;
-aavyq;
-aavyr;
-aavys;
-aavyt;
-aavyu;
-aavyv;
-aavyw;
-aavyx;
-aavyy;
-aavyz;
-aavza;
-aavzb;
-aavzc;
-aavzd;
-aavze;
-aavzf;
-aavzg;
-aavzh;
-aavzi;
-aavzj;
-aavzk;
-aavzl;
-aavzm;
-aavzn;
-aavzo;
-aavzp;
-aavzq;
-aavzr;
-aavzs;
-aavzt;
-aavzu;
-aavzv;
-aavzw;
-aavzx;
-aavzy;
-aavzz;
-aawaa;
-aawab;
-aawac;
-aawad;
-aawae;
-aawaf;
-aawag;
-aawah;
-aawai;
-aawaj;
-aawak;
-aawal;
-aawam;
-aawan;
-aawao;
-aawap;
-aawaq;
-aawar;
-aawas;
-aawat;
-aawau;
-aawav;
-aawaw;
-aawax;
-aaway;
-aawaz;
-aawba;
-aawbb;
-aawbc;
-aawbd;
-aawbe;
-aawbf;
-aawbg;
-aawbh;
-aawbi;
-aawbj;
-aawbk;
-aawbl;
-aawbm;
-aawbn;
-aawbo;
-aawbp;
-aawbq;
-aawbr;
-aawbs;
-aawbt;
-aawbu;
-aawbv;
-aawbw;
-aawbx;
-aawby;
-aawbz;
-aawca;
-aawcb;
-aawcc;
-aawcd;
-aawce;
-aawcf;
-aawcg;
-aawch;
-aawci;
-aawcj;
-aawck;
-aawcl;
-aawcm;
-aawcn;
-aawco;
-aawcp;
-aawcq;
-aawcr;
-aawcs;
-aawct;
-aawcu;
-aawcv;
-aawcw;
-aawcx;
-aawcy;
-aawcz;
-aawda;
-aawdb;
-aawdc;
-aawdd;
-aawde;
-aawdf;
-aawdg;
-aawdh;
-aawdi;
-aawdj;
-aawdk;
-aawdl;
-aawdm;
-aawdn;
-aawdo;
-aawdp;
-aawdq;
-aawdr;
-aawds;
-aawdt;
-aawdu;
-aawdv;
-aawdw;
-aawdx;
-aawdy;
-aawdz;
-aawea;
-aaweb;
-aawec;
-aawed;
-aawee;
-aawef;
-aaweg;
-aaweh;
-aawei;
-aawej;
-aawek;
-aawel;
-aawem;
-aawen;
-aaweo;
-aawep;
-aaweq;
-aawer;
-aawes;
-aawet;
-aaweu;
-aawev;
-aawew;
-aawex;
-aawey;
-aawez;
-aawfa;
-aawfb;
-aawfc;
-aawfd;
-aawfe;
-aawff;
-aawfg;
-aawfh;
-aawfi;
-aawfj;
-aawfk;
-aawfl;
-aawfm;
-aawfn;
-aawfo;
-aawfp;
-aawfq;
-aawfr;
-aawfs;
-aawft;
-aawfu;
-aawfv;
-aawfw;
-aawfx;
-aawfy;
-aawfz;
-aawga;
-aawgb;
-aawgc;
-aawgd;
-aawge;
-aawgf;
-aawgg;
-aawgh;
-aawgi;
-aawgj;
-aawgk;
-aawgl;
-aawgm;
-aawgn;
-aawgo;
-aawgp;
-aawgq;
-aawgr;
-aawgs;
-aawgt;
-aawgu;
-aawgv;
-aawgw;
-aawgx;
-aawgy;
-aawgz;
-aawha;
-aawhb;
-aawhc;
-aawhd;
-aawhe;
-aawhf;
-aawhg;
-aawhh;
-aawhi;
-aawhj;
-aawhk;
-aawhl;
-aawhm;
-aawhn;
-aawho;
-aawhp;
-aawhq;
-aawhr;
-aawhs;
-aawht;
-aawhu;
-aawhv;
-aawhw;
-aawhx;
-aawhy;
-aawhz;
-aawia;
-aawib;
-aawic;
-aawid;
-aawie;
-aawif;
-aawig;
-aawih;
-aawii;
-aawij;
-aawik;
-aawil;
-aawim;
-aawin;
-aawio;
-aawip;
-aawiq;
-aawir;
-aawis;
-aawit;
-aawiu;
-aawiv;
-aawiw;
-aawix;
-aawiy;
-aawiz;
-aawja;
-aawjb;
-aawjc;
-aawjd;
-aawje;
-aawjf;
-aawjg;
-aawjh;
-aawji;
-aawjj;
-aawjk;
-aawjl;
-aawjm;
-aawjn;
-aawjo;
-aawjp;
-aawjq;
-aawjr;
-aawjs;
-aawjt;
-aawju;
-aawjv;
-aawjw;
-aawjx;
-aawjy;
-aawjz;
-aawka;
-aawkb;
-aawkc;
-aawkd;
-aawke;
-aawkf;
-aawkg;
-aawkh;
-aawki;
-aawkj;
-aawkk;
-aawkl;
-aawkm;
-aawkn;
-aawko;
-aawkp;
-aawkq;
-aawkr;
-aawks;
-aawkt;
-aawku;
-aawkv;
-aawkw;
-aawkx;
-aawky;
-aawkz;
-aawla;
-aawlb;
-aawlc;
-aawld;
-aawle;
-aawlf;
-aawlg;
-aawlh;
-aawli;
-aawlj;
-aawlk;
-aawll;
-aawlm;
-aawln;
-aawlo;
-aawlp;
-aawlq;
-aawlr;
-aawls;
-aawlt;
-aawlu;
-aawlv;
-aawlw;
-aawlx;
-aawly;
-aawlz;
-aawma;
-aawmb;
-aawmc;
-aawmd;
-aawme;
-aawmf;
-aawmg;
-aawmh;
-aawmi;
-aawmj;
-aawmk;
-aawml;
-aawmm;
-aawmn;
-aawmo;
-aawmp;
-aawmq;
-aawmr;
-aawms;
-aawmt;
-aawmu;
-aawmv;
-aawmw;
-aawmx;
-aawmy;
-aawmz;
-aawna;
-aawnb;
-aawnc;
-aawnd;
-aawne;
-aawnf;
-aawng;
-aawnh;
-aawni;
-aawnj;
-aawnk;
-aawnl;
-aawnm;
-aawnn;
-aawno;
-aawnp;
-aawnq;
-aawnr;
-aawns;
-aawnt;
-aawnu;
-aawnv;
-aawnw;
-aawnx;
-aawny;
-aawnz;
-aawoa;
-aawob;
-aawoc;
-aawod;
-aawoe;
-aawof;
-aawog;
-aawoh;
-aawoi;
-aawoj;
-aawok;
-aawol;
-aawom;
-aawon;
-aawoo;
-aawop;
-aawoq;
-aawor;
-aawos;
-aawot;
-aawou;
-aawov;
-aawow;
-aawox;
-aawoy;
-aawoz;
-aawpa;
-aawpb;
-aawpc;
-aawpd;
-aawpe;
-aawpf;
-aawpg;
-aawph;
-aawpi;
-aawpj;
-aawpk;
-aawpl;
-aawpm;
-aawpn;
-aawpo;
-aawpp;
-aawpq;
-aawpr;
-aawps;
-aawpt;
-aawpu;
-aawpv;
-aawpw;
-aawpx;
-aawpy;
-aawpz;
-aawqa;
-aawqb;
-aawqc;
-aawqd;
-aawqe;
-aawqf;
-aawqg;
-aawqh;
-aawqi;
-aawqj;
-aawqk;
-aawql;
-aawqm;
-aawqn;
-aawqo;
-aawqp;
-aawqq;
-aawqr;
-aawqs;
-aawqt;
-aawqu;
-aawqv;
-aawqw;
-aawqx;
-aawqy;
-aawqz;
-aawra;
-aawrb;
-aawrc;
-aawrd;
-aawre;
-aawrf;
-aawrg;
-aawrh;
-aawri;
-aawrj;
-aawrk;
-aawrl;
-aawrm;
-aawrn;
-aawro;
-aawrp;
-aawrq;
-aawrr;
-aawrs;
-aawrt;
-aawru;
-aawrv;
-aawrw;
-aawrx;
-aawry;
-aawrz;
-aawsa;
-aawsb;
-aawsc;
-aawsd;
-aawse;
-aawsf;
-aawsg;
-aawsh;
-aawsi;
-aawsj;
-aawsk;
-aawsl;
-aawsm;
-aawsn;
-aawso;
-aawsp;
-aawsq;
-aawsr;
-aawss;
-aawst;
-aawsu;
-aawsv;
-aawsw;
-aawsx;
-aawsy;
-aawsz;
-aawta;
-aawtb;
-aawtc;
-aawtd;
-aawte;
-aawtf;
-aawtg;
-aawth;
-aawti;
-aawtj;
-aawtk;
-aawtl;
-aawtm;
-aawtn;
-aawto;
-aawtp;
-aawtq;
-aawtr;
-aawts;
-aawtt;
-aawtu;
-aawtv;
-aawtw;
-aawtx;
-aawty;
-aawtz;
-aawua;
-aawub;
-aawuc;
-aawud;
-aawue;
-aawuf;
-aawug;
-aawuh;
-aawui;
-aawuj;
-aawuk;
-aawul;
-aawum;
-aawun;
-aawuo;
-aawup;
-aawuq;
-aawur;
-aawus;
-aawut;
-aawuu;
-aawuv;
-aawuw;
-aawux;
-aawuy;
-aawuz;
-aawva;
-aawvb;
-aawvc;
-aawvd;
-aawve;
-aawvf;
-aawvg;
-aawvh;
-aawvi;
-aawvj;
-aawvk;
-aawvl;
-aawvm;
-aawvn;
-aawvo;
-aawvp;
-aawvq;
-aawvr;
-aawvs;
-aawvt;
-aawvu;
-aawvv;
-aawvw;
-aawvx;
-aawvy;
-aawvz;
-aawwa;
-aawwb;
-aawwc;
-aawwd;
-aawwe;
-aawwf;
-aawwg;
-aawwh;
-aawwi;
-aawwj;
-aawwk;
-aawwl;
-aawwm;
-aawwn;
-aawwo;
-aawwp;
-aawwq;
-aawwr;
-aawws;
-aawwt;
-aawwu;
-aawwv;
-aawww;
-aawwx;
-aawwy;
-aawwz;
-aawxa;
-aawxb;
-aawxc;
-aawxd;
-aawxe;
-aawxf;
-aawxg;
-aawxh;
-aawxi;
-aawxj;
-aawxk;
-aawxl;
-aawxm;
-aawxn;
-aawxo;
-aawxp;
-aawxq;
-aawxr;
-aawxs;
-aawxt;
-aawxu;
-aawxv;
-aawxw;
-aawxx;
-aawxy;
-aawxz;
-aawya;
-aawyb;
-aawyc;
-aawyd;
-aawye;
-aawyf;
-aawyg;
-aawyh;
-aawyi;
-aawyj;
-aawyk;
-aawyl;
-aawym;
-aawyn;
-aawyo;
-aawyp;
-aawyq;
-aawyr;
-aawys;
-aawyt;
-aawyu;
-aawyv;
-aawyw;
-aawyx;
-aawyy;
-aawyz;
-aawza;
-aawzb;
-aawzc;
-aawzd;
-aawze;
-aawzf;
-aawzg;
-aawzh;
-aawzi;
-aawzj;
-aawzk;
-aawzl;
-aawzm;
-aawzn;
-aawzo;
-aawzp;
-aawzq;
-aawzr;
-aawzs;
-aawzt;
-aawzu;
-aawzv;
-aawzw;
-aawzx;
-aawzy;
-aawzz;
-aaxaa;
-aaxab;
-aaxac;
-aaxad;
-aaxae;
-aaxaf;
-aaxag;
-aaxah;
-aaxai;
-aaxaj;
-aaxak;
-aaxal;
-aaxam;
-aaxan;
-aaxao;
-aaxap;
-aaxaq;
-aaxar;
-aaxas;
-aaxat;
-aaxau;
-aaxav;
-aaxaw;
-aaxax;
-aaxay;
-aaxaz;
-aaxba;
-aaxbb;
-aaxbc;
-aaxbd;
-aaxbe;
-aaxbf;
-aaxbg;
-aaxbh;
-aaxbi;
-aaxbj;
-aaxbk;
-aaxbl;
-aaxbm;
-aaxbn;
-aaxbo;
-aaxbp;
-aaxbq;
-aaxbr;
-aaxbs;
-aaxbt;
-aaxbu;
-aaxbv;
-aaxbw;
-aaxbx;
-aaxby;
-aaxbz;
-aaxca;
-aaxcb;
-aaxcc;
-aaxcd;
-aaxce;
-aaxcf;
-aaxcg;
-aaxch;
-aaxci;
-aaxcj;
-aaxck;
-aaxcl;
-aaxcm;
-aaxcn;
-aaxco;
-aaxcp;
-aaxcq;
-aaxcr;
-aaxcs;
-aaxct;
-aaxcu;
-aaxcv;
-aaxcw;
-aaxcx;
-aaxcy;
-aaxcz;
-aaxda;
-aaxdb;
-aaxdc;
-aaxdd;
-aaxde;
-aaxdf;
-aaxdg;
-aaxdh;
-aaxdi;
-aaxdj;
-aaxdk;
-aaxdl;
-aaxdm;
-aaxdn;
-aaxdo;
-aaxdp;
-aaxdq;
-aaxdr;
-aaxds;
-aaxdt;
-aaxdu;
-aaxdv;
-aaxdw;
-aaxdx;
-aaxdy;
-aaxdz;
-aaxea;
-aaxeb;
-aaxec;
-aaxed;
-aaxee;
-aaxef;
-aaxeg;
-aaxeh;
-aaxei;
-aaxej;
-aaxek;
-aaxel;
-aaxem;
-aaxen;
-aaxeo;
-aaxep;
-aaxeq;
-aaxer;
-aaxes;
-aaxet;
-aaxeu;
-aaxev;
-aaxew;
-aaxex;
-aaxey;
-aaxez;
-aaxfa;
-aaxfb;
-aaxfc;
-aaxfd;
-aaxfe;
-aaxff;
-aaxfg;
-aaxfh;
-aaxfi;
-aaxfj;
-aaxfk;
-aaxfl;
-aaxfm;
-aaxfn;
-aaxfo;
-aaxfp;
-aaxfq;
-aaxfr;
-aaxfs;
-aaxft;
-aaxfu;
-aaxfv;
-aaxfw;
-aaxfx;
-aaxfy;
-aaxfz;
-aaxga;
-aaxgb;
-aaxgc;
-aaxgd;
-aaxge;
-aaxgf;
-aaxgg;
-aaxgh;
-aaxgi;
-aaxgj;
-aaxgk;
-aaxgl;
-aaxgm;
-aaxgn;
-aaxgo;
-aaxgp;
-aaxgq;
-aaxgr;
-aaxgs;
-aaxgt;
-aaxgu;
-aaxgv;
-aaxgw;
-aaxgx;
-aaxgy;
-aaxgz;
-aaxha;
-aaxhb;
-aaxhc;
-aaxhd;
-aaxhe;
-aaxhf;
-aaxhg;
-aaxhh;
-aaxhi;
-aaxhj;
-aaxhk;
-aaxhl;
-aaxhm;
-aaxhn;
-aaxho;
-aaxhp;
-aaxhq;
-aaxhr;
-aaxhs;
-aaxht;
-aaxhu;
-aaxhv;
-aaxhw;
-aaxhx;
-aaxhy;
-aaxhz;
-aaxia;
-aaxib;
-aaxic;
-aaxid;
-aaxie;
-aaxif;
-aaxig;
-aaxih;
-aaxii;
-aaxij;
-aaxik;
-aaxil;
-aaxim;
-aaxin;
-aaxio;
-aaxip;
-aaxiq;
-aaxir;
-aaxis;
-aaxit;
-aaxiu;
-aaxiv;
-aaxiw;
-aaxix;
-aaxiy;
-aaxiz;
-aaxja;
-aaxjb;
-aaxjc;
-aaxjd;
-aaxje;
-aaxjf;
-aaxjg;
-aaxjh;
-aaxji;
-aaxjj;
-aaxjk;
-aaxjl;
-aaxjm;
-aaxjn;
-aaxjo;
-aaxjp;
-aaxjq;
-aaxjr;
-aaxjs;
-aaxjt;
-aaxju;
-aaxjv;
-aaxjw;
-aaxjx;
-aaxjy;
-aaxjz;
-aaxka;
-aaxkb;
-aaxkc;
-aaxkd;
-aaxke;
-aaxkf;
-aaxkg;
-aaxkh;
-aaxki;
-aaxkj;
-aaxkk;
-aaxkl;
-aaxkm;
-aaxkn;
-aaxko;
-aaxkp;
-aaxkq;
-aaxkr;
-aaxks;
-aaxkt;
-aaxku;
-aaxkv;
-aaxkw;
-aaxkx;
-aaxky;
-aaxkz;
-aaxla;
-aaxlb;
-aaxlc;
-aaxld;
-aaxle;
-aaxlf;
-aaxlg;
-aaxlh;
-aaxli;
-aaxlj;
-aaxlk;
-aaxll;
-aaxlm;
-aaxln;
-aaxlo;
-aaxlp;
-aaxlq;
-aaxlr;
-aaxls;
-aaxlt;
-aaxlu;
-aaxlv;
-aaxlw;
-aaxlx;
-aaxly;
-aaxlz;
-aaxma;
-aaxmb;
-aaxmc;
-aaxmd;
-aaxme;
-aaxmf;
-aaxmg;
-aaxmh;
-aaxmi;
-aaxmj;
-aaxmk;
-aaxml;
-aaxmm;
-aaxmn;
-aaxmo;
-aaxmp;
-aaxmq;
-aaxmr;
-aaxms;
-aaxmt;
-aaxmu;
-aaxmv;
-aaxmw;
-aaxmx;
-aaxmy;
-aaxmz;
-aaxna;
-aaxnb;
-aaxnc;
-aaxnd;
-aaxne;
-aaxnf;
-aaxng;
-aaxnh;
-aaxni;
-aaxnj;
-aaxnk;
-aaxnl;
-aaxnm;
-aaxnn;
-aaxno;
-aaxnp;
-aaxnq;
-aaxnr;
-aaxns;
-aaxnt;
-aaxnu;
-aaxnv;
-aaxnw;
-aaxnx;
-aaxny;
-aaxnz;
-aaxoa;
-aaxob;
-aaxoc;
-aaxod;
-aaxoe;
-aaxof;
-aaxog;
-aaxoh;
-aaxoi;
-aaxoj;
-aaxok;
-aaxol;
-aaxom;
-aaxon;
-aaxoo;
-aaxop;
-aaxoq;
-aaxor;
-aaxos;
-aaxot;
-aaxou;
-aaxov;
-aaxow;
-aaxox;
-aaxoy;
-aaxoz;
-aaxpa;
-aaxpb;
-aaxpc;
-aaxpd;
-aaxpe;
-aaxpf;
-aaxpg;
-aaxph;
-aaxpi;
-aaxpj;
-aaxpk;
-aaxpl;
-aaxpm;
-aaxpn;
-aaxpo;
-aaxpp;
-aaxpq;
-aaxpr;
-aaxps;
-aaxpt;
-aaxpu;
-aaxpv;
-aaxpw;
-aaxpx;
-aaxpy;
-aaxpz;
-aaxqa;
-aaxqb;
-aaxqc;
-aaxqd;
-aaxqe;
-aaxqf;
-aaxqg;
-aaxqh;
-aaxqi;
-aaxqj;
-aaxqk;
-aaxql;
-aaxqm;
-aaxqn;
-aaxqo;
-aaxqp;
-aaxqq;
-aaxqr;
-aaxqs;
-aaxqt;
-aaxqu;
-aaxqv;
-aaxqw;
-aaxqx;
-aaxqy;
-aaxqz;
-aaxra;
-aaxrb;
-aaxrc;
-aaxrd;
-aaxre;
-aaxrf;
-aaxrg;
-aaxrh;
-aaxri;
-aaxrj;
-aaxrk;
-aaxrl;
-aaxrm;
-aaxrn;
-aaxro;
-aaxrp;
-aaxrq;
-aaxrr;
-aaxrs;
-aaxrt;
-aaxru;
-aaxrv;
-aaxrw;
-aaxrx;
-aaxry;
-aaxrz;
-aaxsa;
-aaxsb;
-aaxsc;
-aaxsd;
-aaxse;
-aaxsf;
-aaxsg;
-aaxsh;
-aaxsi;
-aaxsj;
-aaxsk;
-aaxsl;
-aaxsm;
-aaxsn;
-aaxso;
-aaxsp;
-aaxsq;
-aaxsr;
-aaxss;
-aaxst;
-aaxsu;
-aaxsv;
-aaxsw;
-aaxsx;
-aaxsy;
-aaxsz;
-aaxta;
-aaxtb;
-aaxtc;
-aaxtd;
-aaxte;
-aaxtf;
-aaxtg;
-aaxth;
-aaxti;
-aaxtj;
-aaxtk;
-aaxtl;
-aaxtm;
-aaxtn;
-aaxto;
-aaxtp;
-aaxtq;
-aaxtr;
-aaxts;
-aaxtt;
-aaxtu;
-aaxtv;
-aaxtw;
-aaxtx;
-aaxty;
-aaxtz;
-aaxua;
-aaxub;
-aaxuc;
-aaxud;
-aaxue;
-aaxuf;
-aaxug;
-aaxuh;
-aaxui;
-aaxuj;
-aaxuk;
-aaxul;
-aaxum;
-aaxun;
-aaxuo;
-aaxup;
-aaxuq;
-aaxur;
-aaxus;
-aaxut;
-aaxuu;
-aaxuv;
-aaxuw;
-aaxux;
-aaxuy;
-aaxuz;
-aaxva;
-aaxvb;
-aaxvc;
-aaxvd;
-aaxve;
-aaxvf;
-aaxvg;
-aaxvh;
-aaxvi;
-aaxvj;
-aaxvk;
-aaxvl;
-aaxvm;
-aaxvn;
-aaxvo;
-aaxvp;
-aaxvq;
-aaxvr;
-aaxvs;
-aaxvt;
-aaxvu;
-aaxvv;
-aaxvw;
-aaxvx;
-aaxvy;
-aaxvz;
-aaxwa;
-aaxwb;
-aaxwc;
-aaxwd;
-aaxwe;
-aaxwf;
-aaxwg;
-aaxwh;
-aaxwi;
-aaxwj;
-aaxwk;
-aaxwl;
-aaxwm;
-aaxwn;
-aaxwo;
-aaxwp;
-aaxwq;
-aaxwr;
-aaxws;
-aaxwt;
-aaxwu;
-aaxwv;
-aaxww;
-aaxwx;
-aaxwy;
-aaxwz;
-aaxxa;
-aaxxb;
-aaxxc;
-aaxxd;
-aaxxe;
-aaxxf;
-aaxxg;
-aaxxh;
-aaxxi;
-aaxxj;
-aaxxk;
-aaxxl;
-aaxxm;
-aaxxn;
-aaxxo;
-aaxxp;
-aaxxq;
-aaxxr;
-aaxxs;
-aaxxt;
-aaxxu;
-aaxxv;
-aaxxw;
-aaxxx;
-aaxxy;
-aaxxz;
-aaxya;
-aaxyb;
-aaxyc;
-aaxyd;
-aaxye;
-aaxyf;
-aaxyg;
-aaxyh;
-aaxyi;
-aaxyj;
-aaxyk;
-aaxyl;
-aaxym;
-aaxyn;
-aaxyo;
-aaxyp;
-aaxyq;
-aaxyr;
-aaxys;
-aaxyt;
-aaxyu;
-aaxyv;
-aaxyw;
-aaxyx;
-aaxyy;
-aaxyz;
-aaxza;
-aaxzb;
-aaxzc;
-aaxzd;
-aaxze;
-aaxzf;
-aaxzg;
-aaxzh;
-aaxzi;
-aaxzj;
-aaxzk;
-aaxzl;
-aaxzm;
-aaxzn;
-aaxzo;
-aaxzp;
-aaxzq;
-aaxzr;
-aaxzs;
-aaxzt;
-aaxzu;
-aaxzv;
-aaxzw;
-aaxzx;
-aaxzy;
-aaxzz;
-aayaa;
-aayab;
-aayac;
-aayad;
-aayae;
-aayaf;
-aayag;
-aayah;
-aayai;
-aayaj;
-aayak;
-aayal;
-aayam;
-aayan;
-aayao;
-aayap;
-aayaq;
-aayar;
-aayas;
-aayat;
-aayau;
-aayav;
-aayaw;
-aayax;
-aayay;
-aayaz;
-aayba;
-aaybb;
-aaybc;
-aaybd;
-aaybe;
-aaybf;
-aaybg;
-aaybh;
-aaybi;
-aaybj;
-aaybk;
-aaybl;
-aaybm;
-aaybn;
-aaybo;
-aaybp;
-aaybq;
-aaybr;
-aaybs;
-aaybt;
-aaybu;
-aaybv;
-aaybw;
-aaybx;
-aayby;
-aaybz;
-aayca;
-aaycb;
-aaycc;
-aaycd;
-aayce;
-aaycf;
-aaycg;
-aaych;
-aayci;
-aaycj;
-aayck;
-aaycl;
-aaycm;
-aaycn;
-aayco;
-aaycp;
-aaycq;
-aaycr;
-aaycs;
-aayct;
-aaycu;
-aaycv;
-aaycw;
-aaycx;
-aaycy;
-aaycz;
-aayda;
-aaydb;
-aaydc;
-aaydd;
-aayde;
-aaydf;
-aaydg;
-aaydh;
-aaydi;
-aaydj;
-aaydk;
-aaydl;
-aaydm;
-aaydn;
-aaydo;
-aaydp;
-aaydq;
-aaydr;
-aayds;
-aaydt;
-aaydu;
-aaydv;
-aaydw;
-aaydx;
-aaydy;
-aaydz;
-aayea;
-aayeb;
-aayec;
-aayed;
-aayee;
-aayef;
-aayeg;
-aayeh;
-aayei;
-aayej;
-aayek;
-aayel;
-aayem;
-aayen;
-aayeo;
-aayep;
-aayeq;
-aayer;
-aayes;
-aayet;
-aayeu;
-aayev;
-aayew;
-aayex;
-aayey;
-aayez;
-aayfa;
-aayfb;
-aayfc;
-aayfd;
-aayfe;
-aayff;
-aayfg;
-aayfh;
-aayfi;
-aayfj;
-aayfk;
-aayfl;
-aayfm;
-aayfn;
-aayfo;
-aayfp;
-aayfq;
-aayfr;
-aayfs;
-aayft;
-aayfu;
-aayfv;
-aayfw;
-aayfx;
-aayfy;
-aayfz;
-aayga;
-aaygb;
-aaygc;
-aaygd;
-aayge;
-aaygf;
-aaygg;
-aaygh;
-aaygi;
-aaygj;
-aaygk;
-aaygl;
-aaygm;
-aaygn;
-aaygo;
-aaygp;
-aaygq;
-aaygr;
-aaygs;
-aaygt;
-aaygu;
-aaygv;
-aaygw;
-aaygx;
-aaygy;
-aaygz;
-aayha;
-aayhb;
-aayhc;
-aayhd;
-aayhe;
-aayhf;
-aayhg;
-aayhh;
-aayhi;
-aayhj;
-aayhk;
-aayhl;
-aayhm;
-aayhn;
-aayho;
-aayhp;
-aayhq;
-aayhr;
-aayhs;
-aayht;
-aayhu;
-aayhv;
-aayhw;
-aayhx;
-aayhy;
-aayhz;
-aayia;
-aayib;
-aayic;
-aayid;
-aayie;
-aayif;
-aayig;
-aayih;
-aayii;
-aayij;
-aayik;
-aayil;
-aayim;
-aayin;
-aayio;
-aayip;
-aayiq;
-aayir;
-aayis;
-aayit;
-aayiu;
-aayiv;
-aayiw;
-aayix;
-aayiy;
-aayiz;
-aayja;
-aayjb;
-aayjc;
-aayjd;
-aayje;
-aayjf;
-aayjg;
-aayjh;
-aayji;
-aayjj;
-aayjk;
-aayjl;
-aayjm;
-aayjn;
-aayjo;
-aayjp;
-aayjq;
-aayjr;
-aayjs;
-aayjt;
-aayju;
-aayjv;
-aayjw;
-aayjx;
-aayjy;
-aayjz;
-aayka;
-aaykb;
-aaykc;
-aaykd;
-aayke;
-aaykf;
-aaykg;
-aaykh;
-aayki;
-aaykj;
-aaykk;
-aaykl;
-aaykm;
-aaykn;
-aayko;
-aaykp;
-aaykq;
-aaykr;
-aayks;
-aaykt;
-aayku;
-aaykv;
-aaykw;
-aaykx;
-aayky;
-aaykz;
-aayla;
-aaylb;
-aaylc;
-aayld;
-aayle;
-aaylf;
-aaylg;
-aaylh;
-aayli;
-aaylj;
-aaylk;
-aayll;
-aaylm;
-aayln;
-aaylo;
-aaylp;
-aaylq;
-aaylr;
-aayls;
-aaylt;
-aaylu;
-aaylv;
-aaylw;
-aaylx;
-aayly;
-aaylz;
-aayma;
-aaymb;
-aaymc;
-aaymd;
-aayme;
-aaymf;
-aaymg;
-aaymh;
-aaymi;
-aaymj;
-aaymk;
-aayml;
-aaymm;
-aaymn;
-aaymo;
-aaymp;
-aaymq;
-aaymr;
-aayms;
-aaymt;
-aaymu;
-aaymv;
-aaymw;
-aaymx;
-aaymy;
-aaymz;
-aayna;
-aaynb;
-aaync;
-aaynd;
-aayne;
-aaynf;
-aayng;
-aaynh;
-aayni;
-aaynj;
-aaynk;
-aaynl;
-aaynm;
-aaynn;
-aayno;
-aaynp;
-aaynq;
-aaynr;
-aayns;
-aaynt;
-aaynu;
-aaynv;
-aaynw;
-aaynx;
-aayny;
-aaynz;
-aayoa;
-aayob;
-aayoc;
-aayod;
-aayoe;
-aayof;
-aayog;
-aayoh;
-aayoi;
-aayoj;
-aayok;
-aayol;
-aayom;
-aayon;
-aayoo;
-aayop;
-aayoq;
-aayor;
-aayos;
-aayot;
-aayou;
-aayov;
-aayow;
-aayox;
-aayoy;
-aayoz;
-aaypa;
-aaypb;
-aaypc;
-aaypd;
-aaype;
-aaypf;
-aaypg;
-aayph;
-aaypi;
-aaypj;
-aaypk;
-aaypl;
-aaypm;
-aaypn;
-aaypo;
-aaypp;
-aaypq;
-aaypr;
-aayps;
-aaypt;
-aaypu;
-aaypv;
-aaypw;
-aaypx;
-aaypy;
-aaypz;
-aayqa;
-aayqb;
-aayqc;
-aayqd;
-aayqe;
-aayqf;
-aayqg;
-aayqh;
-aayqi;
-aayqj;
-aayqk;
-aayql;
-aayqm;
-aayqn;
-aayqo;
-aayqp;
-aayqq;
-aayqr;
-aayqs;
-aayqt;
-aayqu;
-aayqv;
-aayqw;
-aayqx;
-aayqy;
-aayqz;
-aayra;
-aayrb;
-aayrc;
-aayrd;
-aayre;
-aayrf;
-aayrg;
-aayrh;
-aayri;
-aayrj;
-aayrk;
-aayrl;
-aayrm;
-aayrn;
-aayro;
-aayrp;
-aayrq;
-aayrr;
-aayrs;
-aayrt;
-aayru;
-aayrv;
-aayrw;
-aayrx;
-aayry;
-aayrz;
-aaysa;
-aaysb;
-aaysc;
-aaysd;
-aayse;
-aaysf;
-aaysg;
-aaysh;
-aaysi;
-aaysj;
-aaysk;
-aaysl;
-aaysm;
-aaysn;
-aayso;
-aaysp;
-aaysq;
-aaysr;
-aayss;
-aayst;
-aaysu;
-aaysv;
-aaysw;
-aaysx;
-aaysy;
-aaysz;
-aayta;
-aaytb;
-aaytc;
-aaytd;
-aayte;
-aaytf;
-aaytg;
-aayth;
-aayti;
-aaytj;
-aaytk;
-aaytl;
-aaytm;
-aaytn;
-aayto;
-aaytp;
-aaytq;
-aaytr;
-aayts;
-aaytt;
-aaytu;
-aaytv;
-aaytw;
-aaytx;
-aayty;
-aaytz;
-aayua;
-aayub;
-aayuc;
-aayud;
-aayue;
-aayuf;
-aayug;
-aayuh;
-aayui;
-aayuj;
-aayuk;
-aayul;
-aayum;
-aayun;
-aayuo;
-aayup;
-aayuq;
-aayur;
-aayus;
-aayut;
-aayuu;
-aayuv;
-aayuw;
-aayux;
-aayuy;
-aayuz;
-aayva;
-aayvb;
-aayvc;
-aayvd;
-aayve;
-aayvf;
-aayvg;
-aayvh;
-aayvi;
-aayvj;
-aayvk;
-aayvl;
-aayvm;
-aayvn;
-aayvo;
-aayvp;
-aayvq;
-aayvr;
-aayvs;
-aayvt;
-aayvu;
-aayvv;
-aayvw;
-aayvx;
-aayvy;
-aayvz;
-aaywa;
-aaywb;
-aaywc;
-aaywd;
-aaywe;
-aaywf;
-aaywg;
-aaywh;
-aaywi;
-aaywj;
-aaywk;
-aaywl;
-aaywm;
-aaywn;
-aaywo;
-aaywp;
-aaywq;
-aaywr;
-aayws;
-aaywt;
-aaywu;
-aaywv;
-aayww;
-aaywx;
-aaywy;
-aaywz;
-aayxa;
-aayxb;
-aayxc;
-aayxd;
-aayxe;
-aayxf;
-aayxg;
-aayxh;
-aayxi;
-aayxj;
-aayxk;
-aayxl;
-aayxm;
-aayxn;
-aayxo;
-aayxp;
-aayxq;
-aayxr;
-aayxs;
-aayxt;
-aayxu;
-aayxv;
-aayxw;
-aayxx;
-aayxy;
-aayxz;
-aayya;
-aayyb;
-aayyc;
-aayyd;
-aayye;
-aayyf;
-aayyg;
-aayyh;
-aayyi;
-aayyj;
-aayyk;
-aayyl;
-aayym;
-aayyn;
-aayyo;
-aayyp;
-aayyq;
-aayyr;
-aayys;
-aayyt;
-aayyu;
-aayyv;
-aayyw;
-aayyx;
-aayyy;
-aayyz;
-aayza;
-aayzb;
-aayzc;
-aayzd;
-aayze;
-aayzf;
-aayzg;
-aayzh;
-aayzi;
-aayzj;
-aayzk;
-aayzl;
-aayzm;
-aayzn;
-aayzo;
-aayzp;
-aayzq;
-aayzr;
-aayzs;
-aayzt;
-aayzu;
-aayzv;
-aayzw;
-aayzx;
-aayzy;
-aayzz;
-aazaa;
-aazab;
-aazac;
-aazad;
-aazae;
-aazaf;
-aazag;
-aazah;
-aazai;
-aazaj;
-aazak;
-aazal;
-aazam;
-aazan;
-aazao;
-aazap;
-aazaq;
-aazar;
-aazas;
-aazat;
-aazau;
-aazav;
-aazaw;
-aazax;
-aazay;
-aazaz;
-aazba;
-aazbb;
-aazbc;
-aazbd;
-aazbe;
-aazbf;
-aazbg;
-aazbh;
-aazbi;
-aazbj;
-aazbk;
-aazbl;
-aazbm;
-aazbn;
-aazbo;
-aazbp;
-aazbq;
-aazbr;
-aazbs;
-aazbt;
-aazbu;
-aazbv;
-aazbw;
-aazbx;
-aazby;
-aazbz;
-aazca;
-aazcb;
-aazcc;
-aazcd;
-aazce;
-aazcf;
-aazcg;
-aazch;
-aazci;
-aazcj;
-aazck;
-aazcl;
-aazcm;
-aazcn;
-aazco;
-aazcp;
-aazcq;
-aazcr;
-aazcs;
-aazct;
-aazcu;
-aazcv;
-aazcw;
-aazcx;
-aazcy;
-aazcz;
-aazda;
-aazdb;
-aazdc;
-aazdd;
-aazde;
-aazdf;
-aazdg;
-aazdh;
-aazdi;
-aazdj;
-aazdk;
-aazdl;
-aazdm;
-aazdn;
-aazdo;
-aazdp;
-aazdq;
-aazdr;
-aazds;
-aazdt;
-aazdu;
-aazdv;
-aazdw;
-aazdx;
-aazdy;
-aazdz;
-aazea;
-aazeb;
-aazec;
-aazed;
-aazee;
-aazef;
-aazeg;
-aazeh;
-aazei;
-aazej;
-aazek;
-aazel;
-aazem;
-aazen;
-aazeo;
-aazep;
-aazeq;
-aazer;
-aazes;
-aazet;
-aazeu;
-aazev;
-aazew;
-aazex;
-aazey;
-aazez;
-aazfa;
-aazfb;
-aazfc;
-aazfd;
-aazfe;
-aazff;
-aazfg;
-aazfh;
-aazfi;
-aazfj;
-aazfk;
-aazfl;
-aazfm;
-aazfn;
-aazfo;
-aazfp;
-aazfq;
-aazfr;
-aazfs;
-aazft;
-aazfu;
-aazfv;
-aazfw;
-aazfx;
-aazfy;
-aazfz;
-aazga;
-aazgb;
-aazgc;
-aazgd;
-aazge;
-aazgf;
-aazgg;
-aazgh;
-aazgi;
-aazgj;
-aazgk;
-aazgl;
-aazgm;
-aazgn;
-aazgo;
-aazgp;
-aazgq;
-aazgr;
-aazgs;
-aazgt;
-aazgu;
-aazgv;
-aazgw;
-aazgx;
-aazgy;
-aazgz;
-aazha;
-aazhb;
-aazhc;
-aazhd;
-aazhe;
-aazhf;
-aazhg;
-aazhh;
-aazhi;
-aazhj;
-aazhk;
-aazhl;
-aazhm;
-aazhn;
-aazho;
-aazhp;
-aazhq;
-aazhr;
-aazhs;
-aazht;
-aazhu;
-aazhv;
-aazhw;
-aazhx;
-aazhy;
-aazhz;
-aazia;
-aazib;
-aazic;
-aazid;
-aazie;
-aazif;
-aazig;
-aazih;
-aazii;
-aazij;
-aazik;
-aazil;
-aazim;
-aazin;
-aazio;
-aazip;
-aaziq;
-aazir;
-aazis;
-aazit;
-aaziu;
-aaziv;
-aaziw;
-aazix;
-aaziy;
-aaziz;
-aazja;
-aazjb;
-aazjc;
-aazjd;
-aazje;
-aazjf;
-aazjg;
-aazjh;
-aazji;
-aazjj;
-aazjk;
-aazjl;
-aazjm;
-aazjn;
-aazjo;
-aazjp;
-aazjq;
-aazjr;
-aazjs;
-aazjt;
-aazju;
-aazjv;
-aazjw;
-aazjx;
-aazjy;
-aazjz;
-aazka;
-aazkb;
-aazkc;
-aazkd;
-aazke;
-aazkf;
-aazkg;
-aazkh;
-aazki;
-aazkj;
-aazkk;
-aazkl;
-aazkm;
-aazkn;
-aazko;
-aazkp;
-aazkq;
-aazkr;
-aazks;
-aazkt;
-aazku;
-aazkv;
-aazkw;
-aazkx;
-aazky;
-aazkz;
-aazla;
-aazlb;
-aazlc;
-aazld;
-aazle;
-aazlf;
-aazlg;
-aazlh;
-aazli;
-aazlj;
-aazlk;
-aazll;
-aazlm;
-aazln;
-aazlo;
-aazlp;
-aazlq;
-aazlr;
-aazls;
-aazlt;
-aazlu;
-aazlv;
-aazlw;
-aazlx;
-aazly;
-aazlz;
-aazma;
-aazmb;
-aazmc;
-aazmd;
-aazme;
-aazmf;
-aazmg;
-aazmh;
-aazmi;
-aazmj;
-aazmk;
-aazml;
-aazmm;
-aazmn;
-aazmo;
-aazmp;
-aazmq;
-aazmr;
-aazms;
-aazmt;
-aazmu;
-aazmv;
-aazmw;
-aazmx;
-aazmy;
-aazmz;
-aazna;
-aaznb;
-aaznc;
-aaznd;
-aazne;
-aaznf;
-aazng;
-aaznh;
-aazni;
-aaznj;
-aaznk;
-aaznl;
-aaznm;
-aaznn;
-aazno;
-aaznp;
-aaznq;
-aaznr;
-aazns;
-aaznt;
-aaznu;
-aaznv;
-aaznw;
-aaznx;
-aazny;
-aaznz;
-aazoa;
-aazob;
-aazoc;
-aazod;
-aazoe;
-aazof;
-aazog;
-aazoh;
-aazoi;
-aazoj;
-aazok;
-aazol;
-aazom;
-aazon;
-aazoo;
-aazop;
-aazoq;
-aazor;
-aazos;
-aazot;
-aazou;
-aazov;
-aazow;
-aazox;
-aazoy;
-aazoz;
-aazpa;
-aazpb;
-aazpc;
-aazpd;
-aazpe;
-aazpf;
-aazpg;
-aazph;
-aazpi;
-aazpj;
-aazpk;
-aazpl;
-aazpm;
-aazpn;
-aazpo;
-aazpp;
-aazpq;
-aazpr;
-aazps;
-aazpt;
-aazpu;
-aazpv;
-aazpw;
-aazpx;
-aazpy;
-aazpz;
-aazqa;
-aazqb;
-aazqc;
-aazqd;
-aazqe;
-aazqf;
-aazqg;
-aazqh;
-aazqi;
-aazqj;
-aazqk;
-aazql;
-aazqm;
-aazqn;
-aazqo;
-aazqp;
-aazqq;
-aazqr;
-aazqs;
-aazqt;
-aazqu;
-aazqv;
-aazqw;
-aazqx;
-aazqy;
-aazqz;
-aazra;
-aazrb;
-aazrc;
-aazrd;
-aazre;
-aazrf;
-aazrg;
-aazrh;
-aazri;
-aazrj;
-aazrk;
-aazrl;
-aazrm;
-aazrn;
-aazro;
-aazrp;
-aazrq;
-aazrr;
-aazrs;
-aazrt;
-aazru;
-aazrv;
-aazrw;
-aazrx;
-aazry;
-aazrz;
-aazsa;
-aazsb;
-aazsc;
-aazsd;
-aazse;
-aazsf;
-aazsg;
-aazsh;
-aazsi;
-aazsj;
-aazsk;
-aazsl;
-aazsm;
-aazsn;
-aazso;
-aazsp;
-aazsq;
-aazsr;
-aazss;
-aazst;
-aazsu;
-aazsv;
-aazsw;
-aazsx;
-aazsy;
-aazsz;
-aazta;
-aaztb;
-aaztc;
-aaztd;
-aazte;
-aaztf;
-aaztg;
-aazth;
-aazti;
-aaztj;
-aaztk;
-aaztl;
-aaztm;
-aaztn;
-aazto;
-aaztp;
-aaztq;
-aaztr;
-aazts;
-aaztt;
-aaztu;
-aaztv;
-aaztw;
-aaztx;
-aazty;
-aaztz;
-aazua;
-aazub;
-aazuc;
-aazud;
-aazue;
-aazuf;
-aazug;
-aazuh;
-aazui;
-aazuj;
-aazuk;
-aazul;
-aazum;
-aazun;
-aazuo;
-aazup;
-aazuq;
-aazur;
-aazus;
-aazut;
-aazuu;
-aazuv;
-aazuw;
-aazux;
-aazuy;
-aazuz;
-aazva;
-aazvb;
-aazvc;
-aazvd;
-aazve;
-aazvf;
-aazvg;
-aazvh;
-aazvi;
-aazvj;
-aazvk;
-aazvl;
-aazvm;
-aazvn;
-aazvo;
-aazvp;
-aazvq;
-aazvr;
-aazvs;
-aazvt;
-aazvu;
-aazvv;
-aazvw;
-aazvx;
-aazvy;
-aazvz;
-aazwa;
-aazwb;
-aazwc;
-aazwd;
-aazwe;
-aazwf;
-aazwg;
-aazwh;
-aazwi;
-aazwj;
-aazwk;
-aazwl;
-aazwm;
-aazwn;
-aazwo;
-aazwp;
-aazwq;
-aazwr;
-aazws;
-aazwt;
-aazwu;
-aazwv;
-aazww;
-aazwx;
-aazwy;
-aazwz;
-aazxa;
-aazxb;
-aazxc;
-aazxd;
-aazxe;
-aazxf;
-aazxg;
-aazxh;
-aazxi;
-aazxj;
-aazxk;
-aazxl;
-aazxm;
-aazxn;
-aazxo;
-aazxp;
-aazxq;
-aazxr;
-aazxs;
-aazxt;
-aazxu;
-aazxv;
-aazxw;
-aazxx;
-aazxy;
-aazxz;
-aazya;
-aazyb;
-aazyc;
-aazyd;
-aazye;
-aazyf;
-aazyg;
-aazyh;
-aazyi;
-aazyj;
-aazyk;
-aazyl;
-aazym;
-aazyn;
-aazyo;
-aazyp;
-aazyq;
-aazyr;
-aazys;
-aazyt;
-aazyu;
-aazyv;
-aazyw;
-aazyx;
-aazyy;
-aazyz;
-aazza;
-aazzb;
-aazzc;
-aazzd;
-aazze;
-aazzf;
-aazzg;
-aazzh;
-aazzi;
-aazzj;
-aazzk;
-aazzl;
-aazzm;
-aazzn;
-aazzo;
-aazzp;
-aazzq;
-aazzr;
-aazzs;
-aazzt;
-aazzu;
-aazzv;
-aazzw;
-aazzx;
-aazzy;
-aazzz;
-abaaa;
-abaab;
-abaac;
-abaad;
-abaae;
-abaaf;
-abaag;
-abaah;
-abaai;
-abaaj;
-abaak;
-abaal;
-abaam;
-abaan;
-abaao;
-abaap;
-abaaq;
-abaar;
-abaas;
-abaat;
-abaau;
-abaav;
-abaaw;
-abaax;
-abaay;
-abaaz;
-ababa;
-ababb;
-ababc;
-ababd;
-ababe;
-ababf;
-ababg;
-ababh;
-ababi;
-ababj;
-ababk;
-ababl;
-ababm;
-ababn;
-ababo;
-ababp;
-ababq;
-ababr;
-ababs;
-ababt;
-ababu;
-ababv;
-ababw;
-ababx;
-ababy;
-ababz;
-abaca;
-abacb;
-abacc;
-abacd;
-abace;
-abacf;
-abacg;
-abach;
-abaci;
-abacj;
-aback;
-abacl;
-abacm;
-abacn;
-abaco;
-abacp;
-abacq;
-abacr;
-abacs;
-abact;
-abacu;
-abacv;
-abacw;
-abacx;
-abacy;
-abacz;
-abada;
-abadb;
-abadc;
-abadd;
-abade;
-abadf;
-abadg;
-abadh;
-abadi;
-abadj;
-abadk;
-abadl;
-abadm;
-abadn;
-abado;
-abadp;
-abadq;
-abadr;
-abads;
-abadt;
-abadu;
-abadv;
-abadw;
-abadx;
-abady;
-abadz;
-abaea;
-abaeb;
-abaec;
-abaed;
-abaee;
-abaef;
-abaeg;
-abaeh;
-abaei;
-abaej;
-abaek;
-abael;
-abaem;
-abaen;
-abaeo;
-abaep;
-abaeq;
-abaer;
-abaes;
-abaet;
-abaeu;
-abaev;
-abaew;
-abaex;
-abaey;
-abaez;
-abafa;
-abafb;
-abafc;
-abafd;
-abafe;
-abaff;
-abafg;
-abafh;
-abafi;
-abafj;
-abafk;
-abafl;
-abafm;
-abafn;
-abafo;
-abafp;
-abafq;
-abafr;
-abafs;
-abaft;
-abafu;
-abafv;
-abafw;
-abafx;
-abafy;
-abafz;
-abaga;
-abagb;
-abagc;
-abagd;
-abage;
-abagf;
-abagg;
-abagh;
-abagi;
-abagj;
-abagk;
-abagl;
-abagm;
-abagn;
-abago;
-abagp;
-abagq;
-abagr;
-abags;
-abagt;
-abagu;
-abagv;
-abagw;
-abagx;
-abagy;
-abagz;
-abaha;
-abahb;
-abahc;
-abahd;
-abahe;
-abahf;
-abahg;
-abahh;
-abahi;
-abahj;
-abahk;
-abahl;
-abahm;
-abahn;
-abaho;
-abahp;
-abahq;
-abahr;
-abahs;
-abaht;
-abahu;
-abahv;
-abahw;
-abahx;
-abahy;
-abahz;
-abaia;
-abaib;
-abaic;
-abaid;
-abaie;
-abaif;
-abaig;
-abaih;
-abaii;
-abaij;
-abaik;
-abail;
-abaim;
-abain;
-abaio;
-abaip;
-abaiq;
-abair;
-abais;
-abait;
-abaiu;
-abaiv;
-abaiw;
-abaix;
-abaiy;
-abaiz;
-abaja;
-abajb;
-abajc;
-abajd;
-abaje;
-abajf;
-abajg;
-abajh;
-abaji;
-abajj;
-abajk;
-abajl;
-abajm;
-abajn;
-abajo;
-abajp;
-abajq;
-abajr;
-abajs;
-abajt;
-abaju;
-abajv;
-abajw;
-abajx;
-abajy;
-abajz;
-abaka;
-abakb;
-abakc;
-abakd;
-abake;
-abakf;
-abakg;
-abakh;
-abaki;
-abakj;
-abakk;
-abakl;
-abakm;
-abakn;
-abako;
-abakp;
-abakq;
-abakr;
-abaks;
-abakt;
-abaku;
-abakv;
-abakw;
-abakx;
-abaky;
-abakz;
-abala;
-abalb;
-abalc;
-abald;
-abale;
-abalf;
-abalg;
-abalh;
-abali;
-abalj;
-abalk;
-aball;
-abalm;
-abaln;
-abalo;
-abalp;
-abalq;
-abalr;
-abals;
-abalt;
-abalu;
-abalv;
-abalw;
-abalx;
-abaly;
-abalz;
-abama;
-abamb;
-abamc;
-abamd;
-abame;
-abamf;
-abamg;
-abamh;
-abami;
-abamj;
-abamk;
-abaml;
-abamm;
-abamn;
-abamo;
-abamp;
-abamq;
-abamr;
-abams;
-abamt;
-abamu;
-abamv;
-abamw;
-abamx;
-abamy;
-abamz;
-abana;
-abanb;
-abanc;
-aband;
-abane;
-abanf;
-abang;
-abanh;
-abani;
-abanj;
-abank;
-abanl;
-abanm;
-abann;
-abano;
-abanp;
-abanq;
-abanr;
-abans;
-abant;
-abanu;
-abanv;
-abanw;
-abanx;
-abany;
-abanz;
-abaoa;
-abaob;
-abaoc;
-abaod;
-abaoe;
-abaof;
-abaog;
-abaoh;
-abaoi;
-abaoj;
-abaok;
-abaol;
-abaom;
-abaon;
-abaoo;
-abaop;
-abaoq;
-abaor;
-abaos;
-abaot;
-abaou;
-abaov;
-abaow;
-abaox;
-abaoy;
-abaoz;
-abapa;
-abapb;
-abapc;
-abapd;
-abape;
-abapf;
-abapg;
-abaph;
-abapi;
-abapj;
-abapk;
-abapl;
-abapm;
-abapn;
-abapo;
-abapp;
-abapq;
-abapr;
-abaps;
-abapt;
-abapu;
-abapv;
-abapw;
-abapx;
-abapy;
-abapz;
-abaqa;
-abaqb;
-abaqc;
-abaqd;
-abaqe;
-abaqf;
-abaqg;
-abaqh;
-abaqi;
-abaqj;
-abaqk;
-abaql;
-abaqm;
-abaqn;
-abaqo;
-abaqp;
-abaqq;
-abaqr;
-abaqs;
-abaqt;
-abaqu;
-abaqv;
-abaqw;
-abaqx;
-abaqy;
-abaqz;
-abara;
-abarb;
-abarc;
-abard;
-abare;
-abarf;
-abarg;
-abarh;
-abari;
-abarj;
-abark;
-abarl;
-abarm;
-abarn;
-abaro;
-abarp;
-abarq;
-abarr;
-abars;
-abart;
-abaru;
-abarv;
-abarw;
-abarx;
-abary;
-abarz;
-abasa;
-abasb;
-abasc;
-abasd;
-abase;
-abasf;
-abasg;
-abash;
-abasi;
-abasj;
-abask;
-abasl;
-abasm;
-abasn;
-abaso;
-abasp;
-abasq;
-abasr;
-abass;
-abast;
-abasu;
-abasv;
-abasw;
-abasx;
-abasy;
-abasz;
-abata;
-abatb;
-abatc;
-abatd;
-abate;
-abatf;
-abatg;
-abath;
-abati;
-abatj;
-abatk;
-abatl;
-abatm;
-abatn;
-abato;
-abatp;
-abatq;
-abatr;
-abats;
-abatt;
-abatu;
-abatv;
-abatw;
-abatx;
-abaty;
-abatz;
-abaua;
-abaub;
-abauc;
-abaud;
-abaue;
-abauf;
-abaug;
-abauh;
-abaui;
-abauj;
-abauk;
-abaul;
-abaum;
-abaun;
-abauo;
-abaup;
-abauq;
-abaur;
-abaus;
-abaut;
-abauu;
-abauv;
-abauw;
-abaux;
-abauy;
-abauz;
-abava;
-abavb;
-abavc;
-abavd;
-abave;
-abavf;
-abavg;
-abavh;
-abavi;
-abavj;
-abavk;
-abavl;
-abavm;
-abavn;
-abavo;
-abavp;
-abavq;
-abavr;
-abavs;
-abavt;
-abavu;
-abavv;
-abavw;
-abavx;
-abavy;
-abavz;
-abawa;
-abawb;
-abawc;
-abawd;
-abawe;
-abawf;
-abawg;
-abawh;
-abawi;
-abawj;
-abawk;
-abawl;
-abawm;
-abawn;
-abawo;
-abawp;
-abawq;
-abawr;
-abaws;
-abawt;
-abawu;
-abawv;
-abaww;
-abawx;
-abawy;
-abawz;
-abaxa;
-abaxb;
-abaxc;
-abaxd;
-abaxe;
-abaxf;
-abaxg;
-abaxh;
-abaxi;
-abaxj;
-abaxk;
-abaxl;
-abaxm;
-abaxn;
-abaxo;
-abaxp;
-abaxq;
-abaxr;
-abaxs;
-abaxt;
-abaxu;
-abaxv;
-abaxw;
-abaxx;
-abaxy;
-abaxz;
-abaya;
-abayb;
-abayc;
-abayd;
-abaye;
-abayf;
-abayg;
-abayh;
-abayi;
-abayj;
-abayk;
-abayl;
-abaym;
-abayn;
-abayo;
-abayp;
-abayq;
-abayr;
-abays;
-abayt;
-abayu;
-abayv;
-abayw;
-abayx;
-abayy;
-abayz;
-abaza;
-abazb;
-abazc;
-abazd;
-abaze;
-abazf;
-abazg;
-abazh;
-abazi;
-abazj;
-abazk;
-abazl;
-abazm;
-abazn;
-abazo;
-abazp;
-abazq;
-abazr;
-abazs;
-abazt;
-abazu;
-abazv;
-abazw;
-abazx;
-abazy;
-abazz;
-abbaa;
-abbab;
-abbac;
-abbad;
-abbae;
-abbaf;
-abbag;
-abbah;
-abbai;
-abbaj;
-abbak;
-abbal;
-abbam;
-abban;
-abbao;
-abbap;
-abbaq;
-abbar;
-abbas;
-abbat;
-abbau;
-abbav;
-abbaw;
-abbax;
-abbay;
-abbaz;
-abbba;
-abbbb;
-abbbc;
-abbbd;
-abbbe;
-abbbf;
-abbbg;
-abbbh;
-abbbi;
-abbbj;
-abbbk;
-abbbl;
-abbbm;
-abbbn;
-abbbo;
-abbbp;
-abbbq;
-abbbr;
-abbbs;
-abbbt;
-abbbu;
-abbbv;
-abbbw;
-abbbx;
-abbby;
-abbbz;
-abbca;
-abbcb;
-abbcc;
-abbcd;
-abbce;
-abbcf;
-abbcg;
-abbch;
-abbci;
-abbcj;
-abbck;
-abbcl;
-abbcm;
-abbcn;
-abbco;
-abbcp;
-abbcq;
-abbcr;
-abbcs;
-abbct;
-abbcu;
-abbcv;
-abbcw;
-abbcx;
-abbcy;
-abbcz;
-abbda;
-abbdb;
-abbdc;
-abbdd;
-abbde;
-abbdf;
-abbdg;
-abbdh;
-abbdi;
-abbdj;
-abbdk;
-abbdl;
-abbdm;
-abbdn;
-abbdo;
-abbdp;
-abbdq;
-abbdr;
-abbds;
-abbdt;
-abbdu;
-abbdv;
-abbdw;
-abbdx;
-abbdy;
-abbdz;
-abbea;
-abbeb;
-abbec;
-abbed;
-abbee;
-abbef;
-abbeg;
-abbeh;
-abbei;
-abbej;
-abbek;
-abbel;
-abbem;
-abben;
-abbeo;
-abbep;
-abbeq;
-abber;
-abbes;
-abbet;
-abbeu;
-abbev;
-abbew;
-abbex;
-abbey;
-abbez;
-abbfa;
-abbfb;
-abbfc;
-abbfd;
-abbfe;
-abbff;
-abbfg;
-abbfh;
-abbfi;
-abbfj;
-abbfk;
-abbfl;
-abbfm;
-abbfn;
-abbfo;
-abbfp;
-abbfq;
-abbfr;
-abbfs;
-abbft;
-abbfu;
-abbfv;
-abbfw;
-abbfx;
-abbfy;
-abbfz;
-abbga;
-abbgb;
-abbgc;
-abbgd;
-abbge;
-abbgf;
-abbgg;
-abbgh;
-abbgi;
-abbgj;
-abbgk;
-abbgl;
-abbgm;
-abbgn;
-abbgo;
-abbgp;
-abbgq;
-abbgr;
-abbgs;
-abbgt;
-abbgu;
-abbgv;
-abbgw;
-abbgx;
-abbgy;
-abbgz;
-abbha;
-abbhb;
-abbhc;
-abbhd;
-abbhe;
-abbhf;
-abbhg;
-abbhh;
-abbhi;
-abbhj;
-abbhk;
-abbhl;
-abbhm;
-abbhn;
-abbho;
-abbhp;
-abbhq;
-abbhr;
-abbhs;
-abbht;
-abbhu;
-abbhv;
-abbhw;
-abbhx;
-abbhy;
-abbhz;
-abbia;
-abbib;
-abbic;
-abbid;
-abbie;
-abbif;
-abbig;
-abbih;
-abbii;
-abbij;
-abbik;
-abbil;
-abbim;
-abbin;
-abbio;
-abbip;
-abbiq;
-abbir;
-abbis;
-abbit;
-abbiu;
-abbiv;
-abbiw;
-abbix;
-abbiy;
-abbiz;
-abbja;
-abbjb;
-abbjc;
-abbjd;
-abbje;
-abbjf;
-abbjg;
-abbjh;
-abbji;
-abbjj;
-abbjk;
-abbjl;
-abbjm;
-abbjn;
-abbjo;
-abbjp;
-abbjq;
-abbjr;
-abbjs;
-abbjt;
-abbju;
-abbjv;
-abbjw;
-abbjx;
-abbjy;
-abbjz;
-abbka;
-abbkb;
-abbkc;
-abbkd;
-abbke;
-abbkf;
-abbkg;
-abbkh;
-abbki;
-abbkj;
-abbkk;
-abbkl;
-abbkm;
-abbkn;
-abbko;
-abbkp;
-abbkq;
-abbkr;
-abbks;
-abbkt;
-abbku;
-abbkv;
-abbkw;
-abbkx;
-abbky;
-abbkz;
-abbla;
-abblb;
-abblc;
-abbld;
-abble;
-abblf;
-abblg;
-abblh;
-abbli;
-abblj;
-abblk;
-abbll;
-abblm;
-abbln;
-abblo;
-abblp;
-abblq;
-abblr;
-abbls;
-abblt;
-abblu;
-abblv;
-abblw;
-abblx;
-abbly;
-abblz;
-abbma;
-abbmb;
-abbmc;
-abbmd;
-abbme;
-abbmf;
-abbmg;
-abbmh;
-abbmi;
-abbmj;
-abbmk;
-abbml;
-abbmm;
-abbmn;
-abbmo;
-abbmp;
-abbmq;
-abbmr;
-abbms;
-abbmt;
-abbmu;
-abbmv;
-abbmw;
-abbmx;
-abbmy;
-abbmz;
-abbna;
-abbnb;
-abbnc;
-abbnd;
-abbne;
-abbnf;
-abbng;
-abbnh;
-abbni;
-abbnj;
-abbnk;
-abbnl;
-abbnm;
-abbnn;
-abbno;
-abbnp;
-abbnq;
-abbnr;
-abbns;
-abbnt;
-abbnu;
-abbnv;
-abbnw;
-abbnx;
-abbny;
-abbnz;
-abboa;
-abbob;
-abboc;
-abbod;
-abboe;
-abbof;
-abbog;
-abboh;
-abboi;
-abboj;
-abbok;
-abbol;
-abbom;
-abbon;
-abboo;
-abbop;
-abboq;
-abbor;
-abbos;
-abbot;
-abbou;
-abbov;
-abbow;
-abbox;
-abboy;
-abboz;
-abbpa;
-abbpb;
-abbpc;
-abbpd;
-abbpe;
-abbpf;
-abbpg;
-abbph;
-abbpi;
-abbpj;
-abbpk;
-abbpl;
-abbpm;
-abbpn;
-abbpo;
-abbpp;
-abbpq;
-abbpr;
-abbps;
-abbpt;
-abbpu;
-abbpv;
-abbpw;
-abbpx;
-abbpy;
-abbpz;
-abbqa;
-abbqb;
-abbqc;
-abbqd;
-abbqe;
-abbqf;
-abbqg;
-abbqh;
-abbqi;
-abbqj;
-abbqk;
-abbql;
-abbqm;
-abbqn;
-abbqo;
-abbqp;
-abbqq;
-abbqr;
-abbqs;
-abbqt;
-abbqu;
-abbqv;
-abbqw;
-abbqx;
-abbqy;
-abbqz;
-abbra;
-abbrb;
-abbrc;
-abbrd;
-abbre;
-abbrf;
-abbrg;
-abbrh;
-abbri;
-abbrj;
-abbrk;
-abbrl;
-abbrm;
-abbrn;
-abbro;
-abbrp;
-abbrq;
-abbrr;
-abbrs;
-abbrt;
-abbru;
-abbrv;
-abbrw;
-abbrx;
-abbry;
-abbrz;
-abbsa;
-abbsb;
-abbsc;
-abbsd;
-abbse;
-abbsf;
-abbsg;
-abbsh;
-abbsi;
-abbsj;
-abbsk;
-abbsl;
-abbsm;
-abbsn;
-abbso;
-abbsp;
-abbsq;
-abbsr;
-abbss;
-abbst;
-abbsu;
-abbsv;
-abbsw;
-abbsx;
-abbsy;
-abbsz;
-abbta;
-abbtb;
-abbtc;
-abbtd;
-abbte;
-abbtf;
-abbtg;
-abbth;
-abbti;
-abbtj;
-abbtk;
-abbtl;
-abbtm;
-abbtn;
-abbto;
-abbtp;
-abbtq;
-abbtr;
-abbts;
-abbtt;
-abbtu;
-abbtv;
-abbtw;
-abbtx;
-abbty;
-abbtz;
-abbua;
-abbub;
-abbuc;
-abbud;
-abbue;
-abbuf;
-abbug;
-abbuh;
-abbui;
-abbuj;
-abbuk;
-abbul;
-abbum;
-abbun;
-abbuo;
-abbup;
-abbuq;
-abbur;
-abbus;
-abbut;
-abbuu;
-abbuv;
-abbuw;
-abbux;
-abbuy;
-abbuz;
-abbva;
-abbvb;
-abbvc;
-abbvd;
-abbve;
-abbvf;
-abbvg;
-abbvh;
-abbvi;
-abbvj;
-abbvk;
-abbvl;
-abbvm;
-abbvn;
-abbvo;
-abbvp;
-abbvq;
-abbvr;
-abbvs;
-abbvt;
-abbvu;
-abbvv;
-abbvw;
-abbvx;
-abbvy;
-abbvz;
-abbwa;
-abbwb;
-abbwc;
-abbwd;
-abbwe;
-abbwf;
-abbwg;
-abbwh;
-abbwi;
-abbwj;
-abbwk;
-abbwl;
-abbwm;
-abbwn;
-abbwo;
-abbwp;
-abbwq;
-abbwr;
-abbws;
-abbwt;
-abbwu;
-abbwv;
-abbww;
-abbwx;
-abbwy;
-abbwz;
-abbxa;
-abbxb;
-abbxc;
-abbxd;
-abbxe;
-abbxf;
-abbxg;
-abbxh;
-abbxi;
-abbxj;
-abbxk;
-abbxl;
-abbxm;
-abbxn;
-abbxo;
-abbxp;
-abbxq;
-abbxr;
-abbxs;
-abbxt;
-abbxu;
-abbxv;
-abbxw;
-abbxx;
-abbxy;
-abbxz;
-abbya;
-abbyb;
-abbyc;
-abbyd;
-abbye;
-abbyf;
-abbyg;
-abbyh;
-abbyi;
-abbyj;
-abbyk;
-abbyl;
-abbym;
-abbyn;
-abbyo;
-abbyp;
-abbyq;
-abbyr;
-abbys;
-abbyt;
-abbyu;
-abbyv;
-abbyw;
-abbyx;
-abbyy;
-abbyz;
-abbza;
-abbzb;
-abbzc;
-abbzd;
-abbze;
-abbzf;
-abbzg;
-abbzh;
-abbzi;
-abbzj;
-abbzk;
-abbzl;
-abbzm;
-abbzn;
-abbzo;
-abbzp;
-abbzq;
-abbzr;
-abbzs;
-abbzt;
-abbzu;
-abbzv;
-abbzw;
-abbzx;
-abbzy;
-abbzz;
-abcaa;
-abcab;
-abcac;
-abcad;
-abcae;
-abcaf;
-abcag;
-abcah;
-abcai;
-abcaj;
-abcak;
-abcal;
-abcam;
-abcan;
-abcao;
-abcap;
-abcaq;
-abcar;
-abcas;
-abcat;
-abcau;
-abcav;
-abcaw;
-abcax;
-abcay;
-abcaz;
-abcba;
-abcbb;
-abcbc;
-abcbd;
-abcbe;
-abcbf;
-abcbg;
-abcbh;
-abcbi;
-abcbj;
-abcbk;
-abcbl;
-abcbm;
-abcbn;
-abcbo;
-abcbp;
-abcbq;
-abcbr;
-abcbs;
-abcbt;
-abcbu;
-abcbv;
-abcbw;
-abcbx;
-abcby;
-abcbz;
-abcca;
-abccb;
-abccc;
-abccd;
-abcce;
-abccf;
-abccg;
-abcch;
-abcci;
-abccj;
-abcck;
-abccl;
-abccm;
-abccn;
-abcco;
-abccp;
-abccq;
-abccr;
-abccs;
-abcct;
-abccu;
-abccv;
-abccw;
-abccx;
-abccy;
-abccz;
-abcda;
-abcdb;
-abcdc;
-abcdd;
-abcde;
-abcdf;
-abcdg;
-abcdh;
-abcdi;
-abcdj;
-abcdk;
-abcdl;
-abcdm;
-abcdn;
-abcdo;
-abcdp;
-abcdq;
-abcdr;
-abcds;
-abcdt;
-abcdu;
-abcdv;
-abcdw;
-abcdx;
-abcdy;
-abcdz;
-abcea;
-abceb;
-abcec;
-abced;
-abcee;
-abcef;
-abceg;
-abceh;
-abcei;
-abcej;
-abcek;
-abcel;
-abcem;
-abcen;
-abceo;
-abcep;
-abceq;
-abcer;
-abces;
-abcet;
-abceu;
-abcev;
-abcew;
-abcex;
-abcey;
-abcez;
-abcfa;
-abcfb;
-abcfc;
-abcfd;
-abcfe;
-abcff;
-abcfg;
-abcfh;
-abcfi;
-abcfj;
-abcfk;
-abcfl;
-abcfm;
-abcfn;
-abcfo;
-abcfp;
-abcfq;
-abcfr;
-abcfs;
-abcft;
-abcfu;
-abcfv;
-abcfw;
-abcfx;
-abcfy;
-abcfz;
-abcga;
-abcgb;
-abcgc;
-abcgd;
-abcge;
-abcgf;
-abcgg;
-abcgh;
-abcgi;
-abcgj;
-abcgk;
-abcgl;
-abcgm;
-abcgn;
-abcgo;
-abcgp;
-abcgq;
-abcgr;
-abcgs;
-abcgt;
-abcgu;
-abcgv;
-abcgw;
-abcgx;
-abcgy;
-abcgz;
-abcha;
-abchb;
-abchc;
-abchd;
-abche;
-abchf;
-abchg;
-abchh;
-abchi;
-abchj;
-abchk;
-abchl;
-abchm;
-abchn;
-abcho;
-abchp;
-abchq;
-abchr;
-abchs;
-abcht;
-abchu;
-abchv;
-abchw;
-abchx;
-abchy;
-abchz;
-abcia;
-abcib;
-abcic;
-abcid;
-abcie;
-abcif;
-abcig;
-abcih;
-abcii;
-abcij;
-abcik;
-abcil;
-abcim;
-abcin;
-abcio;
-abcip;
-abciq;
-abcir;
-abcis;
-abcit;
-abciu;
-abciv;
-abciw;
-abcix;
-abciy;
-abciz;
-abcja;
-abcjb;
-abcjc;
-abcjd;
-abcje;
-abcjf;
-abcjg;
-abcjh;
-abcji;
-abcjj;
-abcjk;
-abcjl;
-abcjm;
-abcjn;
-abcjo;
-abcjp;
-abcjq;
-abcjr;
-abcjs;
-abcjt;
-abcju;
-abcjv;
-abcjw;
-abcjx;
-abcjy;
-abcjz;
-abcka;
-abckb;
-abckc;
-abckd;
-abcke;
-abckf;
-abckg;
-abckh;
-abcki;
-abckj;
-abckk;
-abckl;
-abckm;
-abckn;
-abcko;
-abckp;
-abckq;
-abckr;
-abcks;
-abckt;
-abcku;
-abckv;
-abckw;
-abckx;
-abcky;
-abckz;
-abcla;
-abclb;
-abclc;
-abcld;
-abcle;
-abclf;
-abclg;
-abclh;
-abcli;
-abclj;
-abclk;
-abcll;
-abclm;
-abcln;
-abclo;
-abclp;
-abclq;
-abclr;
-abcls;
-abclt;
-abclu;
-abclv;
-abclw;
-abclx;
-abcly;
-abclz;
-abcma;
-abcmb;
-abcmc;
-abcmd;
-abcme;
-abcmf;
-abcmg;
-abcmh;
-abcmi;
-abcmj;
-abcmk;
-abcml;
-abcmm;
-abcmn;
-abcmo;
-abcmp;
-abcmq;
-abcmr;
-abcms;
-abcmt;
-abcmu;
-abcmv;
-abcmw;
-abcmx;
-abcmy;
-abcmz;
-abcna;
-abcnb;
-abcnc;
-abcnd;
-abcne;
-abcnf;
-abcng;
-abcnh;
-abcni;
-abcnj;
-abcnk;
-abcnl;
-abcnm;
-abcnn;
-abcno;
-abcnp;
-abcnq;
-abcnr;
-abcns;
-abcnt;
-abcnu;
-abcnv;
-abcnw;
-abcnx;
-abcny;
-abcnz;
-abcoa;
-abcob;
-abcoc;
-abcod;
-abcoe;
-abcof;
-abcog;
-abcoh;
-abcoi;
-abcoj;
-abcok;
-abcol;
-abcom;
-abcon;
-abcoo;
-abcop;
-abcoq;
-abcor;
-abcos;
-abcot;
-abcou;
-abcov;
-abcow;
-abcox;
-abcoy;
-abcoz;
-abcpa;
-abcpb;
-abcpc;
-abcpd;
-abcpe;
-abcpf;
-abcpg;
-abcph;
-abcpi;
-abcpj;
-abcpk;
-abcpl;
-abcpm;
-abcpn;
-abcpo;
-abcpp;
-abcpq;
-abcpr;
-abcps;
-abcpt;
-abcpu;
-abcpv;
-abcpw;
-abcpx;
-abcpy;
-abcpz;
-abcqa;
-abcqb;
-abcqc;
-abcqd;
-abcqe;
-abcqf;
-abcqg;
-abcqh;
-abcqi;
-abcqj;
-abcqk;
-abcql;
-abcqm;
-abcqn;
-abcqo;
-abcqp;
-abcqq;
-abcqr;
-abcqs;
-abcqt;
-abcqu;
-abcqv;
-abcqw;
-abcqx;
-abcqy;
-abcqz;
-abcra;
-abcrb;
-abcrc;
-abcrd;
-abcre;
-abcrf;
-abcrg;
-abcrh;
-abcri;
-abcrj;
-abcrk;
-abcrl;
-abcrm;
-abcrn;
-abcro;
-abcrp;
-abcrq;
-abcrr;
-abcrs;
-abcrt;
-abcru;
-abcrv;
-abcrw;
-abcrx;
-abcry;
-abcrz;
-abcsa;
-abcsb;
-abcsc;
-abcsd;
-abcse;
-abcsf;
-abcsg;
-abcsh;
-abcsi;
-abcsj;
-abcsk;
-abcsl;
-abcsm;
-abcsn;
-abcso;
-abcsp;
-abcsq;
-abcsr;
-abcss;
-abcst;
-abcsu;
-abcsv;
-abcsw;
-abcsx;
-abcsy;
-abcsz;
-abcta;
-abctb;
-abctc;
-abctd;
-abcte;
-abctf;
-abctg;
-abcth;
-abcti;
-abctj;
-abctk;
-abctl;
-abctm;
-abctn;
-abcto;
-abctp;
-abctq;
-abctr;
-abcts;
-abctt;
-abctu;
-abctv;
-abctw;
-abctx;
-abcty;
-abctz;
-abcua;
-abcub;
-abcuc;
-abcud;
-abcue;
-abcuf;
-abcug;
-abcuh;
-abcui;
-abcuj;
-abcuk;
-abcul;
-abcum;
-abcun;
-abcuo;
-abcup;
-abcuq;
-abcur;
-abcus;
-abcut;
-abcuu;
-abcuv;
-abcuw;
-abcux;
-abcuy;
-abcuz;
-abcva;
-abcvb;
-abcvc;
-abcvd;
-abcve;
-abcvf;
-abcvg;
-abcvh;
-abcvi;
-abcvj;
-abcvk;
-abcvl;
-abcvm;
-abcvn;
-abcvo;
-abcvp;
-abcvq;
-abcvr;
-abcvs;
-abcvt;
-abcvu;
-abcvv;
-abcvw;
-abcvx;
-abcvy;
-abcvz;
-abcwa;
-abcwb;
-abcwc;
-abcwd;
-abcwe;
-abcwf;
-abcwg;
-abcwh;
-abcwi;
-abcwj;
-abcwk;
-abcwl;
-abcwm;
-abcwn;
-abcwo;
-abcwp;
-abcwq;
-abcwr;
-abcws;
-abcwt;
-abcwu;
-abcwv;
-abcww;
-abcwx;
-abcwy;
-abcwz;
-abcxa;
-abcxb;
-abcxc;
-abcxd;
-abcxe;
-abcxf;
-abcxg;
-abcxh;
-abcxi;
-abcxj;
-abcxk;
-abcxl;
-abcxm;
-abcxn;
-abcxo;
-abcxp;
-abcxq;
-abcxr;
-abcxs;
-abcxt;
-abcxu;
-abcxv;
-abcxw;
-abcxx;
-abcxy;
-abcxz;
-abcya;
-abcyb;
-abcyc;
-abcyd;
-abcye;
-abcyf;
-abcyg;
-abcyh;
-abcyi;
-abcyj;
-abcyk;
-abcyl;
-abcym;
-abcyn;
-abcyo;
-abcyp;
-abcyq;
-abcyr;
-abcys;
-abcyt;
-abcyu;
-abcyv;
-abcyw;
-abcyx;
-abcyy;
-abcyz;
-abcza;
-abczb;
-abczc;
-abczd;
-abcze;
-abczf;
-abczg;
-abczh;
-abczi;
-abczj;
-abczk;
-abczl;
-abczm;
-abczn;
-abczo;
-abczp;
-abczq;
-abczr;
-abczs;
-abczt;
-abczu;
-abczv;
-abczw;
-abczx;
-abczy;
-abczz;
-abdaa;
-abdab;
-abdac;
-abdad;
-abdae;
-abdaf;
-abdag;
-abdah;
-abdai;
-abdaj;
-abdak;
-abdal;
-abdam;
-abdan;
-abdao;
-abdap;
-abdaq;
-abdar;
-abdas;
-abdat;
-abdau;
-abdav;
-abdaw;
-abdax;
-abday;
-abdaz;
-abdba;
-abdbb;
-abdbc;
-abdbd;
-abdbe;
-abdbf;
-abdbg;
-abdbh;
-abdbi;
-abdbj;
-abdbk;
-abdbl;
-abdbm;
-abdbn;
-abdbo;
-abdbp;
-abdbq;
-abdbr;
-abdbs;
-abdbt;
-abdbu;
-abdbv;
-abdbw;
-abdbx;
-abdby;
-abdbz;
-abdca;
-abdcb;
-abdcc;
-abdcd;
-abdce;
-abdcf;
-abdcg;
-abdch;
-abdci;
-abdcj;
-abdck;
-abdcl;
-abdcm;
-abdcn;
-abdco;
-abdcp;
-abdcq;
-abdcr;
-abdcs;
-abdct;
-abdcu;
-abdcv;
-abdcw;
-abdcx;
-abdcy;
-abdcz;
-abdda;
-abddb;
-abddc;
-abddd;
-abdde;
-abddf;
-abddg;
-abddh;
-abddi;
-abddj;
-abddk;
-abddl;
-abddm;
-abddn;
-abddo;
-abddp;
-abddq;
-abddr;
-abdds;
-abddt;
-abddu;
-abddv;
-abddw;
-abddx;
-abddy;
-abddz;
-abdea;
-abdeb;
-abdec;
-abded;
-abdee;
-abdef;
-abdeg;
-abdeh;
-abdei;
-abdej;
-abdek;
-abdel;
-abdem;
-abden;
-abdeo;
-abdep;
-abdeq;
-abder;
-abdes;
-abdet;
-abdeu;
-abdev;
-abdew;
-abdex;
-abdey;
-abdez;
-abdfa;
-abdfb;
-abdfc;
-abdfd;
-abdfe;
-abdff;
-abdfg;
-abdfh;
-abdfi;
-abdfj;
-abdfk;
-abdfl;
-abdfm;
-abdfn;
-abdfo;
-abdfp;
-abdfq;
-abdfr;
-abdfs;
-abdft;
-abdfu;
-abdfv;
-abdfw;
-abdfx;
-abdfy;
-abdfz;
-abdga;
-abdgb;
-abdgc;
-abdgd;
-abdge;
-abdgf;
-abdgg;
-abdgh;
-abdgi;
-abdgj;
-abdgk;
-abdgl;
-abdgm;
-abdgn;
-abdgo;
-abdgp;
-abdgq;
-abdgr;
-abdgs;
-abdgt;
-abdgu;
-abdgv;
-abdgw;
-abdgx;
-abdgy;
-abdgz;
-abdha;
-abdhb;
-abdhc;
-abdhd;
-abdhe;
-abdhf;
-abdhg;
-abdhh;
-abdhi;
-abdhj;
-abdhk;
-abdhl;
-abdhm;
-abdhn;
-abdho;
-abdhp;
-abdhq;
-abdhr;
-abdhs;
-abdht;
-abdhu;
-abdhv;
-abdhw;
-abdhx;
-abdhy;
-abdhz;
-abdia;
-abdib;
-abdic;
-abdid;
-abdie;
-abdif;
-abdig;
-abdih;
-abdii;
-abdij;
-abdik;
-abdil;
-abdim;
-abdin;
-abdio;
-abdip;
-abdiq;
-abdir;
-abdis;
-abdit;
-abdiu;
-abdiv;
-abdiw;
-abdix;
-abdiy;
-abdiz;
-abdja;
-abdjb;
-abdjc;
-abdjd;
-abdje;
-abdjf;
-abdjg;
-abdjh;
-abdji;
-abdjj;
-abdjk;
-abdjl;
-abdjm;
-abdjn;
-abdjo;
-abdjp;
-abdjq;
-abdjr;
-abdjs;
-abdjt;
-abdju;
-abdjv;
-abdjw;
-abdjx;
-abdjy;
-abdjz;
-abdka;
-abdkb;
-abdkc;
-abdkd;
-abdke;
-abdkf;
-abdkg;
-abdkh;
-abdki;
-abdkj;
-abdkk;
-abdkl;
-abdkm;
-abdkn;
-abdko;
-abdkp;
-abdkq;
-abdkr;
-abdks;
-abdkt;
-abdku;
-abdkv;
-abdkw;
-abdkx;
-abdky;
-abdkz;
-abdla;
-abdlb;
-abdlc;
-abdld;
-abdle;
-abdlf;
-abdlg;
-abdlh;
-abdli;
-abdlj;
-abdlk;
-abdll;
-abdlm;
-abdln;
-abdlo;
-abdlp;
-abdlq;
-abdlr;
-abdls;
-abdlt;
-abdlu;
-abdlv;
-abdlw;
-abdlx;
-abdly;
-abdlz;
-abdma;
-abdmb;
-abdmc;
-abdmd;
-abdme;
-abdmf;
-abdmg;
-abdmh;
-abdmi;
-abdmj;
-abdmk;
-abdml;
-abdmm;
-abdmn;
-abdmo;
-abdmp;
-abdmq;
-abdmr;
-abdms;
-abdmt;
-abdmu;
-abdmv;
-abdmw;
-abdmx;
-abdmy;
-abdmz;
-abdna;
-abdnb;
-abdnc;
-abdnd;
-abdne;
-abdnf;
-abdng;
-abdnh;
-abdni;
-abdnj;
-abdnk;
-abdnl;
-abdnm;
-abdnn;
-abdno;
-abdnp;
-abdnq;
-abdnr;
-abdns;
-abdnt;
-abdnu;
-abdnv;
-abdnw;
-abdnx;
-abdny;
-abdnz;
-abdoa;
-abdob;
-abdoc;
-abdod;
-abdoe;
-abdof;
-abdog;
-abdoh;
-abdoi;
-abdoj;
-abdok;
-abdol;
-abdom;
-abdon;
-abdoo;
-abdop;
-abdoq;
-abdor;
-abdos;
-abdot;
-abdou;
-abdov;
-abdow;
-abdox;
-abdoy;
-abdoz;
-abdpa;
-abdpb;
-abdpc;
-abdpd;
-aljwf
-|];
diff --git a/camlp4/test/fixtures/bug-4058.ml b/camlp4/test/fixtures/bug-4058.ml
deleted file mode 100644 (file)
index f83322b..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-let _ = (fun x -> x), 1
-let _ = (x := 1), 2
-let _ = (x <- 1), 2
-let _ = (if true then 1 else 2), 1
diff --git a/camlp4/test/fixtures/bug-4337.ml b/camlp4/test/fixtures/bug-4337.ml
deleted file mode 100644 (file)
index 5a44ed0..0000000
+++ /dev/null
@@ -1 +0,0 @@
-match [] with []°-> () | _ -> ();;
diff --git a/camlp4/test/fixtures/bug-by-vincent-balat.ml b/camlp4/test/fixtures/bug-by-vincent-balat.ml
deleted file mode 100644 (file)
index ed75488..0000000
+++ /dev/null
@@ -1 +0,0 @@
-fun a -> x <- !x + 1; x <- !x + 2
diff --git a/camlp4/test/fixtures/bug-camlp4o-benjamin-monate.ml b/camlp4/test/fixtures/bug-camlp4o-benjamin-monate.ml
deleted file mode 100644 (file)
index e7e583d..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-type t = A of t | B ;;
-let f = function A A B -> B | B | A B | A (A _) -> B ;;
-
-exception True
-let qexists f q =
-  try
-    Queue.iter (fun v -> if f v then raise True) q;
-    false
-  with True -> true
-
-type u = True | False
-let g x = function | True -> () | False -> ()
-
-type v = [`True | `False]
-let h x = function | `True -> () | `False -> ()
diff --git a/camlp4/test/fixtures/bug-camlp4o-constr-arity-expr.ml b/camlp4/test/fixtures/bug-camlp4o-constr-arity-expr.ml
deleted file mode 100644 (file)
index fc9b6ad..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-(* Some Some Some None;; *)
-(* ((Some None) None) None;; *)
-((Some) None);;
-(* ((Some Some) Some) None;; *)
-type t = A of int * int * int;;
-A (1, 2, 3);;
-(A) (1, 2, 3);;
-(A (1, 2)) 3;;
diff --git a/camlp4/test/fixtures/bug-camlp4o-constr-arity.ml b/camlp4/test/fixtures/bug-camlp4o-constr-arity.ml
deleted file mode 100644 (file)
index 25efe04..0000000
+++ /dev/null
@@ -1,75 +0,0 @@
-type t = A of t * t | B;;
-type t2 = C of (t2 * t2) | D;;
-type 'a t3 = S of 'a | T;;
-
-fun B B B -> ();;
-
-fun B (A (B, B)) B -> ();;
-
-fun D (D, D) -> ();;
-
-fun (C (D, D)) -> ();;
-
-let A (b, B) = A (B, B);;
-
-let f (A (B, B)) = ();;
-
-let f B (A (B, B)) = ();;
-
-let (D, d) = (D, D);;
-
-let (C (D, d)) = (C (D, D));;
-
-function S S T -> ();;
-
-function Some (A (B, B)) -> ();;
-
-function S (A (B, B)) -> ();;
-
-function S (D, D) -> ();;
-
-function (C (D, D)) -> ();;
-
-function
-| Some Some Some x -> x
-(* | None None None x -> x *)
-| _ -> assert false;;
-
-fun None None None -> ();;
-
-fun (Some None) None None -> ();;
-
-let Some a = Some 42;;
-let Some a :: y = [Some 42];;
-let Some a, b = Some 42, 43;;
-let (Some a), b = Some 42, 43;;
-let Some a as b = let _ = b = 42 in Some 42;;
-(* let Some (a as b) = let _ = b = None in Some 42;; *)
-(* let Some (a as b) = let _ = b = 42 in Some 42;; *)
-(* let (Some a) as b = let _ = b = 42 in Some 42;; *)
-(* let (Some a) as b = let _ = b = None in Some 42;; *)
-let Some a | Some a = Some 42;;
-let x,y as r = 1,2 ;;
-let ((x, y) as r) = (1, 2);;
-
-type top = Top of (int * int);;
-
-match Top (1,2) with Top min as t -> ();;
-
-match Top (1,2) with Top (min,max) as t -> ();;
-
-(* let Some 'a' .. 'b' = Some 'b';; *)
-
-let rec f x y = ();;
-
-fun x y -> ();;
-
-fun (x, y) -> ();;
-
-function x, y -> ();;
-
-let rec next line pos0 = () in ();;
-
-(* fun Some None None None -> ();; *)
-(* fun x, y -> ();; |+ syntax error +| *)
-
diff --git a/camlp4/test/fixtures/bug_escaping_quot.ml b/camlp4/test/fixtures/bug_escaping_quot.ml
deleted file mode 100644 (file)
index 57e5ecd..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-open Camlp4.PreCast;;
-Camlp4_config.antiquotations := true;;
-let expand_my_quot_expr _loc _loc_name_opt quotation_contents =
-  Printf.eprintf "%S\n%!" quotation_contents;
-  <:expr< dummy >>
-;;
-Syntax.Quotation.add "my" Syntax.Quotation.DynAst.expr_tag expand_my_quot_expr;;
diff --git a/camlp4/test/fixtures/chars.ml b/camlp4/test/fixtures/chars.ml
deleted file mode 100644 (file)
index 3d307f0..0000000
+++ /dev/null
@@ -1 +0,0 @@
-'"'
diff --git a/camlp4/test/fixtures/class_expr_quot.ml b/camlp4/test/fixtures/class_expr_quot.ml
deleted file mode 100644 (file)
index f37e976..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-<:class_expr< a >>;
-<:class_expr< A.a B.b >>;
-<:class_expr< a [ t ] >>;
-<:class_expr< virtual a >>;
-<:class_expr< virtual $a$ >>;
-<:class_expr< virtual $lid:a$ >>;
-<:class_expr< virtual $lid:a$ [ 't ] >>;
-(* <:class_expr< virtual a [ t ] >>; *)
-<:class_expr< $opt:v$ a >>;
-<:class_expr< $opt:v$ a [ t ] >>;
-<:class_expr< $opt:v$ $a$ >>;
-<:class_expr< $opt:v$ $id:a$ >>;
-<:class_expr< $opt:v$ $a$ [ $t$ ] >>;
-(* <:class_expr< $opt:v$ a [ $t$ ] >>; *)
-(* <:class_expr< $opt:v$ a $opt:t$ >>; *)
-(* <:class_expr< $opt:v$ $a$ $opt:t$ >>; *)
-
-<:class_type< a >>;
-<:class_type< a [ t ] >>;
-<:class_type< virtual a >>;
-<:class_type< virtual $a$ >>;
-<:class_type< virtual $lid:a$ >>;
-<:class_type< virtual $lid:a$ [ 't ] >>;
-<:class_type< $opt:v$ a >>;
-<:class_type< $opt:v$ a [ t ] >>;
-<:class_type< $opt:v$ $a$ >>;
-<:class_type< $opt:v$ $a$ [ $t$ ] >>;
diff --git a/camlp4/test/fixtures/comments.ml b/camlp4/test/fixtures/comments.ml
deleted file mode 100644 (file)
index 5a64876..0000000
+++ /dev/null
@@ -1,66 +0,0 @@
-(** The first special comment of the file is the comment associated
-    to the whole module.*)
-
-(** The comment for function f *)
-let f x y = x + y
-
-(** This comment is not attached to any element since there is another
-    special comment just before the next element. *)
-
-(** Comment for exception My_exception, even with a simple comment
-    between the special comment and the exception.*)
-(* A simple comment. *)
-exception My_exception of (int -> int) * int
-
-(** Comment for type weather  *)
-type weather =
-| Rain of int (** The comment for constructor Rain *)
-| Sun (** The comment for constructor Sun *)
-
-(** The comment for type my_record *)
-type my_record = {
-    foo : int ;    (** Comment for field foo *)
-    bar : string ; (** Comment for field bar *)
-  }
-
-(** The comment for class my_class *)
-class my_class =
-    object
-      (** A comment to describe inheritance from cl *)
-      inherit cl
-
-      (** The comment for the instance variable tutu *)
-      val mutable tutu = "tutu"
-      (** The comment for toto *)
-      val toto = 1
-      val titi = "titi"
-      (** Comment for method toto *)
-      method toto = tutu ^ "!"
-      (** Comment for method m *)
-      method m (f : float) = 1
-    end
-
-(** The comment for class type my_class_type *)
-class type my_class_type =
-  object
-    (** The comment for the instance variable x. *)
-    val mutable x : int
-    (** The commend for method m. *)
-    method m : int -> int
-  end
-
-(** The comment for module Foo *)
-module Foo =
-  struct
-    (** The comment for x *)
-    let x = 42
-    (** A special comment in the class, but not associated to any element. *)
-  end
-
-(** The comment for module type my_module_type. *)
-module type MY_MODULE_TYPE =
-  sig
-    (* Comment for value x. *)
-    val x : int
-    (* ... *)
-  end
diff --git a/camlp4/test/fixtures/comments.mli b/camlp4/test/fixtures/comments.mli
deleted file mode 100644 (file)
index 33e1434..0000000
+++ /dev/null
@@ -1,106 +0,0 @@
-(** The first special comment of the file is the comment associated
-    with the whole module.*)
-
-
-(** Special comments can be placed between elements and are kept
-    by the OCamldoc tool, but are not associated to any element.
-    @-tags in these comments are ignored.*)
-
-(*******************************************************************)
-(** Comments like the one above, with more than two asterisks,
-    are ignored. *)
-
-(** The comment for function f. *)
-val f : int -> int -> int
-(** The continuation of the comment for function f. *)
-
-(** Comment for exception My_exception, even with a simple comment
-    between the special comment and the exception.*)
-(* Hello, I'm a simple comment :-) *)
-exception My_exception of (int -> int) * int
-
-(** Comment for type weather  *)
-type weather =
-| Rain of int (** The comment for construtor Rain *)
-| Sun (** The comment for constructor Sun *)
-
-(** Comment for type weather2  *)
-type weather2 =
-| Rain of int (** The comment for construtor Rain *)
-| Sun (** The comment for constructor Sun *)
-(** I can continue the comment for type weather2 here
-  because there is already a comment associated to the last constructor.*)
-
-(** The comment for type my_record *)
-type my_record = {
-    foo : int ;    (** Comment for field foo *)
-    bar : string ; (** Comment for field bar *)
-  }
-  (** Continuation of comment for type my_record *)
-
-(** Comment for foo *)
-val foo : string
-(** This comment is associated to foo and not to bar. *)
-val bar : string
-(** This comment is assciated to bar. *)
-
-(** The comment for class my_class *)
-class my_class :
-  object
-    (** A comment to describe inheritance from cl *)
-    inherit cl
-
-    (** The comment for attribute tutu *)
-    val mutable tutu : string
-
-    (** The comment for attribute toto. *)
-    val toto : int
-
-    (** This comment is not attached to titi since
-        there is a blank line before titi, but is kept
-        as a comment in the class. *)
-
-    val titi : string
-
-    (** Comment for method toto *)
-    method toto : string
-
-    (** Comment for method m *)
-    method m : float -> int
-  end
-
-(** The comment for the class type my_class_type *)
-class type my_class_type =
-  object
-    (** The comment for variable x. *)
-    val mutable x : int
-
-    (** The commend for method m. *)
-    method m : int -> int
-end
-
-(** The comment for module Foo *)
-module Foo :
-  sig
-    (** The comment for x *)
-    val x : int
-
-    (** A special comment that is kept but not associated to any element *)
-  end
-
-(** The comment for module type my_module_type. *)
-module type MY_MODULE_TYPE =
-  sig
-    (** The comment for value x. *)
-    val x : int
-
-    (** The comment for module M. *)
-    module M :
-      sig
-        (** The comment for value y. *)
-        val y : int
-
-        (* ... *)
-      end
-
-  end
diff --git a/camlp4/test/fixtures/comments2.ml b/camlp4/test/fixtures/comments2.ml
deleted file mode 100644 (file)
index d99e851..0000000
+++ /dev/null
@@ -1,70 +0,0 @@
-(** The first special comment of the file is the comment associated
-    to the whole module.*)
-
-(** The comment for function f *)
-let f x y = x + y
-
-(** This comment is not attached to any element since there is another
-    special comment just before the next element. *)
-
-(** Comment for exception My_exception, even with a simple comment
-    between the special comment and the exception.*)
-(* A simple comment. *)
-exception My_exception of (int -> int) * int
-
-(** Comment for type weather  *)
-type weather =
-  (** The comment for constructor Rain *)
-| Rain of int
-  (** The comment for constructor Sun *)
-| Sun
-
-(** The comment for type my_record *)
-type my_record = {
-    (** Comment for field foo *)
-    foo : int ;
-    (** Comment for field bar *)
-    bar : string ;
-  }
-
-(** The comment for class my_class *)
-class my_class =
-    object
-      (** A comment to describe inheritance from cl *)
-      inherit cl
-
-      (** The comment for the instance variable tutu *)
-      val mutable tutu = "tutu"
-      (** The comment for toto *)
-      val toto = 1
-      val titi = "titi"
-      (** Comment for method toto *)
-      method toto = tutu ^ "!"
-      (** Comment for method m *)
-      method m (f : float) = 1
-    end
-
-(** The comment for class type my_class_type *)
-class type my_class_type =
-  object
-    (** The comment for the instance variable x. *)
-    val mutable x : int
-    (** The commend for method m. *)
-    method m : int -> int
-  end
-
-(** The comment for module Foo *)
-module Foo =
-  struct
-    (** The comment for x *)
-    let x = 42
-    (** A special comment in the class, but not associated to any element. *)
-  end
-
-(** The comment for module type my_module_type. *)
-module type MY_MODULE_TYPE =
-  sig
-    (* Comment for value x. *)
-    val x : int
-    (* ... *)
-  end
diff --git a/camlp4/test/fixtures/constant-parser.ml b/camlp4/test/fixtures/constant-parser.ml
deleted file mode 100644 (file)
index a91f54b..0000000
+++ /dev/null
@@ -1,90 +0,0 @@
-open Camlp4
-
-module Id = struct
-  let name = "Camlp4Parsers.LoadCamlp4Ast"
-  let version = Sys.ocaml_version
-end
-
-module Make (Ast : Camlp4.Sig.Camlp4Ast.S) = struct
-  module Ast = Ast
-  open Ast
-
-  let _loc = Loc.ghost
-
-  let parse_implem ?directive_handler:(_) _ _ =
-    let e =
-    Ast.ExApp (_loc,
-      Ast.ExApp (_loc,
-        Ast.ExId (_loc,
-          Ast.IdAcc (_loc, Ast.IdUid (_loc, "G"), Ast.IdLid (_loc, "extend"))),
-        Ast.ExTyc (_loc, Ast.ExId (_loc, Ast.IdLid (_loc, "expr")),
-          Ast.TyApp (_loc,
-            Ast.TyId (_loc,
-              Ast.IdAcc (_loc, Ast.IdUid (_loc, "G"),
-                Ast.IdAcc (_loc, Ast.IdUid (_loc, "Entry"),
-                  Ast.IdLid (_loc, "t")))),
-            Ast.TyQuo (_loc, "expr")))),
-      Ast.ExTup (_loc,
-        Ast.ExCom (_loc, Ast.ExId (_loc, Ast.IdUid (_loc, "None")),
-          Ast.ExApp (_loc,
-            Ast.ExApp (_loc, Ast.ExId (_loc, Ast.IdUid (_loc, "::")),
-              Ast.ExTup (_loc,
-                Ast.ExCom (_loc, Ast.ExId (_loc, Ast.IdUid (_loc, "None")),
-                  Ast.ExCom (_loc, Ast.ExId (_loc, Ast.IdUid (_loc, "None")),
-                    Ast.ExApp (_loc,
-                      Ast.ExApp (_loc, Ast.ExId (_loc, Ast.IdUid (_loc, "::")),
-                        Ast.ExTup (_loc,
-                          Ast.ExCom (_loc,
-                            Ast.ExApp (_loc,
-                              Ast.ExApp (_loc,
-                                Ast.ExId (_loc, Ast.IdUid (_loc, "::")),
-                                Ast.ExApp (_loc,
-                                  Ast.ExId (_loc,
-                                    Ast.IdAcc (_loc, Ast.IdUid (_loc, "G"),
-                                      Ast.IdUid (_loc, "Skeyword"))),
-                                  Ast.ExStr (_loc, "foo"))),
-                              Ast.ExId (_loc, Ast.IdUid (_loc, "[]"))),
-                            Ast.ExApp (_loc,
-                              Ast.ExId (_loc,
-                                Ast.IdAcc (_loc, Ast.IdUid (_loc, "G"),
-                                  Ast.IdAcc (_loc, Ast.IdUid (_loc, "Action"),
-                                    Ast.IdLid (_loc, "mk")))),
-                              Ast.ExFun (_loc,
-                                Ast.AsArr (_loc, Ast.PaAny _loc, Ast.ONone,
-                                  Ast.ExFun (_loc,
-                                    Ast.AsArr (_loc,
-                                      Ast.PaTyc (_loc,
-                                        Ast.PaId (_loc,
-                                          Ast.IdLid (_loc, "_loc")),
-                                        Ast.TyId (_loc,
-                                          Ast.IdAcc (_loc,
-                                            Ast.IdUid (_loc, "Loc"),
-                                            Ast.IdLid (_loc, "t")))),
-                                      Ast.ONone,
-                                      Ast.ExTyc (_loc,
-                                        Ast.ExApp (_loc,
-                                          Ast.ExApp (_loc,
-                                            Ast.ExId (_loc,
-                                              Ast.IdAcc (_loc,
-                                                Ast.IdUid (_loc, "Ast"),
-                                                Ast.IdUid (_loc, "ExId"))),
-                                            Ast.ExId (_loc,
-                                              Ast.IdLid (_loc, "_loc"))),
-                                          Ast.ExApp (_loc,
-                                            Ast.ExApp (_loc,
-                                              Ast.ExId (_loc,
-                                                Ast.IdAcc (_loc,
-                                                  Ast.IdUid (_loc, "Ast"),
-                                                  Ast.IdUid (_loc, "IdLid"))),
-                                              Ast.ExId (_loc,
-                                                Ast.IdLid (_loc, "_loc"))),
-                                            Ast.ExStr (_loc, "foo"))),
-                                        Ast.TyQuo (_loc, "expr")))))))))),
-                      Ast.ExId (_loc, Ast.IdUid (_loc, "[]"))))))),
-            Ast.ExId (_loc, Ast.IdUid (_loc, "[]"))))))
-    in Ast.StExp (_loc, e)
-  let parse_interf ?directive_handler:(_) _ _ = assert false;;
-
-end;;
-
-let module M = Camlp4.Register.OCamlParser(Id)(Make) in ()
diff --git a/camlp4/test/fixtures/curry-constr.ml b/camlp4/test/fixtures/curry-constr.ml
deleted file mode 100644 (file)
index 4443ece..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-type t = A of int
-type u = B of t
-let f = function B A x -> x
diff --git a/camlp4/test/fixtures/default_quotation.ml b/camlp4/test/fixtures/default_quotation.ml
deleted file mode 100644 (file)
index c640507..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-#default_quotation "expr";
-open Camlp4.PreCast;
-fun [ << $x$ - $y$ >> when x = y -> << 0 >>
-    | e -> e ];
diff --git a/camlp4/test/fixtures/exception-with-eqn-bug.ml b/camlp4/test/fixtures/exception-with-eqn-bug.ml
deleted file mode 100644 (file)
index b93c202..0000000
+++ /dev/null
@@ -1 +0,0 @@
-exception Foo of string = Bar
diff --git a/camlp4/test/fixtures/external.ml b/camlp4/test/fixtures/external.ml
deleted file mode 100644 (file)
index 9ee32bb..0000000
+++ /dev/null
@@ -1 +0,0 @@
-external f : 'a -> 'b = "%identity";
diff --git a/camlp4/test/fixtures/fun.ml b/camlp4/test/fixtures/fun.ml
deleted file mode 100644 (file)
index 6c3264d..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-value f = fun [];
-value f = fun [ [] -> fun [ 4 -> () ] ];
-value f = fun [];
-value f = fun [];
-value f = fun [];
-value f = g x y;
-value f = (g x) y;
diff --git a/camlp4/test/fixtures/functor-perf.ml b/camlp4/test/fixtures/functor-perf.ml
deleted file mode 100644 (file)
index 3e55acb..0000000
+++ /dev/null
@@ -1,2019 +0,0 @@
-module type S = sig
-(* <%- for i in 0 .. 1000 do -%>
-  val f<%= i %> : int -> int -> int
-<%- end -%>                            *)
-  val f0 : int -> int -> int
-  val f1 : int -> int -> int
-  val f2 : int -> int -> int
-  val f3 : int -> int -> int
-  val f4 : int -> int -> int
-  val f5 : int -> int -> int
-  val f6 : int -> int -> int
-  val f7 : int -> int -> int
-  val f8 : int -> int -> int
-  val f9 : int -> int -> int
-  val f10 : int -> int -> int
-  val f11 : int -> int -> int
-  val f12 : int -> int -> int
-  val f13 : int -> int -> int
-  val f14 : int -> int -> int
-  val f15 : int -> int -> int
-  val f16 : int -> int -> int
-  val f17 : int -> int -> int
-  val f18 : int -> int -> int
-  val f19 : int -> int -> int
-  val f20 : int -> int -> int
-  val f21 : int -> int -> int
-  val f22 : int -> int -> int
-  val f23 : int -> int -> int
-  val f24 : int -> int -> int
-  val f25 : int -> int -> int
-  val f26 : int -> int -> int
-  val f27 : int -> int -> int
-  val f28 : int -> int -> int
-  val f29 : int -> int -> int
-  val f30 : int -> int -> int
-  val f31 : int -> int -> int
-  val f32 : int -> int -> int
-  val f33 : int -> int -> int
-  val f34 : int -> int -> int
-  val f35 : int -> int -> int
-  val f36 : int -> int -> int
-  val f37 : int -> int -> int
-  val f38 : int -> int -> int
-  val f39 : int -> int -> int
-  val f40 : int -> int -> int
-  val f41 : int -> int -> int
-  val f42 : int -> int -> int
-  val f43 : int -> int -> int
-  val f44 : int -> int -> int
-  val f45 : int -> int -> int
-  val f46 : int -> int -> int
-  val f47 : int -> int -> int
-  val f48 : int -> int -> int
-  val f49 : int -> int -> int
-  val f50 : int -> int -> int
-  val f51 : int -> int -> int
-  val f52 : int -> int -> int
-  val f53 : int -> int -> int
-  val f54 : int -> int -> int
-  val f55 : int -> int -> int
-  val f56 : int -> int -> int
-  val f57 : int -> int -> int
-  val f58 : int -> int -> int
-  val f59 : int -> int -> int
-  val f60 : int -> int -> int
-  val f61 : int -> int -> int
-  val f62 : int -> int -> int
-  val f63 : int -> int -> int
-  val f64 : int -> int -> int
-  val f65 : int -> int -> int
-  val f66 : int -> int -> int
-  val f67 : int -> int -> int
-  val f68 : int -> int -> int
-  val f69 : int -> int -> int
-  val f70 : int -> int -> int
-  val f71 : int -> int -> int
-  val f72 : int -> int -> int
-  val f73 : int -> int -> int
-  val f74 : int -> int -> int
-  val f75 : int -> int -> int
-  val f76 : int -> int -> int
-  val f77 : int -> int -> int
-  val f78 : int -> int -> int
-  val f79 : int -> int -> int
-  val f80 : int -> int -> int
-  val f81 : int -> int -> int
-  val f82 : int -> int -> int
-  val f83 : int -> int -> int
-  val f84 : int -> int -> int
-  val f85 : int -> int -> int
-  val f86 : int -> int -> int
-  val f87 : int -> int -> int
-  val f88 : int -> int -> int
-  val f89 : int -> int -> int
-  val f90 : int -> int -> int
-  val f91 : int -> int -> int
-  val f92 : int -> int -> int
-  val f93 : int -> int -> int
-  val f94 : int -> int -> int
-  val f95 : int -> int -> int
-  val f96 : int -> int -> int
-  val f97 : int -> int -> int
-  val f98 : int -> int -> int
-  val f99 : int -> int -> int
-  val f100 : int -> int -> int
-  val f101 : int -> int -> int
-  val f102 : int -> int -> int
-  val f103 : int -> int -> int
-  val f104 : int -> int -> int
-  val f105 : int -> int -> int
-  val f106 : int -> int -> int
-  val f107 : int -> int -> int
-  val f108 : int -> int -> int
-  val f109 : int -> int -> int
-  val f110 : int -> int -> int
-  val f111 : int -> int -> int
-  val f112 : int -> int -> int
-  val f113 : int -> int -> int
-  val f114 : int -> int -> int
-  val f115 : int -> int -> int
-  val f116 : int -> int -> int
-  val f117 : int -> int -> int
-  val f118 : int -> int -> int
-  val f119 : int -> int -> int
-  val f120 : int -> int -> int
-  val f121 : int -> int -> int
-  val f122 : int -> int -> int
-  val f123 : int -> int -> int
-  val f124 : int -> int -> int
-  val f125 : int -> int -> int
-  val f126 : int -> int -> int
-  val f127 : int -> int -> int
-  val f128 : int -> int -> int
-  val f129 : int -> int -> int
-  val f130 : int -> int -> int
-  val f131 : int -> int -> int
-  val f132 : int -> int -> int
-  val f133 : int -> int -> int
-  val f134 : int -> int -> int
-  val f135 : int -> int -> int
-  val f136 : int -> int -> int
-  val f137 : int -> int -> int
-  val f138 : int -> int -> int
-  val f139 : int -> int -> int
-  val f140 : int -> int -> int
-  val f141 : int -> int -> int
-  val f142 : int -> int -> int
-  val f143 : int -> int -> int
-  val f144 : int -> int -> int
-  val f145 : int -> int -> int
-  val f146 : int -> int -> int
-  val f147 : int -> int -> int
-  val f148 : int -> int -> int
-  val f149 : int -> int -> int
-  val f150 : int -> int -> int
-  val f151 : int -> int -> int
-  val f152 : int -> int -> int
-  val f153 : int -> int -> int
-  val f154 : int -> int -> int
-  val f155 : int -> int -> int
-  val f156 : int -> int -> int
-  val f157 : int -> int -> int
-  val f158 : int -> int -> int
-  val f159 : int -> int -> int
-  val f160 : int -> int -> int
-  val f161 : int -> int -> int
-  val f162 : int -> int -> int
-  val f163 : int -> int -> int
-  val f164 : int -> int -> int
-  val f165 : int -> int -> int
-  val f166 : int -> int -> int
-  val f167 : int -> int -> int
-  val f168 : int -> int -> int
-  val f169 : int -> int -> int
-  val f170 : int -> int -> int
-  val f171 : int -> int -> int
-  val f172 : int -> int -> int
-  val f173 : int -> int -> int
-  val f174 : int -> int -> int
-  val f175 : int -> int -> int
-  val f176 : int -> int -> int
-  val f177 : int -> int -> int
-  val f178 : int -> int -> int
-  val f179 : int -> int -> int
-  val f180 : int -> int -> int
-  val f181 : int -> int -> int
-  val f182 : int -> int -> int
-  val f183 : int -> int -> int
-  val f184 : int -> int -> int
-  val f185 : int -> int -> int
-  val f186 : int -> int -> int
-  val f187 : int -> int -> int
-  val f188 : int -> int -> int
-  val f189 : int -> int -> int
-  val f190 : int -> int -> int
-  val f191 : int -> int -> int
-  val f192 : int -> int -> int
-  val f193 : int -> int -> int
-  val f194 : int -> int -> int
-  val f195 : int -> int -> int
-  val f196 : int -> int -> int
-  val f197 : int -> int -> int
-  val f198 : int -> int -> int
-  val f199 : int -> int -> int
-  val f200 : int -> int -> int
-  val f201 : int -> int -> int
-  val f202 : int -> int -> int
-  val f203 : int -> int -> int
-  val f204 : int -> int -> int
-  val f205 : int -> int -> int
-  val f206 : int -> int -> int
-  val f207 : int -> int -> int
-  val f208 : int -> int -> int
-  val f209 : int -> int -> int
-  val f210 : int -> int -> int
-  val f211 : int -> int -> int
-  val f212 : int -> int -> int
-  val f213 : int -> int -> int
-  val f214 : int -> int -> int
-  val f215 : int -> int -> int
-  val f216 : int -> int -> int
-  val f217 : int -> int -> int
-  val f218 : int -> int -> int
-  val f219 : int -> int -> int
-  val f220 : int -> int -> int
-  val f221 : int -> int -> int
-  val f222 : int -> int -> int
-  val f223 : int -> int -> int
-  val f224 : int -> int -> int
-  val f225 : int -> int -> int
-  val f226 : int -> int -> int
-  val f227 : int -> int -> int
-  val f228 : int -> int -> int
-  val f229 : int -> int -> int
-  val f230 : int -> int -> int
-  val f231 : int -> int -> int
-  val f232 : int -> int -> int
-  val f233 : int -> int -> int
-  val f234 : int -> int -> int
-  val f235 : int -> int -> int
-  val f236 : int -> int -> int
-  val f237 : int -> int -> int
-  val f238 : int -> int -> int
-  val f239 : int -> int -> int
-  val f240 : int -> int -> int
-  val f241 : int -> int -> int
-  val f242 : int -> int -> int
-  val f243 : int -> int -> int
-  val f244 : int -> int -> int
-  val f245 : int -> int -> int
-  val f246 : int -> int -> int
-  val f247 : int -> int -> int
-  val f248 : int -> int -> int
-  val f249 : int -> int -> int
-  val f250 : int -> int -> int
-  val f251 : int -> int -> int
-  val f252 : int -> int -> int
-  val f253 : int -> int -> int
-  val f254 : int -> int -> int
-  val f255 : int -> int -> int
-  val f256 : int -> int -> int
-  val f257 : int -> int -> int
-  val f258 : int -> int -> int
-  val f259 : int -> int -> int
-  val f260 : int -> int -> int
-  val f261 : int -> int -> int
-  val f262 : int -> int -> int
-  val f263 : int -> int -> int
-  val f264 : int -> int -> int
-  val f265 : int -> int -> int
-  val f266 : int -> int -> int
-  val f267 : int -> int -> int
-  val f268 : int -> int -> int
-  val f269 : int -> int -> int
-  val f270 : int -> int -> int
-  val f271 : int -> int -> int
-  val f272 : int -> int -> int
-  val f273 : int -> int -> int
-  val f274 : int -> int -> int
-  val f275 : int -> int -> int
-  val f276 : int -> int -> int
-  val f277 : int -> int -> int
-  val f278 : int -> int -> int
-  val f279 : int -> int -> int
-  val f280 : int -> int -> int
-  val f281 : int -> int -> int
-  val f282 : int -> int -> int
-  val f283 : int -> int -> int
-  val f284 : int -> int -> int
-  val f285 : int -> int -> int
-  val f286 : int -> int -> int
-  val f287 : int -> int -> int
-  val f288 : int -> int -> int
-  val f289 : int -> int -> int
-  val f290 : int -> int -> int
-  val f291 : int -> int -> int
-  val f292 : int -> int -> int
-  val f293 : int -> int -> int
-  val f294 : int -> int -> int
-  val f295 : int -> int -> int
-  val f296 : int -> int -> int
-  val f297 : int -> int -> int
-  val f298 : int -> int -> int
-  val f299 : int -> int -> int
-  val f300 : int -> int -> int
-  val f301 : int -> int -> int
-  val f302 : int -> int -> int
-  val f303 : int -> int -> int
-  val f304 : int -> int -> int
-  val f305 : int -> int -> int
-  val f306 : int -> int -> int
-  val f307 : int -> int -> int
-  val f308 : int -> int -> int
-  val f309 : int -> int -> int
-  val f310 : int -> int -> int
-  val f311 : int -> int -> int
-  val f312 : int -> int -> int
-  val f313 : int -> int -> int
-  val f314 : int -> int -> int
-  val f315 : int -> int -> int
-  val f316 : int -> int -> int
-  val f317 : int -> int -> int
-  val f318 : int -> int -> int
-  val f319 : int -> int -> int
-  val f320 : int -> int -> int
-  val f321 : int -> int -> int
-  val f322 : int -> int -> int
-  val f323 : int -> int -> int
-  val f324 : int -> int -> int
-  val f325 : int -> int -> int
-  val f326 : int -> int -> int
-  val f327 : int -> int -> int
-  val f328 : int -> int -> int
-  val f329 : int -> int -> int
-  val f330 : int -> int -> int
-  val f331 : int -> int -> int
-  val f332 : int -> int -> int
-  val f333 : int -> int -> int
-  val f334 : int -> int -> int
-  val f335 : int -> int -> int
-  val f336 : int -> int -> int
-  val f337 : int -> int -> int
-  val f338 : int -> int -> int
-  val f339 : int -> int -> int
-  val f340 : int -> int -> int
-  val f341 : int -> int -> int
-  val f342 : int -> int -> int
-  val f343 : int -> int -> int
-  val f344 : int -> int -> int
-  val f345 : int -> int -> int
-  val f346 : int -> int -> int
-  val f347 : int -> int -> int
-  val f348 : int -> int -> int
-  val f349 : int -> int -> int
-  val f350 : int -> int -> int
-  val f351 : int -> int -> int
-  val f352 : int -> int -> int
-  val f353 : int -> int -> int
-  val f354 : int -> int -> int
-  val f355 : int -> int -> int
-  val f356 : int -> int -> int
-  val f357 : int -> int -> int
-  val f358 : int -> int -> int
-  val f359 : int -> int -> int
-  val f360 : int -> int -> int
-  val f361 : int -> int -> int
-  val f362 : int -> int -> int
-  val f363 : int -> int -> int
-  val f364 : int -> int -> int
-  val f365 : int -> int -> int
-  val f366 : int -> int -> int
-  val f367 : int -> int -> int
-  val f368 : int -> int -> int
-  val f369 : int -> int -> int
-  val f370 : int -> int -> int
-  val f371 : int -> int -> int
-  val f372 : int -> int -> int
-  val f373 : int -> int -> int
-  val f374 : int -> int -> int
-  val f375 : int -> int -> int
-  val f376 : int -> int -> int
-  val f377 : int -> int -> int
-  val f378 : int -> int -> int
-  val f379 : int -> int -> int
-  val f380 : int -> int -> int
-  val f381 : int -> int -> int
-  val f382 : int -> int -> int
-  val f383 : int -> int -> int
-  val f384 : int -> int -> int
-  val f385 : int -> int -> int
-  val f386 : int -> int -> int
-  val f387 : int -> int -> int
-  val f388 : int -> int -> int
-  val f389 : int -> int -> int
-  val f390 : int -> int -> int
-  val f391 : int -> int -> int
-  val f392 : int -> int -> int
-  val f393 : int -> int -> int
-  val f394 : int -> int -> int
-  val f395 : int -> int -> int
-  val f396 : int -> int -> int
-  val f397 : int -> int -> int
-  val f398 : int -> int -> int
-  val f399 : int -> int -> int
-  val f400 : int -> int -> int
-  val f401 : int -> int -> int
-  val f402 : int -> int -> int
-  val f403 : int -> int -> int
-  val f404 : int -> int -> int
-  val f405 : int -> int -> int
-  val f406 : int -> int -> int
-  val f407 : int -> int -> int
-  val f408 : int -> int -> int
-  val f409 : int -> int -> int
-  val f410 : int -> int -> int
-  val f411 : int -> int -> int
-  val f412 : int -> int -> int
-  val f413 : int -> int -> int
-  val f414 : int -> int -> int
-  val f415 : int -> int -> int
-  val f416 : int -> int -> int
-  val f417 : int -> int -> int
-  val f418 : int -> int -> int
-  val f419 : int -> int -> int
-  val f420 : int -> int -> int
-  val f421 : int -> int -> int
-  val f422 : int -> int -> int
-  val f423 : int -> int -> int
-  val f424 : int -> int -> int
-  val f425 : int -> int -> int
-  val f426 : int -> int -> int
-  val f427 : int -> int -> int
-  val f428 : int -> int -> int
-  val f429 : int -> int -> int
-  val f430 : int -> int -> int
-  val f431 : int -> int -> int
-  val f432 : int -> int -> int
-  val f433 : int -> int -> int
-  val f434 : int -> int -> int
-  val f435 : int -> int -> int
-  val f436 : int -> int -> int
-  val f437 : int -> int -> int
-  val f438 : int -> int -> int
-  val f439 : int -> int -> int
-  val f440 : int -> int -> int
-  val f441 : int -> int -> int
-  val f442 : int -> int -> int
-  val f443 : int -> int -> int
-  val f444 : int -> int -> int
-  val f445 : int -> int -> int
-  val f446 : int -> int -> int
-  val f447 : int -> int -> int
-  val f448 : int -> int -> int
-  val f449 : int -> int -> int
-  val f450 : int -> int -> int
-  val f451 : int -> int -> int
-  val f452 : int -> int -> int
-  val f453 : int -> int -> int
-  val f454 : int -> int -> int
-  val f455 : int -> int -> int
-  val f456 : int -> int -> int
-  val f457 : int -> int -> int
-  val f458 : int -> int -> int
-  val f459 : int -> int -> int
-  val f460 : int -> int -> int
-  val f461 : int -> int -> int
-  val f462 : int -> int -> int
-  val f463 : int -> int -> int
-  val f464 : int -> int -> int
-  val f465 : int -> int -> int
-  val f466 : int -> int -> int
-  val f467 : int -> int -> int
-  val f468 : int -> int -> int
-  val f469 : int -> int -> int
-  val f470 : int -> int -> int
-  val f471 : int -> int -> int
-  val f472 : int -> int -> int
-  val f473 : int -> int -> int
-  val f474 : int -> int -> int
-  val f475 : int -> int -> int
-  val f476 : int -> int -> int
-  val f477 : int -> int -> int
-  val f478 : int -> int -> int
-  val f479 : int -> int -> int
-  val f480 : int -> int -> int
-  val f481 : int -> int -> int
-  val f482 : int -> int -> int
-  val f483 : int -> int -> int
-  val f484 : int -> int -> int
-  val f485 : int -> int -> int
-  val f486 : int -> int -> int
-  val f487 : int -> int -> int
-  val f488 : int -> int -> int
-  val f489 : int -> int -> int
-  val f490 : int -> int -> int
-  val f491 : int -> int -> int
-  val f492 : int -> int -> int
-  val f493 : int -> int -> int
-  val f494 : int -> int -> int
-  val f495 : int -> int -> int
-  val f496 : int -> int -> int
-  val f497 : int -> int -> int
-  val f498 : int -> int -> int
-  val f499 : int -> int -> int
-  val f500 : int -> int -> int
-  val f501 : int -> int -> int
-  val f502 : int -> int -> int
-  val f503 : int -> int -> int
-  val f504 : int -> int -> int
-  val f505 : int -> int -> int
-  val f506 : int -> int -> int
-  val f507 : int -> int -> int
-  val f508 : int -> int -> int
-  val f509 : int -> int -> int
-  val f510 : int -> int -> int
-  val f511 : int -> int -> int
-  val f512 : int -> int -> int
-  val f513 : int -> int -> int
-  val f514 : int -> int -> int
-  val f515 : int -> int -> int
-  val f516 : int -> int -> int
-  val f517 : int -> int -> int
-  val f518 : int -> int -> int
-  val f519 : int -> int -> int
-  val f520 : int -> int -> int
-  val f521 : int -> int -> int
-  val f522 : int -> int -> int
-  val f523 : int -> int -> int
-  val f524 : int -> int -> int
-  val f525 : int -> int -> int
-  val f526 : int -> int -> int
-  val f527 : int -> int -> int
-  val f528 : int -> int -> int
-  val f529 : int -> int -> int
-  val f530 : int -> int -> int
-  val f531 : int -> int -> int
-  val f532 : int -> int -> int
-  val f533 : int -> int -> int
-  val f534 : int -> int -> int
-  val f535 : int -> int -> int
-  val f536 : int -> int -> int
-  val f537 : int -> int -> int
-  val f538 : int -> int -> int
-  val f539 : int -> int -> int
-  val f540 : int -> int -> int
-  val f541 : int -> int -> int
-  val f542 : int -> int -> int
-  val f543 : int -> int -> int
-  val f544 : int -> int -> int
-  val f545 : int -> int -> int
-  val f546 : int -> int -> int
-  val f547 : int -> int -> int
-  val f548 : int -> int -> int
-  val f549 : int -> int -> int
-  val f550 : int -> int -> int
-  val f551 : int -> int -> int
-  val f552 : int -> int -> int
-  val f553 : int -> int -> int
-  val f554 : int -> int -> int
-  val f555 : int -> int -> int
-  val f556 : int -> int -> int
-  val f557 : int -> int -> int
-  val f558 : int -> int -> int
-  val f559 : int -> int -> int
-  val f560 : int -> int -> int
-  val f561 : int -> int -> int
-  val f562 : int -> int -> int
-  val f563 : int -> int -> int
-  val f564 : int -> int -> int
-  val f565 : int -> int -> int
-  val f566 : int -> int -> int
-  val f567 : int -> int -> int
-  val f568 : int -> int -> int
-  val f569 : int -> int -> int
-  val f570 : int -> int -> int
-  val f571 : int -> int -> int
-  val f572 : int -> int -> int
-  val f573 : int -> int -> int
-  val f574 : int -> int -> int
-  val f575 : int -> int -> int
-  val f576 : int -> int -> int
-  val f577 : int -> int -> int
-  val f578 : int -> int -> int
-  val f579 : int -> int -> int
-  val f580 : int -> int -> int
-  val f581 : int -> int -> int
-  val f582 : int -> int -> int
-  val f583 : int -> int -> int
-  val f584 : int -> int -> int
-  val f585 : int -> int -> int
-  val f586 : int -> int -> int
-  val f587 : int -> int -> int
-  val f588 : int -> int -> int
-  val f589 : int -> int -> int
-  val f590 : int -> int -> int
-  val f591 : int -> int -> int
-  val f592 : int -> int -> int
-  val f593 : int -> int -> int
-  val f594 : int -> int -> int
-  val f595 : int -> int -> int
-  val f596 : int -> int -> int
-  val f597 : int -> int -> int
-  val f598 : int -> int -> int
-  val f599 : int -> int -> int
-  val f600 : int -> int -> int
-  val f601 : int -> int -> int
-  val f602 : int -> int -> int
-  val f603 : int -> int -> int
-  val f604 : int -> int -> int
-  val f605 : int -> int -> int
-  val f606 : int -> int -> int
-  val f607 : int -> int -> int
-  val f608 : int -> int -> int
-  val f609 : int -> int -> int
-  val f610 : int -> int -> int
-  val f611 : int -> int -> int
-  val f612 : int -> int -> int
-  val f613 : int -> int -> int
-  val f614 : int -> int -> int
-  val f615 : int -> int -> int
-  val f616 : int -> int -> int
-  val f617 : int -> int -> int
-  val f618 : int -> int -> int
-  val f619 : int -> int -> int
-  val f620 : int -> int -> int
-  val f621 : int -> int -> int
-  val f622 : int -> int -> int
-  val f623 : int -> int -> int
-  val f624 : int -> int -> int
-  val f625 : int -> int -> int
-  val f626 : int -> int -> int
-  val f627 : int -> int -> int
-  val f628 : int -> int -> int
-  val f629 : int -> int -> int
-  val f630 : int -> int -> int
-  val f631 : int -> int -> int
-  val f632 : int -> int -> int
-  val f633 : int -> int -> int
-  val f634 : int -> int -> int
-  val f635 : int -> int -> int
-  val f636 : int -> int -> int
-  val f637 : int -> int -> int
-  val f638 : int -> int -> int
-  val f639 : int -> int -> int
-  val f640 : int -> int -> int
-  val f641 : int -> int -> int
-  val f642 : int -> int -> int
-  val f643 : int -> int -> int
-  val f644 : int -> int -> int
-  val f645 : int -> int -> int
-  val f646 : int -> int -> int
-  val f647 : int -> int -> int
-  val f648 : int -> int -> int
-  val f649 : int -> int -> int
-  val f650 : int -> int -> int
-  val f651 : int -> int -> int
-  val f652 : int -> int -> int
-  val f653 : int -> int -> int
-  val f654 : int -> int -> int
-  val f655 : int -> int -> int
-  val f656 : int -> int -> int
-  val f657 : int -> int -> int
-  val f658 : int -> int -> int
-  val f659 : int -> int -> int
-  val f660 : int -> int -> int
-  val f661 : int -> int -> int
-  val f662 : int -> int -> int
-  val f663 : int -> int -> int
-  val f664 : int -> int -> int
-  val f665 : int -> int -> int
-  val f666 : int -> int -> int
-  val f667 : int -> int -> int
-  val f668 : int -> int -> int
-  val f669 : int -> int -> int
-  val f670 : int -> int -> int
-  val f671 : int -> int -> int
-  val f672 : int -> int -> int
-  val f673 : int -> int -> int
-  val f674 : int -> int -> int
-  val f675 : int -> int -> int
-  val f676 : int -> int -> int
-  val f677 : int -> int -> int
-  val f678 : int -> int -> int
-  val f679 : int -> int -> int
-  val f680 : int -> int -> int
-  val f681 : int -> int -> int
-  val f682 : int -> int -> int
-  val f683 : int -> int -> int
-  val f684 : int -> int -> int
-  val f685 : int -> int -> int
-  val f686 : int -> int -> int
-  val f687 : int -> int -> int
-  val f688 : int -> int -> int
-  val f689 : int -> int -> int
-  val f690 : int -> int -> int
-  val f691 : int -> int -> int
-  val f692 : int -> int -> int
-  val f693 : int -> int -> int
-  val f694 : int -> int -> int
-  val f695 : int -> int -> int
-  val f696 : int -> int -> int
-  val f697 : int -> int -> int
-  val f698 : int -> int -> int
-  val f699 : int -> int -> int
-  val f700 : int -> int -> int
-  val f701 : int -> int -> int
-  val f702 : int -> int -> int
-  val f703 : int -> int -> int
-  val f704 : int -> int -> int
-  val f705 : int -> int -> int
-  val f706 : int -> int -> int
-  val f707 : int -> int -> int
-  val f708 : int -> int -> int
-  val f709 : int -> int -> int
-  val f710 : int -> int -> int
-  val f711 : int -> int -> int
-  val f712 : int -> int -> int
-  val f713 : int -> int -> int
-  val f714 : int -> int -> int
-  val f715 : int -> int -> int
-  val f716 : int -> int -> int
-  val f717 : int -> int -> int
-  val f718 : int -> int -> int
-  val f719 : int -> int -> int
-  val f720 : int -> int -> int
-  val f721 : int -> int -> int
-  val f722 : int -> int -> int
-  val f723 : int -> int -> int
-  val f724 : int -> int -> int
-  val f725 : int -> int -> int
-  val f726 : int -> int -> int
-  val f727 : int -> int -> int
-  val f728 : int -> int -> int
-  val f729 : int -> int -> int
-  val f730 : int -> int -> int
-  val f731 : int -> int -> int
-  val f732 : int -> int -> int
-  val f733 : int -> int -> int
-  val f734 : int -> int -> int
-  val f735 : int -> int -> int
-  val f736 : int -> int -> int
-  val f737 : int -> int -> int
-  val f738 : int -> int -> int
-  val f739 : int -> int -> int
-  val f740 : int -> int -> int
-  val f741 : int -> int -> int
-  val f742 : int -> int -> int
-  val f743 : int -> int -> int
-  val f744 : int -> int -> int
-  val f745 : int -> int -> int
-  val f746 : int -> int -> int
-  val f747 : int -> int -> int
-  val f748 : int -> int -> int
-  val f749 : int -> int -> int
-  val f750 : int -> int -> int
-  val f751 : int -> int -> int
-  val f752 : int -> int -> int
-  val f753 : int -> int -> int
-  val f754 : int -> int -> int
-  val f755 : int -> int -> int
-  val f756 : int -> int -> int
-  val f757 : int -> int -> int
-  val f758 : int -> int -> int
-  val f759 : int -> int -> int
-  val f760 : int -> int -> int
-  val f761 : int -> int -> int
-  val f762 : int -> int -> int
-  val f763 : int -> int -> int
-  val f764 : int -> int -> int
-  val f765 : int -> int -> int
-  val f766 : int -> int -> int
-  val f767 : int -> int -> int
-  val f768 : int -> int -> int
-  val f769 : int -> int -> int
-  val f770 : int -> int -> int
-  val f771 : int -> int -> int
-  val f772 : int -> int -> int
-  val f773 : int -> int -> int
-  val f774 : int -> int -> int
-  val f775 : int -> int -> int
-  val f776 : int -> int -> int
-  val f777 : int -> int -> int
-  val f778 : int -> int -> int
-  val f779 : int -> int -> int
-  val f780 : int -> int -> int
-  val f781 : int -> int -> int
-  val f782 : int -> int -> int
-  val f783 : int -> int -> int
-  val f784 : int -> int -> int
-  val f785 : int -> int -> int
-  val f786 : int -> int -> int
-  val f787 : int -> int -> int
-  val f788 : int -> int -> int
-  val f789 : int -> int -> int
-  val f790 : int -> int -> int
-  val f791 : int -> int -> int
-  val f792 : int -> int -> int
-  val f793 : int -> int -> int
-  val f794 : int -> int -> int
-  val f795 : int -> int -> int
-  val f796 : int -> int -> int
-  val f797 : int -> int -> int
-  val f798 : int -> int -> int
-  val f799 : int -> int -> int
-  val f800 : int -> int -> int
-  val f801 : int -> int -> int
-  val f802 : int -> int -> int
-  val f803 : int -> int -> int
-  val f804 : int -> int -> int
-  val f805 : int -> int -> int
-  val f806 : int -> int -> int
-  val f807 : int -> int -> int
-  val f808 : int -> int -> int
-  val f809 : int -> int -> int
-  val f810 : int -> int -> int
-  val f811 : int -> int -> int
-  val f812 : int -> int -> int
-  val f813 : int -> int -> int
-  val f814 : int -> int -> int
-  val f815 : int -> int -> int
-  val f816 : int -> int -> int
-  val f817 : int -> int -> int
-  val f818 : int -> int -> int
-  val f819 : int -> int -> int
-  val f820 : int -> int -> int
-  val f821 : int -> int -> int
-  val f822 : int -> int -> int
-  val f823 : int -> int -> int
-  val f824 : int -> int -> int
-  val f825 : int -> int -> int
-  val f826 : int -> int -> int
-  val f827 : int -> int -> int
-  val f828 : int -> int -> int
-  val f829 : int -> int -> int
-  val f830 : int -> int -> int
-  val f831 : int -> int -> int
-  val f832 : int -> int -> int
-  val f833 : int -> int -> int
-  val f834 : int -> int -> int
-  val f835 : int -> int -> int
-  val f836 : int -> int -> int
-  val f837 : int -> int -> int
-  val f838 : int -> int -> int
-  val f839 : int -> int -> int
-  val f840 : int -> int -> int
-  val f841 : int -> int -> int
-  val f842 : int -> int -> int
-  val f843 : int -> int -> int
-  val f844 : int -> int -> int
-  val f845 : int -> int -> int
-  val f846 : int -> int -> int
-  val f847 : int -> int -> int
-  val f848 : int -> int -> int
-  val f849 : int -> int -> int
-  val f850 : int -> int -> int
-  val f851 : int -> int -> int
-  val f852 : int -> int -> int
-  val f853 : int -> int -> int
-  val f854 : int -> int -> int
-  val f855 : int -> int -> int
-  val f856 : int -> int -> int
-  val f857 : int -> int -> int
-  val f858 : int -> int -> int
-  val f859 : int -> int -> int
-  val f860 : int -> int -> int
-  val f861 : int -> int -> int
-  val f862 : int -> int -> int
-  val f863 : int -> int -> int
-  val f864 : int -> int -> int
-  val f865 : int -> int -> int
-  val f866 : int -> int -> int
-  val f867 : int -> int -> int
-  val f868 : int -> int -> int
-  val f869 : int -> int -> int
-  val f870 : int -> int -> int
-  val f871 : int -> int -> int
-  val f872 : int -> int -> int
-  val f873 : int -> int -> int
-  val f874 : int -> int -> int
-  val f875 : int -> int -> int
-  val f876 : int -> int -> int
-  val f877 : int -> int -> int
-  val f878 : int -> int -> int
-  val f879 : int -> int -> int
-  val f880 : int -> int -> int
-  val f881 : int -> int -> int
-  val f882 : int -> int -> int
-  val f883 : int -> int -> int
-  val f884 : int -> int -> int
-  val f885 : int -> int -> int
-  val f886 : int -> int -> int
-  val f887 : int -> int -> int
-  val f888 : int -> int -> int
-  val f889 : int -> int -> int
-  val f890 : int -> int -> int
-  val f891 : int -> int -> int
-  val f892 : int -> int -> int
-  val f893 : int -> int -> int
-  val f894 : int -> int -> int
-  val f895 : int -> int -> int
-  val f896 : int -> int -> int
-  val f897 : int -> int -> int
-  val f898 : int -> int -> int
-  val f899 : int -> int -> int
-  val f900 : int -> int -> int
-  val f901 : int -> int -> int
-  val f902 : int -> int -> int
-  val f903 : int -> int -> int
-  val f904 : int -> int -> int
-  val f905 : int -> int -> int
-  val f906 : int -> int -> int
-  val f907 : int -> int -> int
-  val f908 : int -> int -> int
-  val f909 : int -> int -> int
-  val f910 : int -> int -> int
-  val f911 : int -> int -> int
-  val f912 : int -> int -> int
-  val f913 : int -> int -> int
-  val f914 : int -> int -> int
-  val f915 : int -> int -> int
-  val f916 : int -> int -> int
-  val f917 : int -> int -> int
-  val f918 : int -> int -> int
-  val f919 : int -> int -> int
-  val f920 : int -> int -> int
-  val f921 : int -> int -> int
-  val f922 : int -> int -> int
-  val f923 : int -> int -> int
-  val f924 : int -> int -> int
-  val f925 : int -> int -> int
-  val f926 : int -> int -> int
-  val f927 : int -> int -> int
-  val f928 : int -> int -> int
-  val f929 : int -> int -> int
-  val f930 : int -> int -> int
-  val f931 : int -> int -> int
-  val f932 : int -> int -> int
-  val f933 : int -> int -> int
-  val f934 : int -> int -> int
-  val f935 : int -> int -> int
-  val f936 : int -> int -> int
-  val f937 : int -> int -> int
-  val f938 : int -> int -> int
-  val f939 : int -> int -> int
-  val f940 : int -> int -> int
-  val f941 : int -> int -> int
-  val f942 : int -> int -> int
-  val f943 : int -> int -> int
-  val f944 : int -> int -> int
-  val f945 : int -> int -> int
-  val f946 : int -> int -> int
-  val f947 : int -> int -> int
-  val f948 : int -> int -> int
-  val f949 : int -> int -> int
-  val f950 : int -> int -> int
-  val f951 : int -> int -> int
-  val f952 : int -> int -> int
-  val f953 : int -> int -> int
-  val f954 : int -> int -> int
-  val f955 : int -> int -> int
-  val f956 : int -> int -> int
-  val f957 : int -> int -> int
-  val f958 : int -> int -> int
-  val f959 : int -> int -> int
-  val f960 : int -> int -> int
-  val f961 : int -> int -> int
-  val f962 : int -> int -> int
-  val f963 : int -> int -> int
-  val f964 : int -> int -> int
-  val f965 : int -> int -> int
-  val f966 : int -> int -> int
-  val f967 : int -> int -> int
-  val f968 : int -> int -> int
-  val f969 : int -> int -> int
-  val f970 : int -> int -> int
-  val f971 : int -> int -> int
-  val f972 : int -> int -> int
-  val f973 : int -> int -> int
-  val f974 : int -> int -> int
-  val f975 : int -> int -> int
-  val f976 : int -> int -> int
-  val f977 : int -> int -> int
-  val f978 : int -> int -> int
-  val f979 : int -> int -> int
-  val f980 : int -> int -> int
-  val f981 : int -> int -> int
-  val f982 : int -> int -> int
-  val f983 : int -> int -> int
-  val f984 : int -> int -> int
-  val f985 : int -> int -> int
-  val f986 : int -> int -> int
-  val f987 : int -> int -> int
-  val f988 : int -> int -> int
-  val f989 : int -> int -> int
-  val f990 : int -> int -> int
-  val f991 : int -> int -> int
-  val f992 : int -> int -> int
-  val f993 : int -> int -> int
-  val f994 : int -> int -> int
-  val f995 : int -> int -> int
-  val f996 : int -> int -> int
-  val f997 : int -> int -> int
-  val f998 : int -> int -> int
-  val f999 : int -> int -> int
-  val f1000 : int -> int -> int
-end
-
-module Make (M : S) = struct
-  include M
-end
-
-module M = struct
-(* <%- for i in 0 .. 1000 do -%>
-  let f<%= i %> = ( + )
-<%- end -%>                      *)
-  let f0 = ( + )
-  let f1 = ( + )
-  let f2 = ( + )
-  let f3 = ( + )
-  let f4 = ( + )
-  let f5 = ( + )
-  let f6 = ( + )
-  let f7 = ( + )
-  let f8 = ( + )
-  let f9 = ( + )
-  let f10 = ( + )
-  let f11 = ( + )
-  let f12 = ( + )
-  let f13 = ( + )
-  let f14 = ( + )
-  let f15 = ( + )
-  let f16 = ( + )
-  let f17 = ( + )
-  let f18 = ( + )
-  let f19 = ( + )
-  let f20 = ( + )
-  let f21 = ( + )
-  let f22 = ( + )
-  let f23 = ( + )
-  let f24 = ( + )
-  let f25 = ( + )
-  let f26 = ( + )
-  let f27 = ( + )
-  let f28 = ( + )
-  let f29 = ( + )
-  let f30 = ( + )
-  let f31 = ( + )
-  let f32 = ( + )
-  let f33 = ( + )
-  let f34 = ( + )
-  let f35 = ( + )
-  let f36 = ( + )
-  let f37 = ( + )
-  let f38 = ( + )
-  let f39 = ( + )
-  let f40 = ( + )
-  let f41 = ( + )
-  let f42 = ( + )
-  let f43 = ( + )
-  let f44 = ( + )
-  let f45 = ( + )
-  let f46 = ( + )
-  let f47 = ( + )
-  let f48 = ( + )
-  let f49 = ( + )
-  let f50 = ( + )
-  let f51 = ( + )
-  let f52 = ( + )
-  let f53 = ( + )
-  let f54 = ( + )
-  let f55 = ( + )
-  let f56 = ( + )
-  let f57 = ( + )
-  let f58 = ( + )
-  let f59 = ( + )
-  let f60 = ( + )
-  let f61 = ( + )
-  let f62 = ( + )
-  let f63 = ( + )
-  let f64 = ( + )
-  let f65 = ( + )
-  let f66 = ( + )
-  let f67 = ( + )
-  let f68 = ( + )
-  let f69 = ( + )
-  let f70 = ( + )
-  let f71 = ( + )
-  let f72 = ( + )
-  let f73 = ( + )
-  let f74 = ( + )
-  let f75 = ( + )
-  let f76 = ( + )
-  let f77 = ( + )
-  let f78 = ( + )
-  let f79 = ( + )
-  let f80 = ( + )
-  let f81 = ( + )
-  let f82 = ( + )
-  let f83 = ( + )
-  let f84 = ( + )
-  let f85 = ( + )
-  let f86 = ( + )
-  let f87 = ( + )
-  let f88 = ( + )
-  let f89 = ( + )
-  let f90 = ( + )
-  let f91 = ( + )
-  let f92 = ( + )
-  let f93 = ( + )
-  let f94 = ( + )
-  let f95 = ( + )
-  let f96 = ( + )
-  let f97 = ( + )
-  let f98 = ( + )
-  let f99 = ( + )
-  let f100 = ( + )
-  let f101 = ( + )
-  let f102 = ( + )
-  let f103 = ( + )
-  let f104 = ( + )
-  let f105 = ( + )
-  let f106 = ( + )
-  let f107 = ( + )
-  let f108 = ( + )
-  let f109 = ( + )
-  let f110 = ( + )
-  let f111 = ( + )
-  let f112 = ( + )
-  let f113 = ( + )
-  let f114 = ( + )
-  let f115 = ( + )
-  let f116 = ( + )
-  let f117 = ( + )
-  let f118 = ( + )
-  let f119 = ( + )
-  let f120 = ( + )
-  let f121 = ( + )
-  let f122 = ( + )
-  let f123 = ( + )
-  let f124 = ( + )
-  let f125 = ( + )
-  let f126 = ( + )
-  let f127 = ( + )
-  let f128 = ( + )
-  let f129 = ( + )
-  let f130 = ( + )
-  let f131 = ( + )
-  let f132 = ( + )
-  let f133 = ( + )
-  let f134 = ( + )
-  let f135 = ( + )
-  let f136 = ( + )
-  let f137 = ( + )
-  let f138 = ( + )
-  let f139 = ( + )
-  let f140 = ( + )
-  let f141 = ( + )
-  let f142 = ( + )
-  let f143 = ( + )
-  let f144 = ( + )
-  let f145 = ( + )
-  let f146 = ( + )
-  let f147 = ( + )
-  let f148 = ( + )
-  let f149 = ( + )
-  let f150 = ( + )
-  let f151 = ( + )
-  let f152 = ( + )
-  let f153 = ( + )
-  let f154 = ( + )
-  let f155 = ( + )
-  let f156 = ( + )
-  let f157 = ( + )
-  let f158 = ( + )
-  let f159 = ( + )
-  let f160 = ( + )
-  let f161 = ( + )
-  let f162 = ( + )
-  let f163 = ( + )
-  let f164 = ( + )
-  let f165 = ( + )
-  let f166 = ( + )
-  let f167 = ( + )
-  let f168 = ( + )
-  let f169 = ( + )
-  let f170 = ( + )
-  let f171 = ( + )
-  let f172 = ( + )
-  let f173 = ( + )
-  let f174 = ( + )
-  let f175 = ( + )
-  let f176 = ( + )
-  let f177 = ( + )
-  let f178 = ( + )
-  let f179 = ( + )
-  let f180 = ( + )
-  let f181 = ( + )
-  let f182 = ( + )
-  let f183 = ( + )
-  let f184 = ( + )
-  let f185 = ( + )
-  let f186 = ( + )
-  let f187 = ( + )
-  let f188 = ( + )
-  let f189 = ( + )
-  let f190 = ( + )
-  let f191 = ( + )
-  let f192 = ( + )
-  let f193 = ( + )
-  let f194 = ( + )
-  let f195 = ( + )
-  let f196 = ( + )
-  let f197 = ( + )
-  let f198 = ( + )
-  let f199 = ( + )
-  let f200 = ( + )
-  let f201 = ( + )
-  let f202 = ( + )
-  let f203 = ( + )
-  let f204 = ( + )
-  let f205 = ( + )
-  let f206 = ( + )
-  let f207 = ( + )
-  let f208 = ( + )
-  let f209 = ( + )
-  let f210 = ( + )
-  let f211 = ( + )
-  let f212 = ( + )
-  let f213 = ( + )
-  let f214 = ( + )
-  let f215 = ( + )
-  let f216 = ( + )
-  let f217 = ( + )
-  let f218 = ( + )
-  let f219 = ( + )
-  let f220 = ( + )
-  let f221 = ( + )
-  let f222 = ( + )
-  let f223 = ( + )
-  let f224 = ( + )
-  let f225 = ( + )
-  let f226 = ( + )
-  let f227 = ( + )
-  let f228 = ( + )
-  let f229 = ( + )
-  let f230 = ( + )
-  let f231 = ( + )
-  let f232 = ( + )
-  let f233 = ( + )
-  let f234 = ( + )
-  let f235 = ( + )
-  let f236 = ( + )
-  let f237 = ( + )
-  let f238 = ( + )
-  let f239 = ( + )
-  let f240 = ( + )
-  let f241 = ( + )
-  let f242 = ( + )
-  let f243 = ( + )
-  let f244 = ( + )
-  let f245 = ( + )
-  let f246 = ( + )
-  let f247 = ( + )
-  let f248 = ( + )
-  let f249 = ( + )
-  let f250 = ( + )
-  let f251 = ( + )
-  let f252 = ( + )
-  let f253 = ( + )
-  let f254 = ( + )
-  let f255 = ( + )
-  let f256 = ( + )
-  let f257 = ( + )
-  let f258 = ( + )
-  let f259 = ( + )
-  let f260 = ( + )
-  let f261 = ( + )
-  let f262 = ( + )
-  let f263 = ( + )
-  let f264 = ( + )
-  let f265 = ( + )
-  let f266 = ( + )
-  let f267 = ( + )
-  let f268 = ( + )
-  let f269 = ( + )
-  let f270 = ( + )
-  let f271 = ( + )
-  let f272 = ( + )
-  let f273 = ( + )
-  let f274 = ( + )
-  let f275 = ( + )
-  let f276 = ( + )
-  let f277 = ( + )
-  let f278 = ( + )
-  let f279 = ( + )
-  let f280 = ( + )
-  let f281 = ( + )
-  let f282 = ( + )
-  let f283 = ( + )
-  let f284 = ( + )
-  let f285 = ( + )
-  let f286 = ( + )
-  let f287 = ( + )
-  let f288 = ( + )
-  let f289 = ( + )
-  let f290 = ( + )
-  let f291 = ( + )
-  let f292 = ( + )
-  let f293 = ( + )
-  let f294 = ( + )
-  let f295 = ( + )
-  let f296 = ( + )
-  let f297 = ( + )
-  let f298 = ( + )
-  let f299 = ( + )
-  let f300 = ( + )
-  let f301 = ( + )
-  let f302 = ( + )
-  let f303 = ( + )
-  let f304 = ( + )
-  let f305 = ( + )
-  let f306 = ( + )
-  let f307 = ( + )
-  let f308 = ( + )
-  let f309 = ( + )
-  let f310 = ( + )
-  let f311 = ( + )
-  let f312 = ( + )
-  let f313 = ( + )
-  let f314 = ( + )
-  let f315 = ( + )
-  let f316 = ( + )
-  let f317 = ( + )
-  let f318 = ( + )
-  let f319 = ( + )
-  let f320 = ( + )
-  let f321 = ( + )
-  let f322 = ( + )
-  let f323 = ( + )
-  let f324 = ( + )
-  let f325 = ( + )
-  let f326 = ( + )
-  let f327 = ( + )
-  let f328 = ( + )
-  let f329 = ( + )
-  let f330 = ( + )
-  let f331 = ( + )
-  let f332 = ( + )
-  let f333 = ( + )
-  let f334 = ( + )
-  let f335 = ( + )
-  let f336 = ( + )
-  let f337 = ( + )
-  let f338 = ( + )
-  let f339 = ( + )
-  let f340 = ( + )
-  let f341 = ( + )
-  let f342 = ( + )
-  let f343 = ( + )
-  let f344 = ( + )
-  let f345 = ( + )
-  let f346 = ( + )
-  let f347 = ( + )
-  let f348 = ( + )
-  let f349 = ( + )
-  let f350 = ( + )
-  let f351 = ( + )
-  let f352 = ( + )
-  let f353 = ( + )
-  let f354 = ( + )
-  let f355 = ( + )
-  let f356 = ( + )
-  let f357 = ( + )
-  let f358 = ( + )
-  let f359 = ( + )
-  let f360 = ( + )
-  let f361 = ( + )
-  let f362 = ( + )
-  let f363 = ( + )
-  let f364 = ( + )
-  let f365 = ( + )
-  let f366 = ( + )
-  let f367 = ( + )
-  let f368 = ( + )
-  let f369 = ( + )
-  let f370 = ( + )
-  let f371 = ( + )
-  let f372 = ( + )
-  let f373 = ( + )
-  let f374 = ( + )
-  let f375 = ( + )
-  let f376 = ( + )
-  let f377 = ( + )
-  let f378 = ( + )
-  let f379 = ( + )
-  let f380 = ( + )
-  let f381 = ( + )
-  let f382 = ( + )
-  let f383 = ( + )
-  let f384 = ( + )
-  let f385 = ( + )
-  let f386 = ( + )
-  let f387 = ( + )
-  let f388 = ( + )
-  let f389 = ( + )
-  let f390 = ( + )
-  let f391 = ( + )
-  let f392 = ( + )
-  let f393 = ( + )
-  let f394 = ( + )
-  let f395 = ( + )
-  let f396 = ( + )
-  let f397 = ( + )
-  let f398 = ( + )
-  let f399 = ( + )
-  let f400 = ( + )
-  let f401 = ( + )
-  let f402 = ( + )
-  let f403 = ( + )
-  let f404 = ( + )
-  let f405 = ( + )
-  let f406 = ( + )
-  let f407 = ( + )
-  let f408 = ( + )
-  let f409 = ( + )
-  let f410 = ( + )
-  let f411 = ( + )
-  let f412 = ( + )
-  let f413 = ( + )
-  let f414 = ( + )
-  let f415 = ( + )
-  let f416 = ( + )
-  let f417 = ( + )
-  let f418 = ( + )
-  let f419 = ( + )
-  let f420 = ( + )
-  let f421 = ( + )
-  let f422 = ( + )
-  let f423 = ( + )
-  let f424 = ( + )
-  let f425 = ( + )
-  let f426 = ( + )
-  let f427 = ( + )
-  let f428 = ( + )
-  let f429 = ( + )
-  let f430 = ( + )
-  let f431 = ( + )
-  let f432 = ( + )
-  let f433 = ( + )
-  let f434 = ( + )
-  let f435 = ( + )
-  let f436 = ( + )
-  let f437 = ( + )
-  let f438 = ( + )
-  let f439 = ( + )
-  let f440 = ( + )
-  let f441 = ( + )
-  let f442 = ( + )
-  let f443 = ( + )
-  let f444 = ( + )
-  let f445 = ( + )
-  let f446 = ( + )
-  let f447 = ( + )
-  let f448 = ( + )
-  let f449 = ( + )
-  let f450 = ( + )
-  let f451 = ( + )
-  let f452 = ( + )
-  let f453 = ( + )
-  let f454 = ( + )
-  let f455 = ( + )
-  let f456 = ( + )
-  let f457 = ( + )
-  let f458 = ( + )
-  let f459 = ( + )
-  let f460 = ( + )
-  let f461 = ( + )
-  let f462 = ( + )
-  let f463 = ( + )
-  let f464 = ( + )
-  let f465 = ( + )
-  let f466 = ( + )
-  let f467 = ( + )
-  let f468 = ( + )
-  let f469 = ( + )
-  let f470 = ( + )
-  let f471 = ( + )
-  let f472 = ( + )
-  let f473 = ( + )
-  let f474 = ( + )
-  let f475 = ( + )
-  let f476 = ( + )
-  let f477 = ( + )
-  let f478 = ( + )
-  let f479 = ( + )
-  let f480 = ( + )
-  let f481 = ( + )
-  let f482 = ( + )
-  let f483 = ( + )
-  let f484 = ( + )
-  let f485 = ( + )
-  let f486 = ( + )
-  let f487 = ( + )
-  let f488 = ( + )
-  let f489 = ( + )
-  let f490 = ( + )
-  let f491 = ( + )
-  let f492 = ( + )
-  let f493 = ( + )
-  let f494 = ( + )
-  let f495 = ( + )
-  let f496 = ( + )
-  let f497 = ( + )
-  let f498 = ( + )
-  let f499 = ( + )
-  let f500 = ( + )
-  let f501 = ( + )
-  let f502 = ( + )
-  let f503 = ( + )
-  let f504 = ( + )
-  let f505 = ( + )
-  let f506 = ( + )
-  let f507 = ( + )
-  let f508 = ( + )
-  let f509 = ( + )
-  let f510 = ( + )
-  let f511 = ( + )
-  let f512 = ( + )
-  let f513 = ( + )
-  let f514 = ( + )
-  let f515 = ( + )
-  let f516 = ( + )
-  let f517 = ( + )
-  let f518 = ( + )
-  let f519 = ( + )
-  let f520 = ( + )
-  let f521 = ( + )
-  let f522 = ( + )
-  let f523 = ( + )
-  let f524 = ( + )
-  let f525 = ( + )
-  let f526 = ( + )
-  let f527 = ( + )
-  let f528 = ( + )
-  let f529 = ( + )
-  let f530 = ( + )
-  let f531 = ( + )
-  let f532 = ( + )
-  let f533 = ( + )
-  let f534 = ( + )
-  let f535 = ( + )
-  let f536 = ( + )
-  let f537 = ( + )
-  let f538 = ( + )
-  let f539 = ( + )
-  let f540 = ( + )
-  let f541 = ( + )
-  let f542 = ( + )
-  let f543 = ( + )
-  let f544 = ( + )
-  let f545 = ( + )
-  let f546 = ( + )
-  let f547 = ( + )
-  let f548 = ( + )
-  let f549 = ( + )
-  let f550 = ( + )
-  let f551 = ( + )
-  let f552 = ( + )
-  let f553 = ( + )
-  let f554 = ( + )
-  let f555 = ( + )
-  let f556 = ( + )
-  let f557 = ( + )
-  let f558 = ( + )
-  let f559 = ( + )
-  let f560 = ( + )
-  let f561 = ( + )
-  let f562 = ( + )
-  let f563 = ( + )
-  let f564 = ( + )
-  let f565 = ( + )
-  let f566 = ( + )
-  let f567 = ( + )
-  let f568 = ( + )
-  let f569 = ( + )
-  let f570 = ( + )
-  let f571 = ( + )
-  let f572 = ( + )
-  let f573 = ( + )
-  let f574 = ( + )
-  let f575 = ( + )
-  let f576 = ( + )
-  let f577 = ( + )
-  let f578 = ( + )
-  let f579 = ( + )
-  let f580 = ( + )
-  let f581 = ( + )
-  let f582 = ( + )
-  let f583 = ( + )
-  let f584 = ( + )
-  let f585 = ( + )
-  let f586 = ( + )
-  let f587 = ( + )
-  let f588 = ( + )
-  let f589 = ( + )
-  let f590 = ( + )
-  let f591 = ( + )
-  let f592 = ( + )
-  let f593 = ( + )
-  let f594 = ( + )
-  let f595 = ( + )
-  let f596 = ( + )
-  let f597 = ( + )
-  let f598 = ( + )
-  let f599 = ( + )
-  let f600 = ( + )
-  let f601 = ( + )
-  let f602 = ( + )
-  let f603 = ( + )
-  let f604 = ( + )
-  let f605 = ( + )
-  let f606 = ( + )
-  let f607 = ( + )
-  let f608 = ( + )
-  let f609 = ( + )
-  let f610 = ( + )
-  let f611 = ( + )
-  let f612 = ( + )
-  let f613 = ( + )
-  let f614 = ( + )
-  let f615 = ( + )
-  let f616 = ( + )
-  let f617 = ( + )
-  let f618 = ( + )
-  let f619 = ( + )
-  let f620 = ( + )
-  let f621 = ( + )
-  let f622 = ( + )
-  let f623 = ( + )
-  let f624 = ( + )
-  let f625 = ( + )
-  let f626 = ( + )
-  let f627 = ( + )
-  let f628 = ( + )
-  let f629 = ( + )
-  let f630 = ( + )
-  let f631 = ( + )
-  let f632 = ( + )
-  let f633 = ( + )
-  let f634 = ( + )
-  let f635 = ( + )
-  let f636 = ( + )
-  let f637 = ( + )
-  let f638 = ( + )
-  let f639 = ( + )
-  let f640 = ( + )
-  let f641 = ( + )
-  let f642 = ( + )
-  let f643 = ( + )
-  let f644 = ( + )
-  let f645 = ( + )
-  let f646 = ( + )
-  let f647 = ( + )
-  let f648 = ( + )
-  let f649 = ( + )
-  let f650 = ( + )
-  let f651 = ( + )
-  let f652 = ( + )
-  let f653 = ( + )
-  let f654 = ( + )
-  let f655 = ( + )
-  let f656 = ( + )
-  let f657 = ( + )
-  let f658 = ( + )
-  let f659 = ( + )
-  let f660 = ( + )
-  let f661 = ( + )
-  let f662 = ( + )
-  let f663 = ( + )
-  let f664 = ( + )
-  let f665 = ( + )
-  let f666 = ( + )
-  let f667 = ( + )
-  let f668 = ( + )
-  let f669 = ( + )
-  let f670 = ( + )
-  let f671 = ( + )
-  let f672 = ( + )
-  let f673 = ( + )
-  let f674 = ( + )
-  let f675 = ( + )
-  let f676 = ( + )
-  let f677 = ( + )
-  let f678 = ( + )
-  let f679 = ( + )
-  let f680 = ( + )
-  let f681 = ( + )
-  let f682 = ( + )
-  let f683 = ( + )
-  let f684 = ( + )
-  let f685 = ( + )
-  let f686 = ( + )
-  let f687 = ( + )
-  let f688 = ( + )
-  let f689 = ( + )
-  let f690 = ( + )
-  let f691 = ( + )
-  let f692 = ( + )
-  let f693 = ( + )
-  let f694 = ( + )
-  let f695 = ( + )
-  let f696 = ( + )
-  let f697 = ( + )
-  let f698 = ( + )
-  let f699 = ( + )
-  let f700 = ( + )
-  let f701 = ( + )
-  let f702 = ( + )
-  let f703 = ( + )
-  let f704 = ( + )
-  let f705 = ( + )
-  let f706 = ( + )
-  let f707 = ( + )
-  let f708 = ( + )
-  let f709 = ( + )
-  let f710 = ( + )
-  let f711 = ( + )
-  let f712 = ( + )
-  let f713 = ( + )
-  let f714 = ( + )
-  let f715 = ( + )
-  let f716 = ( + )
-  let f717 = ( + )
-  let f718 = ( + )
-  let f719 = ( + )
-  let f720 = ( + )
-  let f721 = ( + )
-  let f722 = ( + )
-  let f723 = ( + )
-  let f724 = ( + )
-  let f725 = ( + )
-  let f726 = ( + )
-  let f727 = ( + )
-  let f728 = ( + )
-  let f729 = ( + )
-  let f730 = ( + )
-  let f731 = ( + )
-  let f732 = ( + )
-  let f733 = ( + )
-  let f734 = ( + )
-  let f735 = ( + )
-  let f736 = ( + )
-  let f737 = ( + )
-  let f738 = ( + )
-  let f739 = ( + )
-  let f740 = ( + )
-  let f741 = ( + )
-  let f742 = ( + )
-  let f743 = ( + )
-  let f744 = ( + )
-  let f745 = ( + )
-  let f746 = ( + )
-  let f747 = ( + )
-  let f748 = ( + )
-  let f749 = ( + )
-  let f750 = ( + )
-  let f751 = ( + )
-  let f752 = ( + )
-  let f753 = ( + )
-  let f754 = ( + )
-  let f755 = ( + )
-  let f756 = ( + )
-  let f757 = ( + )
-  let f758 = ( + )
-  let f759 = ( + )
-  let f760 = ( + )
-  let f761 = ( + )
-  let f762 = ( + )
-  let f763 = ( + )
-  let f764 = ( + )
-  let f765 = ( + )
-  let f766 = ( + )
-  let f767 = ( + )
-  let f768 = ( + )
-  let f769 = ( + )
-  let f770 = ( + )
-  let f771 = ( + )
-  let f772 = ( + )
-  let f773 = ( + )
-  let f774 = ( + )
-  let f775 = ( + )
-  let f776 = ( + )
-  let f777 = ( + )
-  let f778 = ( + )
-  let f779 = ( + )
-  let f780 = ( + )
-  let f781 = ( + )
-  let f782 = ( + )
-  let f783 = ( + )
-  let f784 = ( + )
-  let f785 = ( + )
-  let f786 = ( + )
-  let f787 = ( + )
-  let f788 = ( + )
-  let f789 = ( + )
-  let f790 = ( + )
-  let f791 = ( + )
-  let f792 = ( + )
-  let f793 = ( + )
-  let f794 = ( + )
-  let f795 = ( + )
-  let f796 = ( + )
-  let f797 = ( + )
-  let f798 = ( + )
-  let f799 = ( + )
-  let f800 = ( + )
-  let f801 = ( + )
-  let f802 = ( + )
-  let f803 = ( + )
-  let f804 = ( + )
-  let f805 = ( + )
-  let f806 = ( + )
-  let f807 = ( + )
-  let f808 = ( + )
-  let f809 = ( + )
-  let f810 = ( + )
-  let f811 = ( + )
-  let f812 = ( + )
-  let f813 = ( + )
-  let f814 = ( + )
-  let f815 = ( + )
-  let f816 = ( + )
-  let f817 = ( + )
-  let f818 = ( + )
-  let f819 = ( + )
-  let f820 = ( + )
-  let f821 = ( + )
-  let f822 = ( + )
-  let f823 = ( + )
-  let f824 = ( + )
-  let f825 = ( + )
-  let f826 = ( + )
-  let f827 = ( + )
-  let f828 = ( + )
-  let f829 = ( + )
-  let f830 = ( + )
-  let f831 = ( + )
-  let f832 = ( + )
-  let f833 = ( + )
-  let f834 = ( + )
-  let f835 = ( + )
-  let f836 = ( + )
-  let f837 = ( + )
-  let f838 = ( + )
-  let f839 = ( + )
-  let f840 = ( + )
-  let f841 = ( + )
-  let f842 = ( + )
-  let f843 = ( + )
-  let f844 = ( + )
-  let f845 = ( + )
-  let f846 = ( + )
-  let f847 = ( + )
-  let f848 = ( + )
-  let f849 = ( + )
-  let f850 = ( + )
-  let f851 = ( + )
-  let f852 = ( + )
-  let f853 = ( + )
-  let f854 = ( + )
-  let f855 = ( + )
-  let f856 = ( + )
-  let f857 = ( + )
-  let f858 = ( + )
-  let f859 = ( + )
-  let f860 = ( + )
-  let f861 = ( + )
-  let f862 = ( + )
-  let f863 = ( + )
-  let f864 = ( + )
-  let f865 = ( + )
-  let f866 = ( + )
-  let f867 = ( + )
-  let f868 = ( + )
-  let f869 = ( + )
-  let f870 = ( + )
-  let f871 = ( + )
-  let f872 = ( + )
-  let f873 = ( + )
-  let f874 = ( + )
-  let f875 = ( + )
-  let f876 = ( + )
-  let f877 = ( + )
-  let f878 = ( + )
-  let f879 = ( + )
-  let f880 = ( + )
-  let f881 = ( + )
-  let f882 = ( + )
-  let f883 = ( + )
-  let f884 = ( + )
-  let f885 = ( + )
-  let f886 = ( + )
-  let f887 = ( + )
-  let f888 = ( + )
-  let f889 = ( + )
-  let f890 = ( + )
-  let f891 = ( + )
-  let f892 = ( + )
-  let f893 = ( + )
-  let f894 = ( + )
-  let f895 = ( + )
-  let f896 = ( + )
-  let f897 = ( + )
-  let f898 = ( + )
-  let f899 = ( + )
-  let f900 = ( + )
-  let f901 = ( + )
-  let f902 = ( + )
-  let f903 = ( + )
-  let f904 = ( + )
-  let f905 = ( + )
-  let f906 = ( + )
-  let f907 = ( + )
-  let f908 = ( + )
-  let f909 = ( + )
-  let f910 = ( + )
-  let f911 = ( + )
-  let f912 = ( + )
-  let f913 = ( + )
-  let f914 = ( + )
-  let f915 = ( + )
-  let f916 = ( + )
-  let f917 = ( + )
-  let f918 = ( + )
-  let f919 = ( + )
-  let f920 = ( + )
-  let f921 = ( + )
-  let f922 = ( + )
-  let f923 = ( + )
-  let f924 = ( + )
-  let f925 = ( + )
-  let f926 = ( + )
-  let f927 = ( + )
-  let f928 = ( + )
-  let f929 = ( + )
-  let f930 = ( + )
-  let f931 = ( + )
-  let f932 = ( + )
-  let f933 = ( + )
-  let f934 = ( + )
-  let f935 = ( + )
-  let f936 = ( + )
-  let f937 = ( + )
-  let f938 = ( + )
-  let f939 = ( + )
-  let f940 = ( + )
-  let f941 = ( + )
-  let f942 = ( + )
-  let f943 = ( + )
-  let f944 = ( + )
-  let f945 = ( + )
-  let f946 = ( + )
-  let f947 = ( + )
-  let f948 = ( + )
-  let f949 = ( + )
-  let f950 = ( + )
-  let f951 = ( + )
-  let f952 = ( + )
-  let f953 = ( + )
-  let f954 = ( + )
-  let f955 = ( + )
-  let f956 = ( + )
-  let f957 = ( + )
-  let f958 = ( + )
-  let f959 = ( + )
-  let f960 = ( + )
-  let f961 = ( + )
-  let f962 = ( + )
-  let f963 = ( + )
-  let f964 = ( + )
-  let f965 = ( + )
-  let f966 = ( + )
-  let f967 = ( + )
-  let f968 = ( + )
-  let f969 = ( + )
-  let f970 = ( + )
-  let f971 = ( + )
-  let f972 = ( + )
-  let f973 = ( + )
-  let f974 = ( + )
-  let f975 = ( + )
-  let f976 = ( + )
-  let f977 = ( + )
-  let f978 = ( + )
-  let f979 = ( + )
-  let f980 = ( + )
-  let f981 = ( + )
-  let f982 = ( + )
-  let f983 = ( + )
-  let f984 = ( + )
-  let f985 = ( + )
-  let f986 = ( + )
-  let f987 = ( + )
-  let f988 = ( + )
-  let f989 = ( + )
-  let f990 = ( + )
-  let f991 = ( + )
-  let f992 = ( + )
-  let f993 = ( + )
-  let f994 = ( + )
-  let f995 = ( + )
-  let f996 = ( + )
-  let f997 = ( + )
-  let f998 = ( + )
-  let f999 = ( + )
-  let f1000 = ( + )
-end
-
-module X = Make(Make(Make(M)))
diff --git a/camlp4/test/fixtures/functor-perf2.gen.ml b/camlp4/test/fixtures/functor-perf2.gen.ml
deleted file mode 100644 (file)
index 730a1bf..0000000
+++ /dev/null
@@ -1,3029 +0,0 @@
-
-
-module type S = sig
-  type t0
-  type t1
-  type t2
-  type t3
-  type t4
-  type t5
-  type t6
-  type t7
-  type t8
-  type t9
-  type t10
-  type t11
-  type t12
-  type t13
-  type t14
-  type t15
-  type t16
-  type t17
-  type t18
-  type t19
-  type t20
-  type t21
-  type t22
-  type t23
-  type t24
-  type t25
-  type t26
-  type t27
-  type t28
-  type t29
-  type t30
-  type t31
-  type t32
-  type t33
-  type t34
-  type t35
-  type t36
-  type t37
-  type t38
-  type t39
-  type t40
-  type t41
-  type t42
-  type t43
-  type t44
-  type t45
-  type t46
-  type t47
-  type t48
-  type t49
-  type t50
-  type t51
-  type t52
-  type t53
-  type t54
-  type t55
-  type t56
-  type t57
-  type t58
-  type t59
-  type t60
-  type t61
-  type t62
-  type t63
-  type t64
-  type t65
-  type t66
-  type t67
-  type t68
-  type t69
-  type t70
-  type t71
-  type t72
-  type t73
-  type t74
-  type t75
-  type t76
-  type t77
-  type t78
-  type t79
-  type t80
-  type t81
-  type t82
-  type t83
-  type t84
-  type t85
-  type t86
-  type t87
-  type t88
-  type t89
-  type t90
-  type t91
-  type t92
-  type t93
-  type t94
-  type t95
-  type t96
-  type t97
-  type t98
-  type t99
-  type t100
-  type t101
-  type t102
-  type t103
-  type t104
-  type t105
-  type t106
-  type t107
-  type t108
-  type t109
-  type t110
-  type t111
-  type t112
-  type t113
-  type t114
-  type t115
-  type t116
-  type t117
-  type t118
-  type t119
-  type t120
-  type t121
-  type t122
-  type t123
-  type t124
-  type t125
-  type t126
-  type t127
-  type t128
-  type t129
-  type t130
-  type t131
-  type t132
-  type t133
-  type t134
-  type t135
-  type t136
-  type t137
-  type t138
-  type t139
-  type t140
-  type t141
-  type t142
-  type t143
-  type t144
-  type t145
-  type t146
-  type t147
-  type t148
-  type t149
-  type t150
-  type t151
-  type t152
-  type t153
-  type t154
-  type t155
-  type t156
-  type t157
-  type t158
-  type t159
-  type t160
-  type t161
-  type t162
-  type t163
-  type t164
-  type t165
-  type t166
-  type t167
-  type t168
-  type t169
-  type t170
-  type t171
-  type t172
-  type t173
-  type t174
-  type t175
-  type t176
-  type t177
-  type t178
-  type t179
-  type t180
-  type t181
-  type t182
-  type t183
-  type t184
-  type t185
-  type t186
-  type t187
-  type t188
-  type t189
-  type t190
-  type t191
-  type t192
-  type t193
-  type t194
-  type t195
-  type t196
-  type t197
-  type t198
-  type t199
-  type t200
-  type t201
-  type t202
-  type t203
-  type t204
-  type t205
-  type t206
-  type t207
-  type t208
-  type t209
-  type t210
-  type t211
-  type t212
-  type t213
-  type t214
-  type t215
-  type t216
-  type t217
-  type t218
-  type t219
-  type t220
-  type t221
-  type t222
-  type t223
-  type t224
-  type t225
-  type t226
-  type t227
-  type t228
-  type t229
-  type t230
-  type t231
-  type t232
-  type t233
-  type t234
-  type t235
-  type t236
-  type t237
-  type t238
-  type t239
-  type t240
-  type t241
-  type t242
-  type t243
-  type t244
-  type t245
-  type t246
-  type t247
-  type t248
-  type t249
-  type t250
-  type t251
-  type t252
-  type t253
-  type t254
-  type t255
-  type t256
-  type t257
-  type t258
-  type t259
-  type t260
-  type t261
-  type t262
-  type t263
-  type t264
-  type t265
-  type t266
-  type t267
-  type t268
-  type t269
-  type t270
-  type t271
-  type t272
-  type t273
-  type t274
-  type t275
-  type t276
-  type t277
-  type t278
-  type t279
-  type t280
-  type t281
-  type t282
-  type t283
-  type t284
-  type t285
-  type t286
-  type t287
-  type t288
-  type t289
-  type t290
-  type t291
-  type t292
-  type t293
-  type t294
-  type t295
-  type t296
-  type t297
-  type t298
-  type t299
-  type t300
-  type t301
-  type t302
-  type t303
-  type t304
-  type t305
-  type t306
-  type t307
-  type t308
-  type t309
-  type t310
-  type t311
-  type t312
-  type t313
-  type t314
-  type t315
-  type t316
-  type t317
-  type t318
-  type t319
-  type t320
-  type t321
-  type t322
-  type t323
-  type t324
-  type t325
-  type t326
-  type t327
-  type t328
-  type t329
-  type t330
-  type t331
-  type t332
-  type t333
-  type t334
-  type t335
-  type t336
-  type t337
-  type t338
-  type t339
-  type t340
-  type t341
-  type t342
-  type t343
-  type t344
-  type t345
-  type t346
-  type t347
-  type t348
-  type t349
-  type t350
-  type t351
-  type t352
-  type t353
-  type t354
-  type t355
-  type t356
-  type t357
-  type t358
-  type t359
-  type t360
-  type t361
-  type t362
-  type t363
-  type t364
-  type t365
-  type t366
-  type t367
-  type t368
-  type t369
-  type t370
-  type t371
-  type t372
-  type t373
-  type t374
-  type t375
-  type t376
-  type t377
-  type t378
-  type t379
-  type t380
-  type t381
-  type t382
-  type t383
-  type t384
-  type t385
-  type t386
-  type t387
-  type t388
-  type t389
-  type t390
-  type t391
-  type t392
-  type t393
-  type t394
-  type t395
-  type t396
-  type t397
-  type t398
-  type t399
-  type t400
-  type t401
-  type t402
-  type t403
-  type t404
-  type t405
-  type t406
-  type t407
-  type t408
-  type t409
-  type t410
-  type t411
-  type t412
-  type t413
-  type t414
-  type t415
-  type t416
-  type t417
-  type t418
-  type t419
-  type t420
-  type t421
-  type t422
-  type t423
-  type t424
-  type t425
-  type t426
-  type t427
-  type t428
-  type t429
-  type t430
-  type t431
-  type t432
-  type t433
-  type t434
-  type t435
-  type t436
-  type t437
-  type t438
-  type t439
-  type t440
-  type t441
-  type t442
-  type t443
-  type t444
-  type t445
-  type t446
-  type t447
-  type t448
-  type t449
-  type t450
-  type t451
-  type t452
-  type t453
-  type t454
-  type t455
-  type t456
-  type t457
-  type t458
-  type t459
-  type t460
-  type t461
-  type t462
-  type t463
-  type t464
-  type t465
-  type t466
-  type t467
-  type t468
-  type t469
-  type t470
-  type t471
-  type t472
-  type t473
-  type t474
-  type t475
-  type t476
-  type t477
-  type t478
-  type t479
-  type t480
-  type t481
-  type t482
-  type t483
-  type t484
-  type t485
-  type t486
-  type t487
-  type t488
-  type t489
-  type t490
-  type t491
-  type t492
-  type t493
-  type t494
-  type t495
-  type t496
-  type t497
-  type t498
-  type t499
-  type t500
-  type t501
-  type t502
-  type t503
-  type t504
-  type t505
-  type t506
-  type t507
-  type t508
-  type t509
-  type t510
-  type t511
-  type t512
-  type t513
-  type t514
-  type t515
-  type t516
-  type t517
-  type t518
-  type t519
-  type t520
-  type t521
-  type t522
-  type t523
-  type t524
-  type t525
-  type t526
-  type t527
-  type t528
-  type t529
-  type t530
-  type t531
-  type t532
-  type t533
-  type t534
-  type t535
-  type t536
-  type t537
-  type t538
-  type t539
-  type t540
-  type t541
-  type t542
-  type t543
-  type t544
-  type t545
-  type t546
-  type t547
-  type t548
-  type t549
-  type t550
-  type t551
-  type t552
-  type t553
-  type t554
-  type t555
-  type t556
-  type t557
-  type t558
-  type t559
-  type t560
-  type t561
-  type t562
-  type t563
-  type t564
-  type t565
-  type t566
-  type t567
-  type t568
-  type t569
-  type t570
-  type t571
-  type t572
-  type t573
-  type t574
-  type t575
-  type t576
-  type t577
-  type t578
-  type t579
-  type t580
-  type t581
-  type t582
-  type t583
-  type t584
-  type t585
-  type t586
-  type t587
-  type t588
-  type t589
-  type t590
-  type t591
-  type t592
-  type t593
-  type t594
-  type t595
-  type t596
-  type t597
-  type t598
-  type t599
-  type t600
-  type t601
-  type t602
-  type t603
-  type t604
-  type t605
-  type t606
-  type t607
-  type t608
-  type t609
-  type t610
-  type t611
-  type t612
-  type t613
-  type t614
-  type t615
-  type t616
-  type t617
-  type t618
-  type t619
-  type t620
-  type t621
-  type t622
-  type t623
-  type t624
-  type t625
-  type t626
-  type t627
-  type t628
-  type t629
-  type t630
-  type t631
-  type t632
-  type t633
-  type t634
-  type t635
-  type t636
-  type t637
-  type t638
-  type t639
-  type t640
-  type t641
-  type t642
-  type t643
-  type t644
-  type t645
-  type t646
-  type t647
-  type t648
-  type t649
-  type t650
-  type t651
-  type t652
-  type t653
-  type t654
-  type t655
-  type t656
-  type t657
-  type t658
-  type t659
-  type t660
-  type t661
-  type t662
-  type t663
-  type t664
-  type t665
-  type t666
-  type t667
-  type t668
-  type t669
-  type t670
-  type t671
-  type t672
-  type t673
-  type t674
-  type t675
-  type t676
-  type t677
-  type t678
-  type t679
-  type t680
-  type t681
-  type t682
-  type t683
-  type t684
-  type t685
-  type t686
-  type t687
-  type t688
-  type t689
-  type t690
-  type t691
-  type t692
-  type t693
-  type t694
-  type t695
-  type t696
-  type t697
-  type t698
-  type t699
-  type t700
-  type t701
-  type t702
-  type t703
-  type t704
-  type t705
-  type t706
-  type t707
-  type t708
-  type t709
-  type t710
-  type t711
-  type t712
-  type t713
-  type t714
-  type t715
-  type t716
-  type t717
-  type t718
-  type t719
-  type t720
-  type t721
-  type t722
-  type t723
-  type t724
-  type t725
-  type t726
-  type t727
-  type t728
-  type t729
-  type t730
-  type t731
-  type t732
-  type t733
-  type t734
-  type t735
-  type t736
-  type t737
-  type t738
-  type t739
-  type t740
-  type t741
-  type t742
-  type t743
-  type t744
-  type t745
-  type t746
-  type t747
-  type t748
-  type t749
-  type t750
-  type t751
-  type t752
-  type t753
-  type t754
-  type t755
-  type t756
-  type t757
-  type t758
-  type t759
-  type t760
-  type t761
-  type t762
-  type t763
-  type t764
-  type t765
-  type t766
-  type t767
-  type t768
-  type t769
-  type t770
-  type t771
-  type t772
-  type t773
-  type t774
-  type t775
-  type t776
-  type t777
-  type t778
-  type t779
-  type t780
-  type t781
-  type t782
-  type t783
-  type t784
-  type t785
-  type t786
-  type t787
-  type t788
-  type t789
-  type t790
-  type t791
-  type t792
-  type t793
-  type t794
-  type t795
-  type t796
-  type t797
-  type t798
-  type t799
-  type t800
-  type t801
-  type t802
-  type t803
-  type t804
-  type t805
-  type t806
-  type t807
-  type t808
-  type t809
-  type t810
-  type t811
-  type t812
-  type t813
-  type t814
-  type t815
-  type t816
-  type t817
-  type t818
-  type t819
-  type t820
-  type t821
-  type t822
-  type t823
-  type t824
-  type t825
-  type t826
-  type t827
-  type t828
-  type t829
-  type t830
-  type t831
-  type t832
-  type t833
-  type t834
-  type t835
-  type t836
-  type t837
-  type t838
-  type t839
-  type t840
-  type t841
-  type t842
-  type t843
-  type t844
-  type t845
-  type t846
-  type t847
-  type t848
-  type t849
-  type t850
-  type t851
-  type t852
-  type t853
-  type t854
-  type t855
-  type t856
-  type t857
-  type t858
-  type t859
-  type t860
-  type t861
-  type t862
-  type t863
-  type t864
-  type t865
-  type t866
-  type t867
-  type t868
-  type t869
-  type t870
-  type t871
-  type t872
-  type t873
-  type t874
-  type t875
-  type t876
-  type t877
-  type t878
-  type t879
-  type t880
-  type t881
-  type t882
-  type t883
-  type t884
-  type t885
-  type t886
-  type t887
-  type t888
-  type t889
-  type t890
-  type t891
-  type t892
-  type t893
-  type t894
-  type t895
-  type t896
-  type t897
-  type t898
-  type t899
-  type t900
-  type t901
-  type t902
-  type t903
-  type t904
-  type t905
-  type t906
-  type t907
-  type t908
-  type t909
-  type t910
-  type t911
-  type t912
-  type t913
-  type t914
-  type t915
-  type t916
-  type t917
-  type t918
-  type t919
-  type t920
-  type t921
-  type t922
-  type t923
-  type t924
-  type t925
-  type t926
-  type t927
-  type t928
-  type t929
-  type t930
-  type t931
-  type t932
-  type t933
-  type t934
-  type t935
-  type t936
-  type t937
-  type t938
-  type t939
-  type t940
-  type t941
-  type t942
-  type t943
-  type t944
-  type t945
-  type t946
-  type t947
-  type t948
-  type t949
-  type t950
-  type t951
-  type t952
-  type t953
-  type t954
-  type t955
-  type t956
-  type t957
-  type t958
-  type t959
-  type t960
-  type t961
-  type t962
-  type t963
-  type t964
-  type t965
-  type t966
-  type t967
-  type t968
-  type t969
-  type t970
-  type t971
-  type t972
-  type t973
-  type t974
-  type t975
-  type t976
-  type t977
-  type t978
-  type t979
-  type t980
-  type t981
-  type t982
-  type t983
-  type t984
-  type t985
-  type t986
-  type t987
-  type t988
-  type t989
-  type t990
-  type t991
-  type t992
-  type t993
-  type t994
-  type t995
-  type t996
-  type t997
-  type t998
-  type t999
-  type t1000
-end
-
-module Make (M : S)
-: S with type t0 = M.t0
-     and type t1 = M.t1
-     and type t2 = M.t2
-     and type t3 = M.t3
-     and type t4 = M.t4
-     and type t5 = M.t5
-     and type t6 = M.t6
-     and type t7 = M.t7
-     and type t8 = M.t8
-     and type t9 = M.t9
-     and type t10 = M.t10
-     and type t11 = M.t11
-     and type t12 = M.t12
-     and type t13 = M.t13
-     and type t14 = M.t14
-     and type t15 = M.t15
-     and type t16 = M.t16
-     and type t17 = M.t17
-     and type t18 = M.t18
-     and type t19 = M.t19
-     and type t20 = M.t20
-     and type t21 = M.t21
-     and type t22 = M.t22
-     and type t23 = M.t23
-     and type t24 = M.t24
-     and type t25 = M.t25
-     and type t26 = M.t26
-     and type t27 = M.t27
-     and type t28 = M.t28
-     and type t29 = M.t29
-     and type t30 = M.t30
-     and type t31 = M.t31
-     and type t32 = M.t32
-     and type t33 = M.t33
-     and type t34 = M.t34
-     and type t35 = M.t35
-     and type t36 = M.t36
-     and type t37 = M.t37
-     and type t38 = M.t38
-     and type t39 = M.t39
-     and type t40 = M.t40
-     and type t41 = M.t41
-     and type t42 = M.t42
-     and type t43 = M.t43
-     and type t44 = M.t44
-     and type t45 = M.t45
-     and type t46 = M.t46
-     and type t47 = M.t47
-     and type t48 = M.t48
-     and type t49 = M.t49
-     and type t50 = M.t50
-     and type t51 = M.t51
-     and type t52 = M.t52
-     and type t53 = M.t53
-     and type t54 = M.t54
-     and type t55 = M.t55
-     and type t56 = M.t56
-     and type t57 = M.t57
-     and type t58 = M.t58
-     and type t59 = M.t59
-     and type t60 = M.t60
-     and type t61 = M.t61
-     and type t62 = M.t62
-     and type t63 = M.t63
-     and type t64 = M.t64
-     and type t65 = M.t65
-     and type t66 = M.t66
-     and type t67 = M.t67
-     and type t68 = M.t68
-     and type t69 = M.t69
-     and type t70 = M.t70
-     and type t71 = M.t71
-     and type t72 = M.t72
-     and type t73 = M.t73
-     and type t74 = M.t74
-     and type t75 = M.t75
-     and type t76 = M.t76
-     and type t77 = M.t77
-     and type t78 = M.t78
-     and type t79 = M.t79
-     and type t80 = M.t80
-     and type t81 = M.t81
-     and type t82 = M.t82
-     and type t83 = M.t83
-     and type t84 = M.t84
-     and type t85 = M.t85
-     and type t86 = M.t86
-     and type t87 = M.t87
-     and type t88 = M.t88
-     and type t89 = M.t89
-     and type t90 = M.t90
-     and type t91 = M.t91
-     and type t92 = M.t92
-     and type t93 = M.t93
-     and type t94 = M.t94
-     and type t95 = M.t95
-     and type t96 = M.t96
-     and type t97 = M.t97
-     and type t98 = M.t98
-     and type t99 = M.t99
-     and type t100 = M.t100
-     and type t101 = M.t101
-     and type t102 = M.t102
-     and type t103 = M.t103
-     and type t104 = M.t104
-     and type t105 = M.t105
-     and type t106 = M.t106
-     and type t107 = M.t107
-     and type t108 = M.t108
-     and type t109 = M.t109
-     and type t110 = M.t110
-     and type t111 = M.t111
-     and type t112 = M.t112
-     and type t113 = M.t113
-     and type t114 = M.t114
-     and type t115 = M.t115
-     and type t116 = M.t116
-     and type t117 = M.t117
-     and type t118 = M.t118
-     and type t119 = M.t119
-     and type t120 = M.t120
-     and type t121 = M.t121
-     and type t122 = M.t122
-     and type t123 = M.t123
-     and type t124 = M.t124
-     and type t125 = M.t125
-     and type t126 = M.t126
-     and type t127 = M.t127
-     and type t128 = M.t128
-     and type t129 = M.t129
-     and type t130 = M.t130
-     and type t131 = M.t131
-     and type t132 = M.t132
-     and type t133 = M.t133
-     and type t134 = M.t134
-     and type t135 = M.t135
-     and type t136 = M.t136
-     and type t137 = M.t137
-     and type t138 = M.t138
-     and type t139 = M.t139
-     and type t140 = M.t140
-     and type t141 = M.t141
-     and type t142 = M.t142
-     and type t143 = M.t143
-     and type t144 = M.t144
-     and type t145 = M.t145
-     and type t146 = M.t146
-     and type t147 = M.t147
-     and type t148 = M.t148
-     and type t149 = M.t149
-     and type t150 = M.t150
-     and type t151 = M.t151
-     and type t152 = M.t152
-     and type t153 = M.t153
-     and type t154 = M.t154
-     and type t155 = M.t155
-     and type t156 = M.t156
-     and type t157 = M.t157
-     and type t158 = M.t158
-     and type t159 = M.t159
-     and type t160 = M.t160
-     and type t161 = M.t161
-     and type t162 = M.t162
-     and type t163 = M.t163
-     and type t164 = M.t164
-     and type t165 = M.t165
-     and type t166 = M.t166
-     and type t167 = M.t167
-     and type t168 = M.t168
-     and type t169 = M.t169
-     and type t170 = M.t170
-     and type t171 = M.t171
-     and type t172 = M.t172
-     and type t173 = M.t173
-     and type t174 = M.t174
-     and type t175 = M.t175
-     and type t176 = M.t176
-     and type t177 = M.t177
-     and type t178 = M.t178
-     and type t179 = M.t179
-     and type t180 = M.t180
-     and type t181 = M.t181
-     and type t182 = M.t182
-     and type t183 = M.t183
-     and type t184 = M.t184
-     and type t185 = M.t185
-     and type t186 = M.t186
-     and type t187 = M.t187
-     and type t188 = M.t188
-     and type t189 = M.t189
-     and type t190 = M.t190
-     and type t191 = M.t191
-     and type t192 = M.t192
-     and type t193 = M.t193
-     and type t194 = M.t194
-     and type t195 = M.t195
-     and type t196 = M.t196
-     and type t197 = M.t197
-     and type t198 = M.t198
-     and type t199 = M.t199
-     and type t200 = M.t200
-     and type t201 = M.t201
-     and type t202 = M.t202
-     and type t203 = M.t203
-     and type t204 = M.t204
-     and type t205 = M.t205
-     and type t206 = M.t206
-     and type t207 = M.t207
-     and type t208 = M.t208
-     and type t209 = M.t209
-     and type t210 = M.t210
-     and type t211 = M.t211
-     and type t212 = M.t212
-     and type t213 = M.t213
-     and type t214 = M.t214
-     and type t215 = M.t215
-     and type t216 = M.t216
-     and type t217 = M.t217
-     and type t218 = M.t218
-     and type t219 = M.t219
-     and type t220 = M.t220
-     and type t221 = M.t221
-     and type t222 = M.t222
-     and type t223 = M.t223
-     and type t224 = M.t224
-     and type t225 = M.t225
-     and type t226 = M.t226
-     and type t227 = M.t227
-     and type t228 = M.t228
-     and type t229 = M.t229
-     and type t230 = M.t230
-     and type t231 = M.t231
-     and type t232 = M.t232
-     and type t233 = M.t233
-     and type t234 = M.t234
-     and type t235 = M.t235
-     and type t236 = M.t236
-     and type t237 = M.t237
-     and type t238 = M.t238
-     and type t239 = M.t239
-     and type t240 = M.t240
-     and type t241 = M.t241
-     and type t242 = M.t242
-     and type t243 = M.t243
-     and type t244 = M.t244
-     and type t245 = M.t245
-     and type t246 = M.t246
-     and type t247 = M.t247
-     and type t248 = M.t248
-     and type t249 = M.t249
-     and type t250 = M.t250
-     and type t251 = M.t251
-     and type t252 = M.t252
-     and type t253 = M.t253
-     and type t254 = M.t254
-     and type t255 = M.t255
-     and type t256 = M.t256
-     and type t257 = M.t257
-     and type t258 = M.t258
-     and type t259 = M.t259
-     and type t260 = M.t260
-     and type t261 = M.t261
-     and type t262 = M.t262
-     and type t263 = M.t263
-     and type t264 = M.t264
-     and type t265 = M.t265
-     and type t266 = M.t266
-     and type t267 = M.t267
-     and type t268 = M.t268
-     and type t269 = M.t269
-     and type t270 = M.t270
-     and type t271 = M.t271
-     and type t272 = M.t272
-     and type t273 = M.t273
-     and type t274 = M.t274
-     and type t275 = M.t275
-     and type t276 = M.t276
-     and type t277 = M.t277
-     and type t278 = M.t278
-     and type t279 = M.t279
-     and type t280 = M.t280
-     and type t281 = M.t281
-     and type t282 = M.t282
-     and type t283 = M.t283
-     and type t284 = M.t284
-     and type t285 = M.t285
-     and type t286 = M.t286
-     and type t287 = M.t287
-     and type t288 = M.t288
-     and type t289 = M.t289
-     and type t290 = M.t290
-     and type t291 = M.t291
-     and type t292 = M.t292
-     and type t293 = M.t293
-     and type t294 = M.t294
-     and type t295 = M.t295
-     and type t296 = M.t296
-     and type t297 = M.t297
-     and type t298 = M.t298
-     and type t299 = M.t299
-     and type t300 = M.t300
-     and type t301 = M.t301
-     and type t302 = M.t302
-     and type t303 = M.t303
-     and type t304 = M.t304
-     and type t305 = M.t305
-     and type t306 = M.t306
-     and type t307 = M.t307
-     and type t308 = M.t308
-     and type t309 = M.t309
-     and type t310 = M.t310
-     and type t311 = M.t311
-     and type t312 = M.t312
-     and type t313 = M.t313
-     and type t314 = M.t314
-     and type t315 = M.t315
-     and type t316 = M.t316
-     and type t317 = M.t317
-     and type t318 = M.t318
-     and type t319 = M.t319
-     and type t320 = M.t320
-     and type t321 = M.t321
-     and type t322 = M.t322
-     and type t323 = M.t323
-     and type t324 = M.t324
-     and type t325 = M.t325
-     and type t326 = M.t326
-     and type t327 = M.t327
-     and type t328 = M.t328
-     and type t329 = M.t329
-     and type t330 = M.t330
-     and type t331 = M.t331
-     and type t332 = M.t332
-     and type t333 = M.t333
-     and type t334 = M.t334
-     and type t335 = M.t335
-     and type t336 = M.t336
-     and type t337 = M.t337
-     and type t338 = M.t338
-     and type t339 = M.t339
-     and type t340 = M.t340
-     and type t341 = M.t341
-     and type t342 = M.t342
-     and type t343 = M.t343
-     and type t344 = M.t344
-     and type t345 = M.t345
-     and type t346 = M.t346
-     and type t347 = M.t347
-     and type t348 = M.t348
-     and type t349 = M.t349
-     and type t350 = M.t350
-     and type t351 = M.t351
-     and type t352 = M.t352
-     and type t353 = M.t353
-     and type t354 = M.t354
-     and type t355 = M.t355
-     and type t356 = M.t356
-     and type t357 = M.t357
-     and type t358 = M.t358
-     and type t359 = M.t359
-     and type t360 = M.t360
-     and type t361 = M.t361
-     and type t362 = M.t362
-     and type t363 = M.t363
-     and type t364 = M.t364
-     and type t365 = M.t365
-     and type t366 = M.t366
-     and type t367 = M.t367
-     and type t368 = M.t368
-     and type t369 = M.t369
-     and type t370 = M.t370
-     and type t371 = M.t371
-     and type t372 = M.t372
-     and type t373 = M.t373
-     and type t374 = M.t374
-     and type t375 = M.t375
-     and type t376 = M.t376
-     and type t377 = M.t377
-     and type t378 = M.t378
-     and type t379 = M.t379
-     and type t380 = M.t380
-     and type t381 = M.t381
-     and type t382 = M.t382
-     and type t383 = M.t383
-     and type t384 = M.t384
-     and type t385 = M.t385
-     and type t386 = M.t386
-     and type t387 = M.t387
-     and type t388 = M.t388
-     and type t389 = M.t389
-     and type t390 = M.t390
-     and type t391 = M.t391
-     and type t392 = M.t392
-     and type t393 = M.t393
-     and type t394 = M.t394
-     and type t395 = M.t395
-     and type t396 = M.t396
-     and type t397 = M.t397
-     and type t398 = M.t398
-     and type t399 = M.t399
-     and type t400 = M.t400
-     and type t401 = M.t401
-     and type t402 = M.t402
-     and type t403 = M.t403
-     and type t404 = M.t404
-     and type t405 = M.t405
-     and type t406 = M.t406
-     and type t407 = M.t407
-     and type t408 = M.t408
-     and type t409 = M.t409
-     and type t410 = M.t410
-     and type t411 = M.t411
-     and type t412 = M.t412
-     and type t413 = M.t413
-     and type t414 = M.t414
-     and type t415 = M.t415
-     and type t416 = M.t416
-     and type t417 = M.t417
-     and type t418 = M.t418
-     and type t419 = M.t419
-     and type t420 = M.t420
-     and type t421 = M.t421
-     and type t422 = M.t422
-     and type t423 = M.t423
-     and type t424 = M.t424
-     and type t425 = M.t425
-     and type t426 = M.t426
-     and type t427 = M.t427
-     and type t428 = M.t428
-     and type t429 = M.t429
-     and type t430 = M.t430
-     and type t431 = M.t431
-     and type t432 = M.t432
-     and type t433 = M.t433
-     and type t434 = M.t434
-     and type t435 = M.t435
-     and type t436 = M.t436
-     and type t437 = M.t437
-     and type t438 = M.t438
-     and type t439 = M.t439
-     and type t440 = M.t440
-     and type t441 = M.t441
-     and type t442 = M.t442
-     and type t443 = M.t443
-     and type t444 = M.t444
-     and type t445 = M.t445
-     and type t446 = M.t446
-     and type t447 = M.t447
-     and type t448 = M.t448
-     and type t449 = M.t449
-     and type t450 = M.t450
-     and type t451 = M.t451
-     and type t452 = M.t452
-     and type t453 = M.t453
-     and type t454 = M.t454
-     and type t455 = M.t455
-     and type t456 = M.t456
-     and type t457 = M.t457
-     and type t458 = M.t458
-     and type t459 = M.t459
-     and type t460 = M.t460
-     and type t461 = M.t461
-     and type t462 = M.t462
-     and type t463 = M.t463
-     and type t464 = M.t464
-     and type t465 = M.t465
-     and type t466 = M.t466
-     and type t467 = M.t467
-     and type t468 = M.t468
-     and type t469 = M.t469
-     and type t470 = M.t470
-     and type t471 = M.t471
-     and type t472 = M.t472
-     and type t473 = M.t473
-     and type t474 = M.t474
-     and type t475 = M.t475
-     and type t476 = M.t476
-     and type t477 = M.t477
-     and type t478 = M.t478
-     and type t479 = M.t479
-     and type t480 = M.t480
-     and type t481 = M.t481
-     and type t482 = M.t482
-     and type t483 = M.t483
-     and type t484 = M.t484
-     and type t485 = M.t485
-     and type t486 = M.t486
-     and type t487 = M.t487
-     and type t488 = M.t488
-     and type t489 = M.t489
-     and type t490 = M.t490
-     and type t491 = M.t491
-     and type t492 = M.t492
-     and type t493 = M.t493
-     and type t494 = M.t494
-     and type t495 = M.t495
-     and type t496 = M.t496
-     and type t497 = M.t497
-     and type t498 = M.t498
-     and type t499 = M.t499
-     and type t500 = M.t500
-     and type t501 = M.t501
-     and type t502 = M.t502
-     and type t503 = M.t503
-     and type t504 = M.t504
-     and type t505 = M.t505
-     and type t506 = M.t506
-     and type t507 = M.t507
-     and type t508 = M.t508
-     and type t509 = M.t509
-     and type t510 = M.t510
-     and type t511 = M.t511
-     and type t512 = M.t512
-     and type t513 = M.t513
-     and type t514 = M.t514
-     and type t515 = M.t515
-     and type t516 = M.t516
-     and type t517 = M.t517
-     and type t518 = M.t518
-     and type t519 = M.t519
-     and type t520 = M.t520
-     and type t521 = M.t521
-     and type t522 = M.t522
-     and type t523 = M.t523
-     and type t524 = M.t524
-     and type t525 = M.t525
-     and type t526 = M.t526
-     and type t527 = M.t527
-     and type t528 = M.t528
-     and type t529 = M.t529
-     and type t530 = M.t530
-     and type t531 = M.t531
-     and type t532 = M.t532
-     and type t533 = M.t533
-     and type t534 = M.t534
-     and type t535 = M.t535
-     and type t536 = M.t536
-     and type t537 = M.t537
-     and type t538 = M.t538
-     and type t539 = M.t539
-     and type t540 = M.t540
-     and type t541 = M.t541
-     and type t542 = M.t542
-     and type t543 = M.t543
-     and type t544 = M.t544
-     and type t545 = M.t545
-     and type t546 = M.t546
-     and type t547 = M.t547
-     and type t548 = M.t548
-     and type t549 = M.t549
-     and type t550 = M.t550
-     and type t551 = M.t551
-     and type t552 = M.t552
-     and type t553 = M.t553
-     and type t554 = M.t554
-     and type t555 = M.t555
-     and type t556 = M.t556
-     and type t557 = M.t557
-     and type t558 = M.t558
-     and type t559 = M.t559
-     and type t560 = M.t560
-     and type t561 = M.t561
-     and type t562 = M.t562
-     and type t563 = M.t563
-     and type t564 = M.t564
-     and type t565 = M.t565
-     and type t566 = M.t566
-     and type t567 = M.t567
-     and type t568 = M.t568
-     and type t569 = M.t569
-     and type t570 = M.t570
-     and type t571 = M.t571
-     and type t572 = M.t572
-     and type t573 = M.t573
-     and type t574 = M.t574
-     and type t575 = M.t575
-     and type t576 = M.t576
-     and type t577 = M.t577
-     and type t578 = M.t578
-     and type t579 = M.t579
-     and type t580 = M.t580
-     and type t581 = M.t581
-     and type t582 = M.t582
-     and type t583 = M.t583
-     and type t584 = M.t584
-     and type t585 = M.t585
-     and type t586 = M.t586
-     and type t587 = M.t587
-     and type t588 = M.t588
-     and type t589 = M.t589
-     and type t590 = M.t590
-     and type t591 = M.t591
-     and type t592 = M.t592
-     and type t593 = M.t593
-     and type t594 = M.t594
-     and type t595 = M.t595
-     and type t596 = M.t596
-     and type t597 = M.t597
-     and type t598 = M.t598
-     and type t599 = M.t599
-     and type t600 = M.t600
-     and type t601 = M.t601
-     and type t602 = M.t602
-     and type t603 = M.t603
-     and type t604 = M.t604
-     and type t605 = M.t605
-     and type t606 = M.t606
-     and type t607 = M.t607
-     and type t608 = M.t608
-     and type t609 = M.t609
-     and type t610 = M.t610
-     and type t611 = M.t611
-     and type t612 = M.t612
-     and type t613 = M.t613
-     and type t614 = M.t614
-     and type t615 = M.t615
-     and type t616 = M.t616
-     and type t617 = M.t617
-     and type t618 = M.t618
-     and type t619 = M.t619
-     and type t620 = M.t620
-     and type t621 = M.t621
-     and type t622 = M.t622
-     and type t623 = M.t623
-     and type t624 = M.t624
-     and type t625 = M.t625
-     and type t626 = M.t626
-     and type t627 = M.t627
-     and type t628 = M.t628
-     and type t629 = M.t629
-     and type t630 = M.t630
-     and type t631 = M.t631
-     and type t632 = M.t632
-     and type t633 = M.t633
-     and type t634 = M.t634
-     and type t635 = M.t635
-     and type t636 = M.t636
-     and type t637 = M.t637
-     and type t638 = M.t638
-     and type t639 = M.t639
-     and type t640 = M.t640
-     and type t641 = M.t641
-     and type t642 = M.t642
-     and type t643 = M.t643
-     and type t644 = M.t644
-     and type t645 = M.t645
-     and type t646 = M.t646
-     and type t647 = M.t647
-     and type t648 = M.t648
-     and type t649 = M.t649
-     and type t650 = M.t650
-     and type t651 = M.t651
-     and type t652 = M.t652
-     and type t653 = M.t653
-     and type t654 = M.t654
-     and type t655 = M.t655
-     and type t656 = M.t656
-     and type t657 = M.t657
-     and type t658 = M.t658
-     and type t659 = M.t659
-     and type t660 = M.t660
-     and type t661 = M.t661
-     and type t662 = M.t662
-     and type t663 = M.t663
-     and type t664 = M.t664
-     and type t665 = M.t665
-     and type t666 = M.t666
-     and type t667 = M.t667
-     and type t668 = M.t668
-     and type t669 = M.t669
-     and type t670 = M.t670
-     and type t671 = M.t671
-     and type t672 = M.t672
-     and type t673 = M.t673
-     and type t674 = M.t674
-     and type t675 = M.t675
-     and type t676 = M.t676
-     and type t677 = M.t677
-     and type t678 = M.t678
-     and type t679 = M.t679
-     and type t680 = M.t680
-     and type t681 = M.t681
-     and type t682 = M.t682
-     and type t683 = M.t683
-     and type t684 = M.t684
-     and type t685 = M.t685
-     and type t686 = M.t686
-     and type t687 = M.t687
-     and type t688 = M.t688
-     and type t689 = M.t689
-     and type t690 = M.t690
-     and type t691 = M.t691
-     and type t692 = M.t692
-     and type t693 = M.t693
-     and type t694 = M.t694
-     and type t695 = M.t695
-     and type t696 = M.t696
-     and type t697 = M.t697
-     and type t698 = M.t698
-     and type t699 = M.t699
-     and type t700 = M.t700
-     and type t701 = M.t701
-     and type t702 = M.t702
-     and type t703 = M.t703
-     and type t704 = M.t704
-     and type t705 = M.t705
-     and type t706 = M.t706
-     and type t707 = M.t707
-     and type t708 = M.t708
-     and type t709 = M.t709
-     and type t710 = M.t710
-     and type t711 = M.t711
-     and type t712 = M.t712
-     and type t713 = M.t713
-     and type t714 = M.t714
-     and type t715 = M.t715
-     and type t716 = M.t716
-     and type t717 = M.t717
-     and type t718 = M.t718
-     and type t719 = M.t719
-     and type t720 = M.t720
-     and type t721 = M.t721
-     and type t722 = M.t722
-     and type t723 = M.t723
-     and type t724 = M.t724
-     and type t725 = M.t725
-     and type t726 = M.t726
-     and type t727 = M.t727
-     and type t728 = M.t728
-     and type t729 = M.t729
-     and type t730 = M.t730
-     and type t731 = M.t731
-     and type t732 = M.t732
-     and type t733 = M.t733
-     and type t734 = M.t734
-     and type t735 = M.t735
-     and type t736 = M.t736
-     and type t737 = M.t737
-     and type t738 = M.t738
-     and type t739 = M.t739
-     and type t740 = M.t740
-     and type t741 = M.t741
-     and type t742 = M.t742
-     and type t743 = M.t743
-     and type t744 = M.t744
-     and type t745 = M.t745
-     and type t746 = M.t746
-     and type t747 = M.t747
-     and type t748 = M.t748
-     and type t749 = M.t749
-     and type t750 = M.t750
-     and type t751 = M.t751
-     and type t752 = M.t752
-     and type t753 = M.t753
-     and type t754 = M.t754
-     and type t755 = M.t755
-     and type t756 = M.t756
-     and type t757 = M.t757
-     and type t758 = M.t758
-     and type t759 = M.t759
-     and type t760 = M.t760
-     and type t761 = M.t761
-     and type t762 = M.t762
-     and type t763 = M.t763
-     and type t764 = M.t764
-     and type t765 = M.t765
-     and type t766 = M.t766
-     and type t767 = M.t767
-     and type t768 = M.t768
-     and type t769 = M.t769
-     and type t770 = M.t770
-     and type t771 = M.t771
-     and type t772 = M.t772
-     and type t773 = M.t773
-     and type t774 = M.t774
-     and type t775 = M.t775
-     and type t776 = M.t776
-     and type t777 = M.t777
-     and type t778 = M.t778
-     and type t779 = M.t779
-     and type t780 = M.t780
-     and type t781 = M.t781
-     and type t782 = M.t782
-     and type t783 = M.t783
-     and type t784 = M.t784
-     and type t785 = M.t785
-     and type t786 = M.t786
-     and type t787 = M.t787
-     and type t788 = M.t788
-     and type t789 = M.t789
-     and type t790 = M.t790
-     and type t791 = M.t791
-     and type t792 = M.t792
-     and type t793 = M.t793
-     and type t794 = M.t794
-     and type t795 = M.t795
-     and type t796 = M.t796
-     and type t797 = M.t797
-     and type t798 = M.t798
-     and type t799 = M.t799
-     and type t800 = M.t800
-     and type t801 = M.t801
-     and type t802 = M.t802
-     and type t803 = M.t803
-     and type t804 = M.t804
-     and type t805 = M.t805
-     and type t806 = M.t806
-     and type t807 = M.t807
-     and type t808 = M.t808
-     and type t809 = M.t809
-     and type t810 = M.t810
-     and type t811 = M.t811
-     and type t812 = M.t812
-     and type t813 = M.t813
-     and type t814 = M.t814
-     and type t815 = M.t815
-     and type t816 = M.t816
-     and type t817 = M.t817
-     and type t818 = M.t818
-     and type t819 = M.t819
-     and type t820 = M.t820
-     and type t821 = M.t821
-     and type t822 = M.t822
-     and type t823 = M.t823
-     and type t824 = M.t824
-     and type t825 = M.t825
-     and type t826 = M.t826
-     and type t827 = M.t827
-     and type t828 = M.t828
-     and type t829 = M.t829
-     and type t830 = M.t830
-     and type t831 = M.t831
-     and type t832 = M.t832
-     and type t833 = M.t833
-     and type t834 = M.t834
-     and type t835 = M.t835
-     and type t836 = M.t836
-     and type t837 = M.t837
-     and type t838 = M.t838
-     and type t839 = M.t839
-     and type t840 = M.t840
-     and type t841 = M.t841
-     and type t842 = M.t842
-     and type t843 = M.t843
-     and type t844 = M.t844
-     and type t845 = M.t845
-     and type t846 = M.t846
-     and type t847 = M.t847
-     and type t848 = M.t848
-     and type t849 = M.t849
-     and type t850 = M.t850
-     and type t851 = M.t851
-     and type t852 = M.t852
-     and type t853 = M.t853
-     and type t854 = M.t854
-     and type t855 = M.t855
-     and type t856 = M.t856
-     and type t857 = M.t857
-     and type t858 = M.t858
-     and type t859 = M.t859
-     and type t860 = M.t860
-     and type t861 = M.t861
-     and type t862 = M.t862
-     and type t863 = M.t863
-     and type t864 = M.t864
-     and type t865 = M.t865
-     and type t866 = M.t866
-     and type t867 = M.t867
-     and type t868 = M.t868
-     and type t869 = M.t869
-     and type t870 = M.t870
-     and type t871 = M.t871
-     and type t872 = M.t872
-     and type t873 = M.t873
-     and type t874 = M.t874
-     and type t875 = M.t875
-     and type t876 = M.t876
-     and type t877 = M.t877
-     and type t878 = M.t878
-     and type t879 = M.t879
-     and type t880 = M.t880
-     and type t881 = M.t881
-     and type t882 = M.t882
-     and type t883 = M.t883
-     and type t884 = M.t884
-     and type t885 = M.t885
-     and type t886 = M.t886
-     and type t887 = M.t887
-     and type t888 = M.t888
-     and type t889 = M.t889
-     and type t890 = M.t890
-     and type t891 = M.t891
-     and type t892 = M.t892
-     and type t893 = M.t893
-     and type t894 = M.t894
-     and type t895 = M.t895
-     and type t896 = M.t896
-     and type t897 = M.t897
-     and type t898 = M.t898
-     and type t899 = M.t899
-     and type t900 = M.t900
-     and type t901 = M.t901
-     and type t902 = M.t902
-     and type t903 = M.t903
-     and type t904 = M.t904
-     and type t905 = M.t905
-     and type t906 = M.t906
-     and type t907 = M.t907
-     and type t908 = M.t908
-     and type t909 = M.t909
-     and type t910 = M.t910
-     and type t911 = M.t911
-     and type t912 = M.t912
-     and type t913 = M.t913
-     and type t914 = M.t914
-     and type t915 = M.t915
-     and type t916 = M.t916
-     and type t917 = M.t917
-     and type t918 = M.t918
-     and type t919 = M.t919
-     and type t920 = M.t920
-     and type t921 = M.t921
-     and type t922 = M.t922
-     and type t923 = M.t923
-     and type t924 = M.t924
-     and type t925 = M.t925
-     and type t926 = M.t926
-     and type t927 = M.t927
-     and type t928 = M.t928
-     and type t929 = M.t929
-     and type t930 = M.t930
-     and type t931 = M.t931
-     and type t932 = M.t932
-     and type t933 = M.t933
-     and type t934 = M.t934
-     and type t935 = M.t935
-     and type t936 = M.t936
-     and type t937 = M.t937
-     and type t938 = M.t938
-     and type t939 = M.t939
-     and type t940 = M.t940
-     and type t941 = M.t941
-     and type t942 = M.t942
-     and type t943 = M.t943
-     and type t944 = M.t944
-     and type t945 = M.t945
-     and type t946 = M.t946
-     and type t947 = M.t947
-     and type t948 = M.t948
-     and type t949 = M.t949
-     and type t950 = M.t950
-     and type t951 = M.t951
-     and type t952 = M.t952
-     and type t953 = M.t953
-     and type t954 = M.t954
-     and type t955 = M.t955
-     and type t956 = M.t956
-     and type t957 = M.t957
-     and type t958 = M.t958
-     and type t959 = M.t959
-     and type t960 = M.t960
-     and type t961 = M.t961
-     and type t962 = M.t962
-     and type t963 = M.t963
-     and type t964 = M.t964
-     and type t965 = M.t965
-     and type t966 = M.t966
-     and type t967 = M.t967
-     and type t968 = M.t968
-     and type t969 = M.t969
-     and type t970 = M.t970
-     and type t971 = M.t971
-     and type t972 = M.t972
-     and type t973 = M.t973
-     and type t974 = M.t974
-     and type t975 = M.t975
-     and type t976 = M.t976
-     and type t977 = M.t977
-     and type t978 = M.t978
-     and type t979 = M.t979
-     and type t980 = M.t980
-     and type t981 = M.t981
-     and type t982 = M.t982
-     and type t983 = M.t983
-     and type t984 = M.t984
-     and type t985 = M.t985
-     and type t986 = M.t986
-     and type t987 = M.t987
-     and type t988 = M.t988
-     and type t989 = M.t989
-     and type t990 = M.t990
-     and type t991 = M.t991
-     and type t992 = M.t992
-     and type t993 = M.t993
-     and type t994 = M.t994
-     and type t995 = M.t995
-     and type t996 = M.t996
-     and type t997 = M.t997
-     and type t998 = M.t998
-     and type t999 = M.t999
-     and type t1000 = M.t1000
-= struct
-  include M
-end
-
-module M = struct
-  type t0 = int -> int -> int
-  type t1 = int -> int -> int
-  type t2 = int -> int -> int
-  type t3 = int -> int -> int
-  type t4 = int -> int -> int
-  type t5 = int -> int -> int
-  type t6 = int -> int -> int
-  type t7 = int -> int -> int
-  type t8 = int -> int -> int
-  type t9 = int -> int -> int
-  type t10 = int -> int -> int
-  type t11 = int -> int -> int
-  type t12 = int -> int -> int
-  type t13 = int -> int -> int
-  type t14 = int -> int -> int
-  type t15 = int -> int -> int
-  type t16 = int -> int -> int
-  type t17 = int -> int -> int
-  type t18 = int -> int -> int
-  type t19 = int -> int -> int
-  type t20 = int -> int -> int
-  type t21 = int -> int -> int
-  type t22 = int -> int -> int
-  type t23 = int -> int -> int
-  type t24 = int -> int -> int
-  type t25 = int -> int -> int
-  type t26 = int -> int -> int
-  type t27 = int -> int -> int
-  type t28 = int -> int -> int
-  type t29 = int -> int -> int
-  type t30 = int -> int -> int
-  type t31 = int -> int -> int
-  type t32 = int -> int -> int
-  type t33 = int -> int -> int
-  type t34 = int -> int -> int
-  type t35 = int -> int -> int
-  type t36 = int -> int -> int
-  type t37 = int -> int -> int
-  type t38 = int -> int -> int
-  type t39 = int -> int -> int
-  type t40 = int -> int -> int
-  type t41 = int -> int -> int
-  type t42 = int -> int -> int
-  type t43 = int -> int -> int
-  type t44 = int -> int -> int
-  type t45 = int -> int -> int
-  type t46 = int -> int -> int
-  type t47 = int -> int -> int
-  type t48 = int -> int -> int
-  type t49 = int -> int -> int
-  type t50 = int -> int -> int
-  type t51 = int -> int -> int
-  type t52 = int -> int -> int
-  type t53 = int -> int -> int
-  type t54 = int -> int -> int
-  type t55 = int -> int -> int
-  type t56 = int -> int -> int
-  type t57 = int -> int -> int
-  type t58 = int -> int -> int
-  type t59 = int -> int -> int
-  type t60 = int -> int -> int
-  type t61 = int -> int -> int
-  type t62 = int -> int -> int
-  type t63 = int -> int -> int
-  type t64 = int -> int -> int
-  type t65 = int -> int -> int
-  type t66 = int -> int -> int
-  type t67 = int -> int -> int
-  type t68 = int -> int -> int
-  type t69 = int -> int -> int
-  type t70 = int -> int -> int
-  type t71 = int -> int -> int
-  type t72 = int -> int -> int
-  type t73 = int -> int -> int
-  type t74 = int -> int -> int
-  type t75 = int -> int -> int
-  type t76 = int -> int -> int
-  type t77 = int -> int -> int
-  type t78 = int -> int -> int
-  type t79 = int -> int -> int
-  type t80 = int -> int -> int
-  type t81 = int -> int -> int
-  type t82 = int -> int -> int
-  type t83 = int -> int -> int
-  type t84 = int -> int -> int
-  type t85 = int -> int -> int
-  type t86 = int -> int -> int
-  type t87 = int -> int -> int
-  type t88 = int -> int -> int
-  type t89 = int -> int -> int
-  type t90 = int -> int -> int
-  type t91 = int -> int -> int
-  type t92 = int -> int -> int
-  type t93 = int -> int -> int
-  type t94 = int -> int -> int
-  type t95 = int -> int -> int
-  type t96 = int -> int -> int
-  type t97 = int -> int -> int
-  type t98 = int -> int -> int
-  type t99 = int -> int -> int
-  type t100 = int -> int -> int
-  type t101 = int -> int -> int
-  type t102 = int -> int -> int
-  type t103 = int -> int -> int
-  type t104 = int -> int -> int
-  type t105 = int -> int -> int
-  type t106 = int -> int -> int
-  type t107 = int -> int -> int
-  type t108 = int -> int -> int
-  type t109 = int -> int -> int
-  type t110 = int -> int -> int
-  type t111 = int -> int -> int
-  type t112 = int -> int -> int
-  type t113 = int -> int -> int
-  type t114 = int -> int -> int
-  type t115 = int -> int -> int
-  type t116 = int -> int -> int
-  type t117 = int -> int -> int
-  type t118 = int -> int -> int
-  type t119 = int -> int -> int
-  type t120 = int -> int -> int
-  type t121 = int -> int -> int
-  type t122 = int -> int -> int
-  type t123 = int -> int -> int
-  type t124 = int -> int -> int
-  type t125 = int -> int -> int
-  type t126 = int -> int -> int
-  type t127 = int -> int -> int
-  type t128 = int -> int -> int
-  type t129 = int -> int -> int
-  type t130 = int -> int -> int
-  type t131 = int -> int -> int
-  type t132 = int -> int -> int
-  type t133 = int -> int -> int
-  type t134 = int -> int -> int
-  type t135 = int -> int -> int
-  type t136 = int -> int -> int
-  type t137 = int -> int -> int
-  type t138 = int -> int -> int
-  type t139 = int -> int -> int
-  type t140 = int -> int -> int
-  type t141 = int -> int -> int
-  type t142 = int -> int -> int
-  type t143 = int -> int -> int
-  type t144 = int -> int -> int
-  type t145 = int -> int -> int
-  type t146 = int -> int -> int
-  type t147 = int -> int -> int
-  type t148 = int -> int -> int
-  type t149 = int -> int -> int
-  type t150 = int -> int -> int
-  type t151 = int -> int -> int
-  type t152 = int -> int -> int
-  type t153 = int -> int -> int
-  type t154 = int -> int -> int
-  type t155 = int -> int -> int
-  type t156 = int -> int -> int
-  type t157 = int -> int -> int
-  type t158 = int -> int -> int
-  type t159 = int -> int -> int
-  type t160 = int -> int -> int
-  type t161 = int -> int -> int
-  type t162 = int -> int -> int
-  type t163 = int -> int -> int
-  type t164 = int -> int -> int
-  type t165 = int -> int -> int
-  type t166 = int -> int -> int
-  type t167 = int -> int -> int
-  type t168 = int -> int -> int
-  type t169 = int -> int -> int
-  type t170 = int -> int -> int
-  type t171 = int -> int -> int
-  type t172 = int -> int -> int
-  type t173 = int -> int -> int
-  type t174 = int -> int -> int
-  type t175 = int -> int -> int
-  type t176 = int -> int -> int
-  type t177 = int -> int -> int
-  type t178 = int -> int -> int
-  type t179 = int -> int -> int
-  type t180 = int -> int -> int
-  type t181 = int -> int -> int
-  type t182 = int -> int -> int
-  type t183 = int -> int -> int
-  type t184 = int -> int -> int
-  type t185 = int -> int -> int
-  type t186 = int -> int -> int
-  type t187 = int -> int -> int
-  type t188 = int -> int -> int
-  type t189 = int -> int -> int
-  type t190 = int -> int -> int
-  type t191 = int -> int -> int
-  type t192 = int -> int -> int
-  type t193 = int -> int -> int
-  type t194 = int -> int -> int
-  type t195 = int -> int -> int
-  type t196 = int -> int -> int
-  type t197 = int -> int -> int
-  type t198 = int -> int -> int
-  type t199 = int -> int -> int
-  type t200 = int -> int -> int
-  type t201 = int -> int -> int
-  type t202 = int -> int -> int
-  type t203 = int -> int -> int
-  type t204 = int -> int -> int
-  type t205 = int -> int -> int
-  type t206 = int -> int -> int
-  type t207 = int -> int -> int
-  type t208 = int -> int -> int
-  type t209 = int -> int -> int
-  type t210 = int -> int -> int
-  type t211 = int -> int -> int
-  type t212 = int -> int -> int
-  type t213 = int -> int -> int
-  type t214 = int -> int -> int
-  type t215 = int -> int -> int
-  type t216 = int -> int -> int
-  type t217 = int -> int -> int
-  type t218 = int -> int -> int
-  type t219 = int -> int -> int
-  type t220 = int -> int -> int
-  type t221 = int -> int -> int
-  type t222 = int -> int -> int
-  type t223 = int -> int -> int
-  type t224 = int -> int -> int
-  type t225 = int -> int -> int
-  type t226 = int -> int -> int
-  type t227 = int -> int -> int
-  type t228 = int -> int -> int
-  type t229 = int -> int -> int
-  type t230 = int -> int -> int
-  type t231 = int -> int -> int
-  type t232 = int -> int -> int
-  type t233 = int -> int -> int
-  type t234 = int -> int -> int
-  type t235 = int -> int -> int
-  type t236 = int -> int -> int
-  type t237 = int -> int -> int
-  type t238 = int -> int -> int
-  type t239 = int -> int -> int
-  type t240 = int -> int -> int
-  type t241 = int -> int -> int
-  type t242 = int -> int -> int
-  type t243 = int -> int -> int
-  type t244 = int -> int -> int
-  type t245 = int -> int -> int
-  type t246 = int -> int -> int
-  type t247 = int -> int -> int
-  type t248 = int -> int -> int
-  type t249 = int -> int -> int
-  type t250 = int -> int -> int
-  type t251 = int -> int -> int
-  type t252 = int -> int -> int
-  type t253 = int -> int -> int
-  type t254 = int -> int -> int
-  type t255 = int -> int -> int
-  type t256 = int -> int -> int
-  type t257 = int -> int -> int
-  type t258 = int -> int -> int
-  type t259 = int -> int -> int
-  type t260 = int -> int -> int
-  type t261 = int -> int -> int
-  type t262 = int -> int -> int
-  type t263 = int -> int -> int
-  type t264 = int -> int -> int
-  type t265 = int -> int -> int
-  type t266 = int -> int -> int
-  type t267 = int -> int -> int
-  type t268 = int -> int -> int
-  type t269 = int -> int -> int
-  type t270 = int -> int -> int
-  type t271 = int -> int -> int
-  type t272 = int -> int -> int
-  type t273 = int -> int -> int
-  type t274 = int -> int -> int
-  type t275 = int -> int -> int
-  type t276 = int -> int -> int
-  type t277 = int -> int -> int
-  type t278 = int -> int -> int
-  type t279 = int -> int -> int
-  type t280 = int -> int -> int
-  type t281 = int -> int -> int
-  type t282 = int -> int -> int
-  type t283 = int -> int -> int
-  type t284 = int -> int -> int
-  type t285 = int -> int -> int
-  type t286 = int -> int -> int
-  type t287 = int -> int -> int
-  type t288 = int -> int -> int
-  type t289 = int -> int -> int
-  type t290 = int -> int -> int
-  type t291 = int -> int -> int
-  type t292 = int -> int -> int
-  type t293 = int -> int -> int
-  type t294 = int -> int -> int
-  type t295 = int -> int -> int
-  type t296 = int -> int -> int
-  type t297 = int -> int -> int
-  type t298 = int -> int -> int
-  type t299 = int -> int -> int
-  type t300 = int -> int -> int
-  type t301 = int -> int -> int
-  type t302 = int -> int -> int
-  type t303 = int -> int -> int
-  type t304 = int -> int -> int
-  type t305 = int -> int -> int
-  type t306 = int -> int -> int
-  type t307 = int -> int -> int
-  type t308 = int -> int -> int
-  type t309 = int -> int -> int
-  type t310 = int -> int -> int
-  type t311 = int -> int -> int
-  type t312 = int -> int -> int
-  type t313 = int -> int -> int
-  type t314 = int -> int -> int
-  type t315 = int -> int -> int
-  type t316 = int -> int -> int
-  type t317 = int -> int -> int
-  type t318 = int -> int -> int
-  type t319 = int -> int -> int
-  type t320 = int -> int -> int
-  type t321 = int -> int -> int
-  type t322 = int -> int -> int
-  type t323 = int -> int -> int
-  type t324 = int -> int -> int
-  type t325 = int -> int -> int
-  type t326 = int -> int -> int
-  type t327 = int -> int -> int
-  type t328 = int -> int -> int
-  type t329 = int -> int -> int
-  type t330 = int -> int -> int
-  type t331 = int -> int -> int
-  type t332 = int -> int -> int
-  type t333 = int -> int -> int
-  type t334 = int -> int -> int
-  type t335 = int -> int -> int
-  type t336 = int -> int -> int
-  type t337 = int -> int -> int
-  type t338 = int -> int -> int
-  type t339 = int -> int -> int
-  type t340 = int -> int -> int
-  type t341 = int -> int -> int
-  type t342 = int -> int -> int
-  type t343 = int -> int -> int
-  type t344 = int -> int -> int
-  type t345 = int -> int -> int
-  type t346 = int -> int -> int
-  type t347 = int -> int -> int
-  type t348 = int -> int -> int
-  type t349 = int -> int -> int
-  type t350 = int -> int -> int
-  type t351 = int -> int -> int
-  type t352 = int -> int -> int
-  type t353 = int -> int -> int
-  type t354 = int -> int -> int
-  type t355 = int -> int -> int
-  type t356 = int -> int -> int
-  type t357 = int -> int -> int
-  type t358 = int -> int -> int
-  type t359 = int -> int -> int
-  type t360 = int -> int -> int
-  type t361 = int -> int -> int
-  type t362 = int -> int -> int
-  type t363 = int -> int -> int
-  type t364 = int -> int -> int
-  type t365 = int -> int -> int
-  type t366 = int -> int -> int
-  type t367 = int -> int -> int
-  type t368 = int -> int -> int
-  type t369 = int -> int -> int
-  type t370 = int -> int -> int
-  type t371 = int -> int -> int
-  type t372 = int -> int -> int
-  type t373 = int -> int -> int
-  type t374 = int -> int -> int
-  type t375 = int -> int -> int
-  type t376 = int -> int -> int
-  type t377 = int -> int -> int
-  type t378 = int -> int -> int
-  type t379 = int -> int -> int
-  type t380 = int -> int -> int
-  type t381 = int -> int -> int
-  type t382 = int -> int -> int
-  type t383 = int -> int -> int
-  type t384 = int -> int -> int
-  type t385 = int -> int -> int
-  type t386 = int -> int -> int
-  type t387 = int -> int -> int
-  type t388 = int -> int -> int
-  type t389 = int -> int -> int
-  type t390 = int -> int -> int
-  type t391 = int -> int -> int
-  type t392 = int -> int -> int
-  type t393 = int -> int -> int
-  type t394 = int -> int -> int
-  type t395 = int -> int -> int
-  type t396 = int -> int -> int
-  type t397 = int -> int -> int
-  type t398 = int -> int -> int
-  type t399 = int -> int -> int
-  type t400 = int -> int -> int
-  type t401 = int -> int -> int
-  type t402 = int -> int -> int
-  type t403 = int -> int -> int
-  type t404 = int -> int -> int
-  type t405 = int -> int -> int
-  type t406 = int -> int -> int
-  type t407 = int -> int -> int
-  type t408 = int -> int -> int
-  type t409 = int -> int -> int
-  type t410 = int -> int -> int
-  type t411 = int -> int -> int
-  type t412 = int -> int -> int
-  type t413 = int -> int -> int
-  type t414 = int -> int -> int
-  type t415 = int -> int -> int
-  type t416 = int -> int -> int
-  type t417 = int -> int -> int
-  type t418 = int -> int -> int
-  type t419 = int -> int -> int
-  type t420 = int -> int -> int
-  type t421 = int -> int -> int
-  type t422 = int -> int -> int
-  type t423 = int -> int -> int
-  type t424 = int -> int -> int
-  type t425 = int -> int -> int
-  type t426 = int -> int -> int
-  type t427 = int -> int -> int
-  type t428 = int -> int -> int
-  type t429 = int -> int -> int
-  type t430 = int -> int -> int
-  type t431 = int -> int -> int
-  type t432 = int -> int -> int
-  type t433 = int -> int -> int
-  type t434 = int -> int -> int
-  type t435 = int -> int -> int
-  type t436 = int -> int -> int
-  type t437 = int -> int -> int
-  type t438 = int -> int -> int
-  type t439 = int -> int -> int
-  type t440 = int -> int -> int
-  type t441 = int -> int -> int
-  type t442 = int -> int -> int
-  type t443 = int -> int -> int
-  type t444 = int -> int -> int
-  type t445 = int -> int -> int
-  type t446 = int -> int -> int
-  type t447 = int -> int -> int
-  type t448 = int -> int -> int
-  type t449 = int -> int -> int
-  type t450 = int -> int -> int
-  type t451 = int -> int -> int
-  type t452 = int -> int -> int
-  type t453 = int -> int -> int
-  type t454 = int -> int -> int
-  type t455 = int -> int -> int
-  type t456 = int -> int -> int
-  type t457 = int -> int -> int
-  type t458 = int -> int -> int
-  type t459 = int -> int -> int
-  type t460 = int -> int -> int
-  type t461 = int -> int -> int
-  type t462 = int -> int -> int
-  type t463 = int -> int -> int
-  type t464 = int -> int -> int
-  type t465 = int -> int -> int
-  type t466 = int -> int -> int
-  type t467 = int -> int -> int
-  type t468 = int -> int -> int
-  type t469 = int -> int -> int
-  type t470 = int -> int -> int
-  type t471 = int -> int -> int
-  type t472 = int -> int -> int
-  type t473 = int -> int -> int
-  type t474 = int -> int -> int
-  type t475 = int -> int -> int
-  type t476 = int -> int -> int
-  type t477 = int -> int -> int
-  type t478 = int -> int -> int
-  type t479 = int -> int -> int
-  type t480 = int -> int -> int
-  type t481 = int -> int -> int
-  type t482 = int -> int -> int
-  type t483 = int -> int -> int
-  type t484 = int -> int -> int
-  type t485 = int -> int -> int
-  type t486 = int -> int -> int
-  type t487 = int -> int -> int
-  type t488 = int -> int -> int
-  type t489 = int -> int -> int
-  type t490 = int -> int -> int
-  type t491 = int -> int -> int
-  type t492 = int -> int -> int
-  type t493 = int -> int -> int
-  type t494 = int -> int -> int
-  type t495 = int -> int -> int
-  type t496 = int -> int -> int
-  type t497 = int -> int -> int
-  type t498 = int -> int -> int
-  type t499 = int -> int -> int
-  type t500 = int -> int -> int
-  type t501 = int -> int -> int
-  type t502 = int -> int -> int
-  type t503 = int -> int -> int
-  type t504 = int -> int -> int
-  type t505 = int -> int -> int
-  type t506 = int -> int -> int
-  type t507 = int -> int -> int
-  type t508 = int -> int -> int
-  type t509 = int -> int -> int
-  type t510 = int -> int -> int
-  type t511 = int -> int -> int
-  type t512 = int -> int -> int
-  type t513 = int -> int -> int
-  type t514 = int -> int -> int
-  type t515 = int -> int -> int
-  type t516 = int -> int -> int
-  type t517 = int -> int -> int
-  type t518 = int -> int -> int
-  type t519 = int -> int -> int
-  type t520 = int -> int -> int
-  type t521 = int -> int -> int
-  type t522 = int -> int -> int
-  type t523 = int -> int -> int
-  type t524 = int -> int -> int
-  type t525 = int -> int -> int
-  type t526 = int -> int -> int
-  type t527 = int -> int -> int
-  type t528 = int -> int -> int
-  type t529 = int -> int -> int
-  type t530 = int -> int -> int
-  type t531 = int -> int -> int
-  type t532 = int -> int -> int
-  type t533 = int -> int -> int
-  type t534 = int -> int -> int
-  type t535 = int -> int -> int
-  type t536 = int -> int -> int
-  type t537 = int -> int -> int
-  type t538 = int -> int -> int
-  type t539 = int -> int -> int
-  type t540 = int -> int -> int
-  type t541 = int -> int -> int
-  type t542 = int -> int -> int
-  type t543 = int -> int -> int
-  type t544 = int -> int -> int
-  type t545 = int -> int -> int
-  type t546 = int -> int -> int
-  type t547 = int -> int -> int
-  type t548 = int -> int -> int
-  type t549 = int -> int -> int
-  type t550 = int -> int -> int
-  type t551 = int -> int -> int
-  type t552 = int -> int -> int
-  type t553 = int -> int -> int
-  type t554 = int -> int -> int
-  type t555 = int -> int -> int
-  type t556 = int -> int -> int
-  type t557 = int -> int -> int
-  type t558 = int -> int -> int
-  type t559 = int -> int -> int
-  type t560 = int -> int -> int
-  type t561 = int -> int -> int
-  type t562 = int -> int -> int
-  type t563 = int -> int -> int
-  type t564 = int -> int -> int
-  type t565 = int -> int -> int
-  type t566 = int -> int -> int
-  type t567 = int -> int -> int
-  type t568 = int -> int -> int
-  type t569 = int -> int -> int
-  type t570 = int -> int -> int
-  type t571 = int -> int -> int
-  type t572 = int -> int -> int
-  type t573 = int -> int -> int
-  type t574 = int -> int -> int
-  type t575 = int -> int -> int
-  type t576 = int -> int -> int
-  type t577 = int -> int -> int
-  type t578 = int -> int -> int
-  type t579 = int -> int -> int
-  type t580 = int -> int -> int
-  type t581 = int -> int -> int
-  type t582 = int -> int -> int
-  type t583 = int -> int -> int
-  type t584 = int -> int -> int
-  type t585 = int -> int -> int
-  type t586 = int -> int -> int
-  type t587 = int -> int -> int
-  type t588 = int -> int -> int
-  type t589 = int -> int -> int
-  type t590 = int -> int -> int
-  type t591 = int -> int -> int
-  type t592 = int -> int -> int
-  type t593 = int -> int -> int
-  type t594 = int -> int -> int
-  type t595 = int -> int -> int
-  type t596 = int -> int -> int
-  type t597 = int -> int -> int
-  type t598 = int -> int -> int
-  type t599 = int -> int -> int
-  type t600 = int -> int -> int
-  type t601 = int -> int -> int
-  type t602 = int -> int -> int
-  type t603 = int -> int -> int
-  type t604 = int -> int -> int
-  type t605 = int -> int -> int
-  type t606 = int -> int -> int
-  type t607 = int -> int -> int
-  type t608 = int -> int -> int
-  type t609 = int -> int -> int
-  type t610 = int -> int -> int
-  type t611 = int -> int -> int
-  type t612 = int -> int -> int
-  type t613 = int -> int -> int
-  type t614 = int -> int -> int
-  type t615 = int -> int -> int
-  type t616 = int -> int -> int
-  type t617 = int -> int -> int
-  type t618 = int -> int -> int
-  type t619 = int -> int -> int
-  type t620 = int -> int -> int
-  type t621 = int -> int -> int
-  type t622 = int -> int -> int
-  type t623 = int -> int -> int
-  type t624 = int -> int -> int
-  type t625 = int -> int -> int
-  type t626 = int -> int -> int
-  type t627 = int -> int -> int
-  type t628 = int -> int -> int
-  type t629 = int -> int -> int
-  type t630 = int -> int -> int
-  type t631 = int -> int -> int
-  type t632 = int -> int -> int
-  type t633 = int -> int -> int
-  type t634 = int -> int -> int
-  type t635 = int -> int -> int
-  type t636 = int -> int -> int
-  type t637 = int -> int -> int
-  type t638 = int -> int -> int
-  type t639 = int -> int -> int
-  type t640 = int -> int -> int
-  type t641 = int -> int -> int
-  type t642 = int -> int -> int
-  type t643 = int -> int -> int
-  type t644 = int -> int -> int
-  type t645 = int -> int -> int
-  type t646 = int -> int -> int
-  type t647 = int -> int -> int
-  type t648 = int -> int -> int
-  type t649 = int -> int -> int
-  type t650 = int -> int -> int
-  type t651 = int -> int -> int
-  type t652 = int -> int -> int
-  type t653 = int -> int -> int
-  type t654 = int -> int -> int
-  type t655 = int -> int -> int
-  type t656 = int -> int -> int
-  type t657 = int -> int -> int
-  type t658 = int -> int -> int
-  type t659 = int -> int -> int
-  type t660 = int -> int -> int
-  type t661 = int -> int -> int
-  type t662 = int -> int -> int
-  type t663 = int -> int -> int
-  type t664 = int -> int -> int
-  type t665 = int -> int -> int
-  type t666 = int -> int -> int
-  type t667 = int -> int -> int
-  type t668 = int -> int -> int
-  type t669 = int -> int -> int
-  type t670 = int -> int -> int
-  type t671 = int -> int -> int
-  type t672 = int -> int -> int
-  type t673 = int -> int -> int
-  type t674 = int -> int -> int
-  type t675 = int -> int -> int
-  type t676 = int -> int -> int
-  type t677 = int -> int -> int
-  type t678 = int -> int -> int
-  type t679 = int -> int -> int
-  type t680 = int -> int -> int
-  type t681 = int -> int -> int
-  type t682 = int -> int -> int
-  type t683 = int -> int -> int
-  type t684 = int -> int -> int
-  type t685 = int -> int -> int
-  type t686 = int -> int -> int
-  type t687 = int -> int -> int
-  type t688 = int -> int -> int
-  type t689 = int -> int -> int
-  type t690 = int -> int -> int
-  type t691 = int -> int -> int
-  type t692 = int -> int -> int
-  type t693 = int -> int -> int
-  type t694 = int -> int -> int
-  type t695 = int -> int -> int
-  type t696 = int -> int -> int
-  type t697 = int -> int -> int
-  type t698 = int -> int -> int
-  type t699 = int -> int -> int
-  type t700 = int -> int -> int
-  type t701 = int -> int -> int
-  type t702 = int -> int -> int
-  type t703 = int -> int -> int
-  type t704 = int -> int -> int
-  type t705 = int -> int -> int
-  type t706 = int -> int -> int
-  type t707 = int -> int -> int
-  type t708 = int -> int -> int
-  type t709 = int -> int -> int
-  type t710 = int -> int -> int
-  type t711 = int -> int -> int
-  type t712 = int -> int -> int
-  type t713 = int -> int -> int
-  type t714 = int -> int -> int
-  type t715 = int -> int -> int
-  type t716 = int -> int -> int
-  type t717 = int -> int -> int
-  type t718 = int -> int -> int
-  type t719 = int -> int -> int
-  type t720 = int -> int -> int
-  type t721 = int -> int -> int
-  type t722 = int -> int -> int
-  type t723 = int -> int -> int
-  type t724 = int -> int -> int
-  type t725 = int -> int -> int
-  type t726 = int -> int -> int
-  type t727 = int -> int -> int
-  type t728 = int -> int -> int
-  type t729 = int -> int -> int
-  type t730 = int -> int -> int
-  type t731 = int -> int -> int
-  type t732 = int -> int -> int
-  type t733 = int -> int -> int
-  type t734 = int -> int -> int
-  type t735 = int -> int -> int
-  type t736 = int -> int -> int
-  type t737 = int -> int -> int
-  type t738 = int -> int -> int
-  type t739 = int -> int -> int
-  type t740 = int -> int -> int
-  type t741 = int -> int -> int
-  type t742 = int -> int -> int
-  type t743 = int -> int -> int
-  type t744 = int -> int -> int
-  type t745 = int -> int -> int
-  type t746 = int -> int -> int
-  type t747 = int -> int -> int
-  type t748 = int -> int -> int
-  type t749 = int -> int -> int
-  type t750 = int -> int -> int
-  type t751 = int -> int -> int
-  type t752 = int -> int -> int
-  type t753 = int -> int -> int
-  type t754 = int -> int -> int
-  type t755 = int -> int -> int
-  type t756 = int -> int -> int
-  type t757 = int -> int -> int
-  type t758 = int -> int -> int
-  type t759 = int -> int -> int
-  type t760 = int -> int -> int
-  type t761 = int -> int -> int
-  type t762 = int -> int -> int
-  type t763 = int -> int -> int
-  type t764 = int -> int -> int
-  type t765 = int -> int -> int
-  type t766 = int -> int -> int
-  type t767 = int -> int -> int
-  type t768 = int -> int -> int
-  type t769 = int -> int -> int
-  type t770 = int -> int -> int
-  type t771 = int -> int -> int
-  type t772 = int -> int -> int
-  type t773 = int -> int -> int
-  type t774 = int -> int -> int
-  type t775 = int -> int -> int
-  type t776 = int -> int -> int
-  type t777 = int -> int -> int
-  type t778 = int -> int -> int
-  type t779 = int -> int -> int
-  type t780 = int -> int -> int
-  type t781 = int -> int -> int
-  type t782 = int -> int -> int
-  type t783 = int -> int -> int
-  type t784 = int -> int -> int
-  type t785 = int -> int -> int
-  type t786 = int -> int -> int
-  type t787 = int -> int -> int
-  type t788 = int -> int -> int
-  type t789 = int -> int -> int
-  type t790 = int -> int -> int
-  type t791 = int -> int -> int
-  type t792 = int -> int -> int
-  type t793 = int -> int -> int
-  type t794 = int -> int -> int
-  type t795 = int -> int -> int
-  type t796 = int -> int -> int
-  type t797 = int -> int -> int
-  type t798 = int -> int -> int
-  type t799 = int -> int -> int
-  type t800 = int -> int -> int
-  type t801 = int -> int -> int
-  type t802 = int -> int -> int
-  type t803 = int -> int -> int
-  type t804 = int -> int -> int
-  type t805 = int -> int -> int
-  type t806 = int -> int -> int
-  type t807 = int -> int -> int
-  type t808 = int -> int -> int
-  type t809 = int -> int -> int
-  type t810 = int -> int -> int
-  type t811 = int -> int -> int
-  type t812 = int -> int -> int
-  type t813 = int -> int -> int
-  type t814 = int -> int -> int
-  type t815 = int -> int -> int
-  type t816 = int -> int -> int
-  type t817 = int -> int -> int
-  type t818 = int -> int -> int
-  type t819 = int -> int -> int
-  type t820 = int -> int -> int
-  type t821 = int -> int -> int
-  type t822 = int -> int -> int
-  type t823 = int -> int -> int
-  type t824 = int -> int -> int
-  type t825 = int -> int -> int
-  type t826 = int -> int -> int
-  type t827 = int -> int -> int
-  type t828 = int -> int -> int
-  type t829 = int -> int -> int
-  type t830 = int -> int -> int
-  type t831 = int -> int -> int
-  type t832 = int -> int -> int
-  type t833 = int -> int -> int
-  type t834 = int -> int -> int
-  type t835 = int -> int -> int
-  type t836 = int -> int -> int
-  type t837 = int -> int -> int
-  type t838 = int -> int -> int
-  type t839 = int -> int -> int
-  type t840 = int -> int -> int
-  type t841 = int -> int -> int
-  type t842 = int -> int -> int
-  type t843 = int -> int -> int
-  type t844 = int -> int -> int
-  type t845 = int -> int -> int
-  type t846 = int -> int -> int
-  type t847 = int -> int -> int
-  type t848 = int -> int -> int
-  type t849 = int -> int -> int
-  type t850 = int -> int -> int
-  type t851 = int -> int -> int
-  type t852 = int -> int -> int
-  type t853 = int -> int -> int
-  type t854 = int -> int -> int
-  type t855 = int -> int -> int
-  type t856 = int -> int -> int
-  type t857 = int -> int -> int
-  type t858 = int -> int -> int
-  type t859 = int -> int -> int
-  type t860 = int -> int -> int
-  type t861 = int -> int -> int
-  type t862 = int -> int -> int
-  type t863 = int -> int -> int
-  type t864 = int -> int -> int
-  type t865 = int -> int -> int
-  type t866 = int -> int -> int
-  type t867 = int -> int -> int
-  type t868 = int -> int -> int
-  type t869 = int -> int -> int
-  type t870 = int -> int -> int
-  type t871 = int -> int -> int
-  type t872 = int -> int -> int
-  type t873 = int -> int -> int
-  type t874 = int -> int -> int
-  type t875 = int -> int -> int
-  type t876 = int -> int -> int
-  type t877 = int -> int -> int
-  type t878 = int -> int -> int
-  type t879 = int -> int -> int
-  type t880 = int -> int -> int
-  type t881 = int -> int -> int
-  type t882 = int -> int -> int
-  type t883 = int -> int -> int
-  type t884 = int -> int -> int
-  type t885 = int -> int -> int
-  type t886 = int -> int -> int
-  type t887 = int -> int -> int
-  type t888 = int -> int -> int
-  type t889 = int -> int -> int
-  type t890 = int -> int -> int
-  type t891 = int -> int -> int
-  type t892 = int -> int -> int
-  type t893 = int -> int -> int
-  type t894 = int -> int -> int
-  type t895 = int -> int -> int
-  type t896 = int -> int -> int
-  type t897 = int -> int -> int
-  type t898 = int -> int -> int
-  type t899 = int -> int -> int
-  type t900 = int -> int -> int
-  type t901 = int -> int -> int
-  type t902 = int -> int -> int
-  type t903 = int -> int -> int
-  type t904 = int -> int -> int
-  type t905 = int -> int -> int
-  type t906 = int -> int -> int
-  type t907 = int -> int -> int
-  type t908 = int -> int -> int
-  type t909 = int -> int -> int
-  type t910 = int -> int -> int
-  type t911 = int -> int -> int
-  type t912 = int -> int -> int
-  type t913 = int -> int -> int
-  type t914 = int -> int -> int
-  type t915 = int -> int -> int
-  type t916 = int -> int -> int
-  type t917 = int -> int -> int
-  type t918 = int -> int -> int
-  type t919 = int -> int -> int
-  type t920 = int -> int -> int
-  type t921 = int -> int -> int
-  type t922 = int -> int -> int
-  type t923 = int -> int -> int
-  type t924 = int -> int -> int
-  type t925 = int -> int -> int
-  type t926 = int -> int -> int
-  type t927 = int -> int -> int
-  type t928 = int -> int -> int
-  type t929 = int -> int -> int
-  type t930 = int -> int -> int
-  type t931 = int -> int -> int
-  type t932 = int -> int -> int
-  type t933 = int -> int -> int
-  type t934 = int -> int -> int
-  type t935 = int -> int -> int
-  type t936 = int -> int -> int
-  type t937 = int -> int -> int
-  type t938 = int -> int -> int
-  type t939 = int -> int -> int
-  type t940 = int -> int -> int
-  type t941 = int -> int -> int
-  type t942 = int -> int -> int
-  type t943 = int -> int -> int
-  type t944 = int -> int -> int
-  type t945 = int -> int -> int
-  type t946 = int -> int -> int
-  type t947 = int -> int -> int
-  type t948 = int -> int -> int
-  type t949 = int -> int -> int
-  type t950 = int -> int -> int
-  type t951 = int -> int -> int
-  type t952 = int -> int -> int
-  type t953 = int -> int -> int
-  type t954 = int -> int -> int
-  type t955 = int -> int -> int
-  type t956 = int -> int -> int
-  type t957 = int -> int -> int
-  type t958 = int -> int -> int
-  type t959 = int -> int -> int
-  type t960 = int -> int -> int
-  type t961 = int -> int -> int
-  type t962 = int -> int -> int
-  type t963 = int -> int -> int
-  type t964 = int -> int -> int
-  type t965 = int -> int -> int
-  type t966 = int -> int -> int
-  type t967 = int -> int -> int
-  type t968 = int -> int -> int
-  type t969 = int -> int -> int
-  type t970 = int -> int -> int
-  type t971 = int -> int -> int
-  type t972 = int -> int -> int
-  type t973 = int -> int -> int
-  type t974 = int -> int -> int
-  type t975 = int -> int -> int
-  type t976 = int -> int -> int
-  type t977 = int -> int -> int
-  type t978 = int -> int -> int
-  type t979 = int -> int -> int
-  type t980 = int -> int -> int
-  type t981 = int -> int -> int
-  type t982 = int -> int -> int
-  type t983 = int -> int -> int
-  type t984 = int -> int -> int
-  type t985 = int -> int -> int
-  type t986 = int -> int -> int
-  type t987 = int -> int -> int
-  type t988 = int -> int -> int
-  type t989 = int -> int -> int
-  type t990 = int -> int -> int
-  type t991 = int -> int -> int
-  type t992 = int -> int -> int
-  type t993 = int -> int -> int
-  type t994 = int -> int -> int
-  type t995 = int -> int -> int
-  type t996 = int -> int -> int
-  type t997 = int -> int -> int
-  type t998 = int -> int -> int
-  type t999 = int -> int -> int
-  type t1000 = int -> int -> int
-end
-
-module X =
-  Make
-  (Make
-  (Make
-  (Make
-  (Make
-  (Make
-  (Make
-  (Make
-  (Make
-  (Make
-  (Make
-  (M)))))))))))
diff --git a/camlp4/test/fixtures/functor-perf2.ml b/camlp4/test/fixtures/functor-perf2.ml
deleted file mode 100644 (file)
index 57b8bba..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-<% types, with_constrs, module_application = ARGV.map { |x| x.to_i } %>
-
-module type S = sig
-<%- for i in 0 .. types do -%>
-  type t<%= i %>
-<%- end -%>
-end
-
-module Make (M : S)
-: S with type t0 = M.t0
-  <%- for i in 1 .. with_constrs do -%>
-     and type t<%= i %> = M.t<%= i %>
-  <%- end -%>
-= struct
-  include M
-end
-
-module M = struct
-<%- for i in 0 .. types do -%>
-  type t<%= i %> = int -> int -> int
-<%- end -%>
-end
-
-module X =
-  Make
-<%- module_application.times do -%>
-  (Make
-<%- end -%>
-  (M)<%= ')' * module_application %>
diff --git a/camlp4/test/fixtures/functor-perf3.ml b/camlp4/test/fixtures/functor-perf3.ml
deleted file mode 100644 (file)
index 5bf5359..0000000
+++ /dev/null
@@ -1,50 +0,0 @@
-<% types, with_constrs, make, make2 = ARGV.map { |x| x.to_i } %>
-
-module type S = sig
-<%- for i in 0 .. types do -%>
-  type t<%= i %>
-<%- end -%>
-end
-
-module Make (M : S)
-: S with type t0 = M.t0
-  <%- for i in 1 .. with_constrs do -%>
-     and type t<%= i %> = M.t<%= i %>
-  <%- end -%>
-= struct
-  include M
-end
-
-module type S2 = sig
-  module M : S
-end
-
-module Make2 (M2 : S2)
-: S2 with module M = M2.M
-= struct
-  include M2
-end
-
-module M = struct
-<%- for i in 0 .. types do -%>
-  type t<%= i %> = int -> int -> int
-<%- end -%>
-end
-
-module M1 =
-  Make
-<%- make.times do -%>
-  (Make
-<%- end -%>
-  (M)<%= ')' * make %>
-
-module M2 = struct
-  module M = M1
-end
-
-module X =
-  Make2
-<%- make2.times do -%>
-  (Make2
-<%- end -%>
-  (M2)<%= ')' * make2 %>
diff --git a/camlp4/test/fixtures/gen_map.ml b/camlp4/test/fixtures/gen_map.ml
deleted file mode 100644 (file)
index 8655752..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-type t =
-  A of int * t * t
-| B of int list
-| C of option t
-
-module Map = struct
-  module T = Camlp4Filters.GenerateMap.Generated
-end
diff --git a/camlp4/test/fixtures/gram-fold.ml b/camlp4/test/fixtures/gram-fold.ml
deleted file mode 100644 (file)
index 5cd53b1..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-open Camlp4.PreCast;
-module G = MakeGram Lexer;
-type t = [ A of t and t | B of string | C ];
-value main = G.Entry.mk "main";
-value rec length x acc =
-  match x with
-  [ A x y -> length x (length y acc)
-  | B _ -> succ acc
-  | C -> acc ];
-EXTEND G
-  GLOBAL: main;
-  main:
-    [ [
-      l = FOLD1 (fun a b -> A (B a) b) (C) ident -> l
-  ] ];
-  ident:
-    [ [ `LIDENT s -> s ] ];
-END;
-let f = Sys.argv.(1) in
-Format.printf "%d@."
-  (length (G.parse main (Loc.mk f) (Stream.of_channel (open_in f))) 0);
diff --git a/camlp4/test/fixtures/gram-list.ml b/camlp4/test/fixtures/gram-list.ml
deleted file mode 100644 (file)
index f3df766..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-open Camlp4.PreCast;
-module G = MakeGram Lexer;
-value main = G.Entry.mk "main";
-EXTEND G
-  GLOBAL: main;
-  main:
-    [ [ l = LIST1 ident -> l ] ];
-  ident:
-    [ [ `LIDENT s -> s ] ];
-END;
-let f = Sys.argv.(1) in
-Format.printf "%d@."
-  (List.length (G.parse main (Loc.mk f) (Stream.of_channel (open_in f))));
diff --git a/camlp4/test/fixtures/gram-loc-lost.ml b/camlp4/test/fixtures/gram-loc-lost.ml
deleted file mode 100644 (file)
index 38b164e..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-open Camlp4.PreCast;
-module G = MakeGram Lexer;
-(* type t = [ A of Loc.t and t and t | B of Loc.t and string ]; *)
-value main = G.Entry.mk "main";
-(* value rec length x acc =
-  match x with
-  [ A x y -> length x (length y acc)
-  | B _ -> succ acc ];
-value length _ _ = -1;                  *)
-EXTEND G
-  GLOBAL: main;
-  main:
-    [ RIGHTA
-      [ x = SELF; y = SELF ->
-        let l = Loc.merge x y in
-        if l = _loc then _loc
-        else do {
-          Format.eprintf "bad loc: %a <> %a + %a@."
-            Loc.dump _loc Loc.dump x Loc.dump y;
-          _loc
-        }
-      | i = ident -> i ] ];
-  ident:
-    [ [ `LIDENT _ -> _loc ] ];
-END;
-try
-  let f = Sys.argv.(1) in
-  Format.printf "%a@."
-    Loc.dump (G.parse main (Loc.mk f) (Stream.of_channel (open_in f)))
-with e -> Format.eprintf "error: %a@." Camlp4.ErrorHandler.print e;
diff --git a/camlp4/test/fixtures/gram-sub-rule.ml b/camlp4/test/fixtures/gram-sub-rule.ml
deleted file mode 100644 (file)
index 4066cae..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
-open Camlp4.PreCast.Syntax;
-
-value mo _loc =
-  fun
-  [ None -> <:expr< None >>
-  | Some e -> <:expr< Some $e$ >> ];
-
-EXTEND Gram
-GLOBAL: expr;
-expr:
-  [ [ "testbegin";
-      lb = [ "("; l = LIST0 a_LIDENT SEP ","; ")" -> l | "()" -> [] ];
-      b = bar;
-      "testend" ->
-        let e =
-        List.fold_right (fun i acc -> <:expr< [ $lid:i$ :: $acc$ ] >>) lb <:expr< [] >>
-        in <:expr< ($e$, $b$) >>
-  ] ];
-bar:
-  [ [ x = OPT [ o = OPT [ x = "testb" ->
-        <:expr< $str:Token.extract_string x$ >> ]; "testc"; b = baz ->
-        <:expr< ($mo _loc o$, $b$) >> ] -> mo _loc x
-  ] ];
-(* bar:
-  [ [ o = OPT [ o = OPT [ "bar" -> <:expr< bar >> ]; b = baz -> <:expr< ($mo _loc o$, $b$) >> ] ->
-      mo _loc o
-  ] ];                                                                                                *)
-(* bar:
-  [ [ o = OPT [ "bar" -> <:expr< bar >> ]; b = baz -> <:expr< ($mo _loc o$, $b$) >>
-  ] ];                                                                                 *)
-baz:
-  [ [ "baz" -> <:expr< baz >> ] ];
-END;
diff --git a/camlp4/test/fixtures/gram-tree.ml b/camlp4/test/fixtures/gram-tree.ml
deleted file mode 100644 (file)
index ec1dd05..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-open Camlp4.PreCast;
-module G = MakeGram Lexer;
-type t = [ A of t and t | B of string ];
-value main = G.Entry.mk "main";
-(* value rec length x acc =
-  match x with
-  [ A x y -> length x (length y acc)
-  | B _ -> succ acc ];                  *)
-value length _ _ = -1;
-EXTEND G
-  GLOBAL: main;
-  main:
-    [ [ x = SELF; y = SELF -> A x y
-      | i = ident -> B i ] ];
-  ident:
-    [ [ `LIDENT s -> s ] ];
-END;
-try
-  let f = Sys.argv.(1) in
-  Format.printf "%d@."
-    (length (G.parse main (Loc.mk f) (Stream.of_channel (open_in f))) 0)
-with e -> Format.eprintf "error: %a@." Camlp4.ErrorHandler.print e;
diff --git a/camlp4/test/fixtures/gram-tree2.ml b/camlp4/test/fixtures/gram-tree2.ml
deleted file mode 100644 (file)
index 68f8b0a..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-open Camlp4.PreCast;
-module G = MakeGram Lexer;
-type t = [ A of t and t | B of string ];
-value main = G.Entry.mk "main";
-(* value rec length x acc =
-  match x with
-  [ A x y -> length x (length y acc)
-  | B _ -> succ acc ];                  *)
-value length _ _ = -1;
-EXTEND G
-  GLOBAL: main;
-  main:
-    [ [ i = ident; x = SELF -> A (B i) x
-      | i = ident -> B i ] ];
-  ident:
-    [ [ `LIDENT s -> s ] ];
-END;
-try
-  let f = Sys.argv.(1) in
-  Format.printf "%d@."
-    (length (G.parse main (Loc.mk f) (Stream.of_channel (open_in f))) 0)
-with e -> Format.eprintf "error: %a@." Camlp4.ErrorHandler.print e;
diff --git a/camlp4/test/fixtures/gram-tree3.ml b/camlp4/test/fixtures/gram-tree3.ml
deleted file mode 100644 (file)
index 06af8dd..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-open Camlp4.PreCast;
-module G = MakeGram Lexer;
-type t = [ A of t and t | B of string ];
-value main = G.Entry.mk "main";
-(* value rec length x acc =
-  match x with
-  [ A x y -> length x (length y acc)
-  | B _ -> succ acc ];                  *)
-value length _ _ = -1;
-EXTEND G
-  GLOBAL: main;
-  main:
-    [ RIGHTA
-      [ x = SELF; y = SELF -> A x y
-      | i = ident -> B i ] ];
-  ident:
-    [ [ `LIDENT s -> s ] ];
-END;
-try
-  let f = Sys.argv.(1) in
-  Format.printf "%d@."
-    (length (G.parse main (Loc.mk f) (Stream.of_channel (open_in f))) 0)
-with e -> Format.eprintf "error: %a@." Camlp4.ErrorHandler.print e;
diff --git a/camlp4/test/fixtures/gram.ml b/camlp4/test/fixtures/gram.ml
deleted file mode 100644 (file)
index 6a5f7e3..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-EXTEND G expr: [[ l = LIST0 STRING -> l ]]; END;
-EXTEND G expr: [[ l = LIST0 [ x = STRING -> x ] -> l ]]; END;
diff --git a/camlp4/test/fixtures/idents b/camlp4/test/fixtures/idents
deleted file mode 100644 (file)
index de41468..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-aaa aab aac aad aae aaf aag aah aai aaj aak aal aam aan aao aap aaq aar aas
-aat aau aav aaw aax aay aaz aba abb abc abd abe abf abg abh abi abj abk abl
-abm abn abo abp abq abr abs abt abu abv abw abx aby abz aca acb acc acd ace
-acf acg ach aci acj ack acl acm acn aco acp acq acr acs act acu acv acw acx
-acy acz ada adb adc add ade adf adg adh adi adj adk adl adm adn ado adp adq
-adr ads adt adu adv adw adx ady adz aea aeb aec aed aee aef aeg aeh aei aej
-aek ael aem aen aeo aep aeq aer aes aet aeu aev aew aex aey aez afa afb afc
-afd afe aff afg afh afi afj afk afl afm afn afo afp afq afr afs aft afu afv
-afw afx afy afz aga agb agc agd age agf agg agh agi agj agk agl agm agn ago
-agp agq agr ags agt agu agv agw agx agy agz aha ahb ahc ahd ahe ahf ahg ahh
-ahi ahj ahk ahl ahm ahn aho ahp ahq ahr ahs aht ahu ahv ahw ahx ahy ahz aia
-aib aic aid aie aif aig aih aii aij aik ail aim ain aio aip aiq air ais ait
-aiu aiv aiw aix aiy aiz aja ajb ajc ajd aje ajf ajg ajh aji ajj ajk ajl ajm
-ajn ajo ajp ajq ajr ajs ajt aju ajv ajw ajx ajy ajz aka akb akc akd ake akf
-akg akh aki akj akk akl akm akn ako akp akq akr aks akt aku akv akw akx aky
-akz ala alb alc ald ale alf alg alh ali alj alk all alm aln alo alp alq alr
-als alt alu alv alw alx aly alz ama amb amc amd ame amf amg amh ami amj amk
-aml amm amn amo amp amq amr ams amt amu amv amw amx amy amz ana anb anc and
-ane anf ang anh ani anj ank anl anm ann ano anp anq anr ans ant anu anv anw
-anx any anz aoa aob aoc aod aoe aof aog aoh aoi aoj aok aol aom aon aoo aop
-aoq aor aos aot aou aov aow aox aoy aoz apa apb apc apd ape apf apg aph api
-apj apk apl apm apn apo app apq apr aps apt apu apv apw apx apy apz aqa aqb
-aqc aqd aqe aqf aqg aqh aqi aqj aqk aql aqm aqn aqo aqp aqq aqr aqs aqt aqu
-aqv aqw aqx aqy aqz ara arb arc ard are arf arg arh ari arj ark arl arm arn
-aro arp arq arr ars art aru arv arw arx ary arz asa asb asc asd ase asf asg
-ash asi asj ask asl asm asn aso asp asq asr ass ast asu asv asw asx asy asz
-ata atb atc atd ate atf atg ath ati atj atk atl atm atn ato atp atq atr ats
-att atu atv atw atx aty atz aua aub auc aud aue auf aug auh aui auj auk aul
-aum aun auo aup auq aur aus aut auu auv auw aux auy auz ava avb avc avd ave
-avf avg avh avi avj avk avl avm avn avo avp avq avr avs avt avu avv avw avx
-avy avz awa awb awc awd awe awf awg awh awi awj awk awl awm awn awo awp awq
-awr aws awt awu awv aww awx awy awz axa axb axc axd axe axf axg axh axi axj
-axk axl axm axn axo axp axq axr axs axt axu axv axw axx axy axz aya ayb ayc
-ayd aye ayf ayg ayh ayi ayj ayk ayl aym ayn ayo ayp ayq ayr ays ayt ayu ayv
-ayw ayx ayy ayz aza azb azc azd aze azf azg azh azi azj azk azl azm azn azo
-azp azq azr azs azt azu azv azw azx azy azz baa bab bac bad bae baf bag bah
-bai baj bak bal bam ban bao bap baq bar bas bat bau bav baw bax bay baz bba
-bbb
diff --git a/camlp4/test/fixtures/idents1 b/camlp4/test/fixtures/idents1
deleted file mode 100644 (file)
index 5da5440..0000000
+++ /dev/null
@@ -1,499 +0,0 @@
-aaaa aaab aaac aaad aaae aaaf aaag aaah aaai aaaj aaak aaal aaam aaan aaao
-aaap aaaq aaar aaas aaat aaau aaav aaaw aaax aaay aaaz aaba aabb aabc aabd
-aabe aabf aabg aabh aabi aabj aabk aabl aabm aabn aabo aabp aabq aabr aabs
-aabt aabu aabv aabw aabx aaby aabz aaca aacb aacc aacd aace aacf aacg aach
-aaci aacj aack aacl aacm aacn aaco aacp aacq aacr aacs aact aacu aacv aacw
-aacx aacy aacz aada aadb aadc aadd aade aadf aadg aadh aadi aadj aadk aadl
-aadm aadn aado aadp aadq aadr aads aadt aadu aadv aadw aadx aady aadz aaea
-aaeb aaec aaed aaee aaef aaeg aaeh aaei aaej aaek aael aaem aaen aaeo aaep
-aaeq aaer aaes aaet aaeu aaev aaew aaex aaey aaez aafa aafb aafc aafd aafe
-aaff aafg aafh aafi aafj aafk aafl aafm aafn aafo aafp aafq aafr aafs aaft
-aafu aafv aafw aafx aafy aafz aaga aagb aagc aagd aage aagf aagg aagh aagi
-aagj aagk aagl aagm aagn aago aagp aagq aagr aags aagt aagu aagv aagw aagx
-aagy aagz aaha aahb aahc aahd aahe aahf aahg aahh aahi aahj aahk aahl aahm
-aahn aaho aahp aahq aahr aahs aaht aahu aahv aahw aahx aahy aahz aaia aaib
-aaic aaid aaie aaif aaig aaih aaii aaij aaik aail aaim aain aaio aaip aaiq
-aair aais aait aaiu aaiv aaiw aaix aaiy aaiz aaja aajb aajc aajd aaje aajf
-aajg aajh aaji aajj aajk aajl aajm aajn aajo aajp aajq aajr aajs aajt aaju
-aajv aajw aajx aajy aajz aaka aakb aakc aakd aake aakf aakg aakh aaki aakj
-aakk aakl aakm aakn aako aakp aakq aakr aaks aakt aaku aakv aakw aakx aaky
-aakz aala aalb aalc aald aale aalf aalg aalh aali aalj aalk aall aalm aaln
-aalo aalp aalq aalr aals aalt aalu aalv aalw aalx aaly aalz aama aamb aamc
-aamd aame aamf aamg aamh aami aamj aamk aaml aamm aamn aamo aamp aamq aamr
-aams aamt aamu aamv aamw aamx aamy aamz aana aanb aanc aand aane aanf aang
-aanh aani aanj aank aanl aanm aann aano aanp aanq aanr aans aant aanu aanv
-aanw aanx aany aanz aaoa aaob aaoc aaod aaoe aaof aaog aaoh aaoi aaoj aaok
-aaol aaom aaon aaoo aaop aaoq aaor aaos aaot aaou aaov aaow aaox aaoy aaoz
-aapa aapb aapc aapd aape aapf aapg aaph aapi aapj aapk aapl aapm aapn aapo
-aapp aapq aapr aaps aapt aapu aapv aapw aapx aapy aapz aaqa aaqb aaqc aaqd
-aaqe aaqf aaqg aaqh aaqi aaqj aaqk aaql aaqm aaqn aaqo aaqp aaqq aaqr aaqs
-aaqt aaqu aaqv aaqw aaqx aaqy aaqz aara aarb aarc aard aare aarf aarg aarh
-aari aarj aark aarl aarm aarn aaro aarp aarq aarr aars aart aaru aarv aarw
-aarx aary aarz aasa aasb aasc aasd aase aasf aasg aash aasi aasj aask aasl
-aasm aasn aaso aasp aasq aasr aass aast aasu aasv aasw aasx aasy aasz aata
-aatb aatc aatd aate aatf aatg aath aati aatj aatk aatl aatm aatn aato aatp
-aatq aatr aats aatt aatu aatv aatw aatx aaty aatz aaua aaub aauc aaud aaue
-aauf aaug aauh aaui aauj aauk aaul aaum aaun aauo aaup aauq aaur aaus aaut
-aauu aauv aauw aaux aauy aauz aava aavb aavc aavd aave aavf aavg aavh aavi
-aavj aavk aavl aavm aavn aavo aavp aavq aavr aavs aavt aavu aavv aavw aavx
-aavy aavz aawa aawb aawc aawd aawe aawf aawg aawh aawi aawj aawk aawl aawm
-aawn aawo aawp aawq aawr aaws aawt aawu aawv aaww aawx aawy aawz aaxa aaxb
-aaxc aaxd aaxe aaxf aaxg aaxh aaxi aaxj aaxk aaxl aaxm aaxn aaxo aaxp aaxq
-aaxr aaxs aaxt aaxu aaxv aaxw aaxx aaxy aaxz aaya aayb aayc aayd aaye aayf
-aayg aayh aayi aayj aayk aayl aaym aayn aayo aayp aayq aayr aays aayt aayu
-aayv aayw aayx aayy aayz aaza aazb aazc aazd aaze aazf aazg aazh aazi aazj
-aazk aazl aazm aazn aazo aazp aazq aazr aazs aazt aazu aazv aazw aazx aazy
-aazz abaa abab abac abad abae abaf abag abah abai abaj abak abal abam aban
-abao abap abaq abar abas abat abau abav abaw abax abay abaz abba abbb abbc
-abbd abbe abbf abbg abbh abbi abbj abbk abbl abbm abbn abbo abbp abbq abbr
-abbs abbt abbu abbv abbw abbx abby abbz abca abcb abcc abcd abce abcf abcg
-abch abci abcj abck abcl abcm abcn abco abcp abcq abcr abcs abct abcu abcv
-abcw abcx abcy abcz abda abdb abdc abdd abde abdf abdg abdh abdi abdj abdk
-abdl abdm abdn abdo abdp abdq abdr abds abdt abdu abdv abdw abdx abdy abdz
-abea abeb abec abed abee abef abeg abeh abei abej abek abel abem aben abeo
-abep abeq aber abes abet abeu abev abew abex abey abez abfa abfb abfc abfd
-abfe abff abfg abfh abfi abfj abfk abfl abfm abfn abfo abfp abfq abfr abfs
-abft abfu abfv abfw abfx abfy abfz abga abgb abgc abgd abge abgf abgg abgh
-abgi abgj abgk abgl abgm abgn abgo abgp abgq abgr abgs abgt abgu abgv abgw
-abgx abgy abgz abha abhb abhc abhd abhe abhf abhg abhh abhi abhj abhk abhl
-abhm abhn abho abhp abhq abhr abhs abht abhu abhv abhw abhx abhy abhz abia
-abib abic abid abie abif abig abih abii abij abik abil abim abin abio abip
-abiq abir abis abit abiu abiv abiw abix abiy abiz abja abjb abjc abjd abje
-abjf abjg abjh abji abjj abjk abjl abjm abjn abjo abjp abjq abjr abjs abjt
-abju abjv abjw abjx abjy abjz abka abkb abkc abkd abke abkf abkg abkh abki
-abkj abkk abkl abkm abkn abko abkp abkq abkr abks abkt abku abkv abkw abkx
-abky abkz abla ablb ablc abld able ablf ablg ablh abli ablj ablk abll ablm
-abln ablo ablp ablq ablr abls ablt ablu ablv ablw ablx ably ablz abma abmb
-abmc abmd abme abmf abmg abmh abmi abmj abmk abml abmm abmn abmo abmp abmq
-abmr abms abmt abmu abmv abmw abmx abmy abmz abna abnb abnc abnd abne abnf
-abng abnh abni abnj abnk abnl abnm abnn abno abnp abnq abnr abns abnt abnu
-abnv abnw abnx abny abnz aboa abob aboc abod aboe abof abog aboh aboi aboj
-abok abol abom abon aboo abop aboq abor abos abot abou abov abow abox aboy
-aboz abpa abpb abpc abpd abpe abpf abpg abph abpi abpj abpk abpl abpm abpn
-abpo abpp abpq abpr abps abpt abpu abpv abpw abpx abpy abpz abqa abqb abqc
-abqd abqe abqf abqg abqh abqi abqj abqk abql abqm abqn abqo abqp abqq abqr
-abqs abqt abqu abqv abqw abqx abqy abqz abra abrb abrc abrd abre abrf abrg
-abrh abri abrj abrk abrl abrm abrn abro abrp abrq abrr abrs abrt abru abrv
-abrw abrx abry abrz absa absb absc absd abse absf absg absh absi absj absk
-absl absm absn abso absp absq absr abss abst absu absv absw absx absy absz
-abta abtb abtc abtd abte abtf abtg abth abti abtj abtk abtl abtm abtn abto
-abtp abtq abtr abts abtt abtu abtv abtw abtx abty abtz abua abub abuc abud
-abue abuf abug abuh abui abuj abuk abul abum abun abuo abup abuq abur abus
-abut abuu abuv abuw abux abuy abuz abva abvb abvc abvd abve abvf abvg abvh
-abvi abvj abvk abvl abvm abvn abvo abvp abvq abvr abvs abvt abvu abvv abvw
-abvx abvy abvz abwa abwb abwc abwd abwe abwf abwg abwh abwi abwj abwk abwl
-abwm abwn abwo abwp abwq abwr abws abwt abwu abwv abww abwx abwy abwz abxa
-abxb abxc abxd abxe abxf abxg abxh abxi abxj abxk abxl abxm abxn abxo abxp
-abxq abxr abxs abxt abxu abxv abxw abxx abxy abxz abya abyb abyc abyd abye
-abyf abyg abyh abyi abyj abyk abyl abym abyn abyo abyp abyq abyr abys abyt
-abyu abyv abyw abyx abyy abyz abza abzb abzc abzd abze abzf abzg abzh abzi
-abzj abzk abzl abzm abzn abzo abzp abzq abzr abzs abzt abzu abzv abzw abzx
-abzy abzz acaa acab acac acad acae acaf acag acah acai acaj acak acal acam
-acan acao acap acaq acar acas acat acau acav acaw acax acay acaz acba acbb
-acbc acbd acbe acbf acbg acbh acbi acbj acbk acbl acbm acbn acbo acbp acbq
-acbr acbs acbt acbu acbv acbw acbx acby acbz acca accb accc accd acce accf
-accg acch acci accj acck accl accm accn acco accp accq accr accs acct accu
-accv accw accx accy accz acda acdb acdc acdd acde acdf acdg acdh acdi acdj
-acdk acdl acdm acdn acdo acdp acdq acdr acds acdt acdu acdv acdw acdx acdy
-acdz acea aceb acec aced acee acef aceg aceh acei acej acek acel acem acen
-aceo acep aceq acer aces acet aceu acev acew acex acey acez acfa acfb acfc
-acfd acfe acff acfg acfh acfi acfj acfk acfl acfm acfn acfo acfp acfq acfr
-acfs acft acfu acfv acfw acfx acfy acfz acga acgb acgc acgd acge acgf acgg
-acgh acgi acgj acgk acgl acgm acgn acgo acgp acgq acgr acgs acgt acgu acgv
-acgw acgx acgy acgz acha achb achc achd ache achf achg achh achi achj achk
-achl achm achn acho achp achq achr achs acht achu achv achw achx achy achz
-acia acib acic acid acie acif acig acih acii acij acik acil acim acin acio
-acip aciq acir acis acit aciu aciv aciw acix aciy aciz acja acjb acjc acjd
-acje acjf acjg acjh acji acjj acjk acjl acjm acjn acjo acjp acjq acjr acjs
-acjt acju acjv acjw acjx acjy acjz acka ackb ackc ackd acke ackf ackg ackh
-acki ackj ackk ackl ackm ackn acko ackp ackq ackr acks ackt acku ackv ackw
-ackx acky ackz acla aclb aclc acld acle aclf aclg aclh acli aclj aclk acll
-aclm acln aclo aclp aclq aclr acls aclt aclu aclv aclw aclx acly aclz acma
-acmb acmc acmd acme acmf acmg acmh acmi acmj acmk acml acmm acmn acmo acmp
-acmq acmr acms acmt acmu acmv acmw acmx acmy acmz acna acnb acnc acnd acne
-acnf acng acnh acni acnj acnk acnl acnm acnn acno acnp acnq acnr acns acnt
-acnu acnv acnw acnx acny acnz acoa acob acoc acod acoe acof acog acoh acoi
-acoj acok acol acom acon acoo acop acoq acor acos acot acou acov acow acox
-acoy acoz acpa acpb acpc acpd acpe acpf acpg acph acpi acpj acpk acpl acpm
-acpn acpo acpp acpq acpr acps acpt acpu acpv acpw acpx acpy acpz acqa acqb
-acqc acqd acqe acqf acqg acqh acqi acqj acqk acql acqm acqn acqo acqp acqq
-acqr acqs acqt acqu acqv acqw acqx acqy acqz acra acrb acrc acrd acre acrf
-acrg acrh acri acrj acrk acrl acrm acrn acro acrp acrq acrr acrs acrt acru
-acrv acrw acrx acry acrz acsa acsb acsc acsd acse acsf acsg acsh acsi acsj
-acsk acsl acsm acsn acso acsp acsq acsr acss acst acsu acsv acsw acsx acsy
-acsz acta actb actc actd acte actf actg acth acti actj actk actl actm actn
-acto actp actq actr acts actt actu actv actw actx acty actz acua acub acuc
-acud acue acuf acug acuh acui acuj acuk acul acum acun acuo acup acuq acur
-acus acut acuu acuv acuw acux acuy acuz acva acvb acvc acvd acve acvf acvg
-acvh acvi acvj acvk acvl acvm acvn acvo acvp acvq acvr acvs acvt acvu acvv
-acvw acvx acvy acvz acwa acwb acwc acwd acwe acwf acwg acwh acwi acwj acwk
-acwl acwm acwn acwo acwp acwq acwr acws acwt acwu acwv acww acwx acwy acwz
-acxa acxb acxc acxd acxe acxf acxg acxh acxi acxj acxk acxl acxm acxn acxo
-acxp acxq acxr acxs acxt acxu acxv acxw acxx acxy acxz acya acyb acyc acyd
-acye acyf acyg acyh acyi acyj acyk acyl acym acyn acyo acyp acyq acyr acys
-acyt acyu acyv acyw acyx acyy acyz acza aczb aczc aczd acze aczf aczg aczh
-aczi aczj aczk aczl aczm aczn aczo aczp aczq aczr aczs aczt aczu aczv aczw
-aczx aczy aczz adaa adab adac adad adae adaf adag adah adai adaj adak adal
-adam adan adao adap adaq adar adas adat adau adav adaw adax aday adaz adba
-adbb adbc adbd adbe adbf adbg adbh adbi adbj adbk adbl adbm adbn adbo adbp
-adbq adbr adbs adbt adbu adbv adbw adbx adby adbz adca adcb adcc adcd adce
-adcf adcg adch adci adcj adck adcl adcm adcn adco adcp adcq adcr adcs adct
-adcu adcv adcw adcx adcy adcz adda addb addc addd adde addf addg addh addi
-addj addk addl addm addn addo addp addq addr adds addt addu addv addw addx
-addy addz adea adeb adec aded adee adef adeg adeh adei adej adek adel adem
-aden adeo adep adeq ader ades adet adeu adev adew adex adey adez adfa adfb
-adfc adfd adfe adff adfg adfh adfi adfj adfk adfl adfm adfn adfo adfp adfq
-adfr adfs adft adfu adfv adfw adfx adfy adfz adga adgb adgc adgd adge adgf
-adgg adgh adgi adgj adgk adgl adgm adgn adgo adgp adgq adgr adgs adgt adgu
-adgv adgw adgx adgy adgz adha adhb adhc adhd adhe adhf adhg adhh adhi adhj
-adhk adhl adhm adhn adho adhp adhq adhr adhs adht adhu adhv adhw adhx adhy
-adhz adia adib adic adid adie adif adig adih adii adij adik adil adim adin
-adio adip adiq adir adis adit adiu adiv adiw adix adiy adiz adja adjb adjc
-adjd adje adjf adjg adjh adji adjj adjk adjl adjm adjn adjo adjp adjq adjr
-adjs adjt adju adjv adjw adjx adjy adjz adka adkb adkc adkd adke adkf adkg
-adkh adki adkj adkk adkl adkm adkn adko adkp adkq adkr adks adkt adku adkv
-adkw adkx adky adkz adla adlb adlc adld adle adlf adlg adlh adli adlj adlk
-adll adlm adln adlo adlp adlq adlr adls adlt adlu adlv adlw adlx adly adlz
-adma admb admc admd adme admf admg admh admi admj admk adml admm admn admo
-admp admq admr adms admt admu admv admw admx admy admz adna adnb adnc adnd
-adne adnf adng adnh adni adnj adnk adnl adnm adnn adno adnp adnq adnr adns
-adnt adnu adnv adnw adnx adny adnz adoa adob adoc adod adoe adof adog adoh
-adoi adoj adok adol adom adon adoo adop adoq ador ados adot adou adov adow
-adox adoy adoz adpa adpb adpc adpd adpe adpf adpg adph adpi adpj adpk adpl
-adpm adpn adpo adpp adpq adpr adps adpt adpu adpv adpw adpx adpy adpz adqa
-adqb adqc adqd adqe adqf adqg adqh adqi adqj adqk adql adqm adqn adqo adqp
-adqq adqr adqs adqt adqu adqv adqw adqx adqy adqz adra adrb adrc adrd adre
-adrf adrg adrh adri adrj adrk adrl adrm adrn adro adrp adrq adrr adrs adrt
-adru adrv adrw adrx adry adrz adsa adsb adsc adsd adse adsf adsg adsh adsi
-adsj adsk adsl adsm adsn adso adsp adsq adsr adss adst adsu adsv adsw adsx
-adsy adsz adta adtb adtc adtd adte adtf adtg adth adti adtj adtk adtl adtm
-adtn adto adtp adtq adtr adts adtt adtu adtv adtw adtx adty adtz adua adub
-aduc adud adue aduf adug aduh adui aduj aduk adul adum adun aduo adup aduq
-adur adus adut aduu aduv aduw adux aduy aduz adva advb advc advd adve advf
-advg advh advi advj advk advl advm advn advo advp advq advr advs advt advu
-advv advw advx advy advz adwa adwb adwc adwd adwe adwf adwg adwh adwi adwj
-adwk adwl adwm adwn adwo adwp adwq adwr adws adwt adwu adwv adww adwx adwy
-adwz adxa adxb adxc adxd adxe adxf adxg adxh adxi adxj adxk adxl adxm adxn
-adxo adxp adxq adxr adxs adxt adxu adxv adxw adxx adxy adxz adya adyb adyc
-adyd adye adyf adyg adyh adyi adyj adyk adyl adym adyn adyo adyp adyq adyr
-adys adyt adyu adyv adyw adyx adyy adyz adza adzb adzc adzd adze adzf adzg
-adzh adzi adzj adzk adzl adzm adzn adzo adzp adzq adzr adzs adzt adzu adzv
-adzw adzx adzy adzz aeaa aeab aeac aead aeae aeaf aeag aeah aeai aeaj aeak
-aeal aeam aean aeao aeap aeaq aear aeas aeat aeau aeav aeaw aeax aeay aeaz
-aeba aebb aebc aebd aebe aebf aebg aebh aebi aebj aebk aebl aebm aebn aebo
-aebp aebq aebr aebs aebt aebu aebv aebw aebx aeby aebz aeca aecb aecc aecd
-aece aecf aecg aech aeci aecj aeck aecl aecm aecn aeco aecp aecq aecr aecs
-aect aecu aecv aecw aecx aecy aecz aeda aedb aedc aedd aede aedf aedg aedh
-aedi aedj aedk aedl aedm aedn aedo aedp aedq aedr aeds aedt aedu aedv aedw
-aedx aedy aedz aeea aeeb aeec aeed aeee aeef aeeg aeeh aeei aeej aeek aeel
-aeem aeen aeeo aeep aeeq aeer aees aeet aeeu aeev aeew aeex aeey aeez aefa
-aefb aefc aefd aefe aeff aefg aefh aefi aefj aefk aefl aefm aefn aefo aefp
-aefq aefr aefs aeft aefu aefv aefw aefx aefy aefz aega aegb aegc aegd aege
-aegf aegg aegh aegi aegj aegk aegl aegm aegn aego aegp aegq aegr aegs aegt
-aegu aegv aegw aegx aegy aegz aeha aehb aehc aehd aehe aehf aehg aehh aehi
-aehj aehk aehl aehm aehn aeho aehp aehq aehr aehs aeht aehu aehv aehw aehx
-aehy aehz aeia aeib aeic aeid aeie aeif aeig aeih aeii aeij aeik aeil aeim
-aein aeio aeip aeiq aeir aeis aeit aeiu aeiv aeiw aeix aeiy aeiz aeja aejb
-aejc aejd aeje aejf aejg aejh aeji aejj aejk aejl aejm aejn aejo aejp aejq
-aejr aejs aejt aeju aejv aejw aejx aejy aejz aeka aekb aekc aekd aeke aekf
-aekg aekh aeki aekj aekk aekl aekm aekn aeko aekp aekq aekr aeks aekt aeku
-aekv aekw aekx aeky aekz aela aelb aelc aeld aele aelf aelg aelh aeli aelj
-aelk aell aelm aeln aelo aelp aelq aelr aels aelt aelu aelv aelw aelx aely
-aelz aema aemb aemc aemd aeme aemf aemg aemh aemi aemj aemk aeml aemm aemn
-aemo aemp aemq aemr aems aemt aemu aemv aemw aemx aemy aemz aena aenb aenc
-aend aene aenf aeng aenh aeni aenj aenk aenl aenm aenn aeno aenp aenq aenr
-aens aent aenu aenv aenw aenx aeny aenz aeoa aeob aeoc aeod aeoe aeof aeog
-aeoh aeoi aeoj aeok aeol aeom aeon aeoo aeop aeoq aeor aeos aeot aeou aeov
-aeow aeox aeoy aeoz aepa aepb aepc aepd aepe aepf aepg aeph aepi aepj aepk
-aepl aepm aepn aepo aepp aepq aepr aeps aept aepu aepv aepw aepx aepy aepz
-aeqa aeqb aeqc aeqd aeqe aeqf aeqg aeqh aeqi aeqj aeqk aeql aeqm aeqn aeqo
-aeqp aeqq aeqr aeqs aeqt aequ aeqv aeqw aeqx aeqy aeqz aera aerb aerc aerd
-aere aerf aerg aerh aeri aerj aerk aerl aerm aern aero aerp aerq aerr aers
-aert aeru aerv aerw aerx aery aerz aesa aesb aesc aesd aese aesf aesg aesh
-aesi aesj aesk aesl aesm aesn aeso aesp aesq aesr aess aest aesu aesv aesw
-aesx aesy aesz aeta aetb aetc aetd aete aetf aetg aeth aeti aetj aetk aetl
-aetm aetn aeto aetp aetq aetr aets aett aetu aetv aetw aetx aety aetz aeua
-aeub aeuc aeud aeue aeuf aeug aeuh aeui aeuj aeuk aeul aeum aeun aeuo aeup
-aeuq aeur aeus aeut aeuu aeuv aeuw aeux aeuy aeuz aeva aevb aevc aevd aeve
-aevf aevg aevh aevi aevj aevk aevl aevm aevn aevo aevp aevq aevr aevs aevt
-aevu aevv aevw aevx aevy aevz aewa aewb aewc aewd aewe aewf aewg aewh aewi
-aewj aewk aewl aewm aewn aewo aewp aewq aewr aews aewt aewu aewv aeww aewx
-aewy aewz aexa aexb aexc aexd aexe aexf aexg aexh aexi aexj aexk aexl aexm
-aexn aexo aexp aexq aexr aexs aext aexu aexv aexw aexx aexy aexz aeya aeyb
-aeyc aeyd aeye aeyf aeyg aeyh aeyi aeyj aeyk aeyl aeym aeyn aeyo aeyp aeyq
-aeyr aeys aeyt aeyu aeyv aeyw aeyx aeyy aeyz aeza aezb aezc aezd aeze aezf
-aezg aezh aezi aezj aezk aezl aezm aezn aezo aezp aezq aezr aezs aezt aezu
-aezv aezw aezx aezy aezz afaa afab afac afad afae afaf afag afah afai afaj
-afak afal afam afan afao afap afaq afar afas afat afau afav afaw afax afay
-afaz afba afbb afbc afbd afbe afbf afbg afbh afbi afbj afbk afbl afbm afbn
-afbo afbp afbq afbr afbs afbt afbu afbv afbw afbx afby afbz afca afcb afcc
-afcd afce afcf afcg afch afci afcj afck afcl afcm afcn afco afcp afcq afcr
-afcs afct afcu afcv afcw afcx afcy afcz afda afdb afdc afdd afde afdf afdg
-afdh afdi afdj afdk afdl afdm afdn afdo afdp afdq afdr afds afdt afdu afdv
-afdw afdx afdy afdz afea afeb afec afed afee afef afeg afeh afei afej afek
-afel afem afen afeo afep afeq afer afes afet afeu afev afew afex afey afez
-affa affb affc affd affe afff affg affh affi affj affk affl affm affn affo
-affp affq affr affs afft affu affv affw affx affy affz afga afgb afgc afgd
-afge afgf afgg afgh afgi afgj afgk afgl afgm afgn afgo afgp afgq afgr afgs
-afgt afgu afgv afgw afgx afgy afgz afha afhb afhc afhd afhe afhf afhg afhh
-afhi afhj afhk afhl afhm afhn afho afhp afhq afhr afhs afht afhu afhv afhw
-afhx afhy afhz afia afib afic afid afie afif afig afih afii afij afik afil
-afim afin afio afip afiq afir afis afit afiu afiv afiw afix afiy afiz afja
-afjb afjc afjd afje afjf afjg afjh afji afjj afjk afjl afjm afjn afjo afjp
-afjq afjr afjs afjt afju afjv afjw afjx afjy afjz afka afkb afkc afkd afke
-afkf afkg afkh afki afkj afkk afkl afkm afkn afko afkp afkq afkr afks afkt
-afku afkv afkw afkx afky afkz afla aflb aflc afld afle aflf aflg aflh afli
-aflj aflk afll aflm afln aflo aflp aflq aflr afls aflt aflu aflv aflw aflx
-afly aflz afma afmb afmc afmd afme afmf afmg afmh afmi afmj afmk afml afmm
-afmn afmo afmp afmq afmr afms afmt afmu afmv afmw afmx afmy afmz afna afnb
-afnc afnd afne afnf afng afnh afni afnj afnk afnl afnm afnn afno afnp afnq
-afnr afns afnt afnu afnv afnw afnx afny afnz afoa afob afoc afod afoe afof
-afog afoh afoi afoj afok afol afom afon afoo afop afoq afor afos afot afou
-afov afow afox afoy afoz afpa afpb afpc afpd afpe afpf afpg afph afpi afpj
-afpk afpl afpm afpn afpo afpp afpq afpr afps afpt afpu afpv afpw afpx afpy
-afpz afqa afqb afqc afqd afqe afqf afqg afqh afqi afqj afqk afql afqm afqn
-afqo afqp afqq afqr afqs afqt afqu afqv afqw afqx afqy afqz afra afrb afrc
-afrd afre afrf afrg afrh afri afrj afrk afrl afrm afrn afro afrp afrq afrr
-afrs afrt afru afrv afrw afrx afry afrz afsa afsb afsc afsd afse afsf afsg
-afsh afsi afsj afsk afsl afsm afsn afso afsp afsq afsr afss afst afsu afsv
-afsw afsx afsy afsz afta aftb aftc aftd afte aftf aftg afth afti aftj aftk
-aftl aftm aftn afto aftp aftq aftr afts aftt aftu aftv aftw aftx afty aftz
-afua afub afuc afud afue afuf afug afuh afui afuj afuk aful afum afun afuo
-afup afuq afur afus afut afuu afuv afuw afux afuy afuz afva afvb afvc afvd
-afve afvf afvg afvh afvi afvj afvk afvl afvm afvn afvo afvp afvq afvr afvs
-afvt afvu afvv afvw afvx afvy afvz afwa afwb afwc afwd afwe afwf afwg afwh
-afwi afwj afwk afwl afwm afwn afwo afwp afwq afwr afws afwt afwu afwv afww
-afwx afwy afwz afxa afxb afxc afxd afxe afxf afxg afxh afxi afxj afxk afxl
-afxm afxn afxo afxp afxq afxr afxs afxt afxu afxv afxw afxx afxy afxz afya
-afyb afyc afyd afye afyf afyg afyh afyi afyj afyk afyl afym afyn afyo afyp
-afyq afyr afys afyt afyu afyv afyw afyx afyy afyz afza afzb afzc afzd afze
-afzf afzg afzh afzi afzj afzk afzl afzm afzn afzo afzp afzq afzr afzs afzt
-afzu afzv afzw afzx afzy afzz agaa agab agac agad agae agaf agag agah agai
-agaj agak agal agam agan agao agap agaq agar agas agat agau agav agaw agax
-agay agaz agba agbb agbc agbd agbe agbf agbg agbh agbi agbj agbk agbl agbm
-agbn agbo agbp agbq agbr agbs agbt agbu agbv agbw agbx agby agbz agca agcb
-agcc agcd agce agcf agcg agch agci agcj agck agcl agcm agcn agco agcp agcq
-agcr agcs agct agcu agcv agcw agcx agcy agcz agda agdb agdc agdd agde agdf
-agdg agdh agdi agdj agdk agdl agdm agdn agdo agdp agdq agdr agds agdt agdu
-agdv agdw agdx agdy agdz agea ageb agec aged agee agef ageg ageh agei agej
-agek agel agem agen ageo agep ageq ager ages aget ageu agev agew agex agey
-agez agfa agfb agfc agfd agfe agff agfg agfh agfi agfj agfk agfl agfm agfn
-agfo agfp agfq agfr agfs agft agfu agfv agfw agfx agfy agfz agga aggb aggc
-aggd agge aggf aggg aggh aggi aggj aggk aggl aggm aggn aggo aggp aggq aggr
-aggs aggt aggu aggv aggw aggx aggy aggz agha aghb aghc aghd aghe aghf aghg
-aghh aghi aghj aghk aghl aghm aghn agho aghp aghq aghr aghs aght aghu aghv
-aghw aghx aghy aghz agia agib agic agid agie agif agig agih agii agij agik
-agil agim agin agio agip agiq agir agis agit agiu agiv agiw agix agiy agiz
-agja agjb agjc agjd agje agjf agjg agjh agji agjj agjk agjl agjm agjn agjo
-agjp agjq agjr agjs agjt agju agjv agjw agjx agjy agjz agka agkb agkc agkd
-agke agkf agkg agkh agki agkj agkk agkl agkm agkn agko agkp agkq agkr agks
-agkt agku agkv agkw agkx agky agkz agla aglb aglc agld agle aglf aglg aglh
-agli aglj aglk agll aglm agln aglo aglp aglq aglr agls aglt aglu aglv aglw
-aglx agly aglz agma agmb agmc agmd agme agmf agmg agmh agmi agmj agmk agml
-agmm agmn agmo agmp agmq agmr agms agmt agmu agmv agmw agmx agmy agmz agna
-agnb agnc agnd agne agnf agng agnh agni agnj agnk agnl agnm agnn agno agnp
-agnq agnr agns agnt agnu agnv agnw agnx agny agnz agoa agob agoc agod agoe
-agof agog agoh agoi agoj agok agol agom agon agoo agop agoq agor agos agot
-agou agov agow agox agoy agoz agpa agpb agpc agpd agpe agpf agpg agph agpi
-agpj agpk agpl agpm agpn agpo agpp agpq agpr agps agpt agpu agpv agpw agpx
-agpy agpz agqa agqb agqc agqd agqe agqf agqg agqh agqi agqj agqk agql agqm
-agqn agqo agqp agqq agqr agqs agqt agqu agqv agqw agqx agqy agqz agra agrb
-agrc agrd agre agrf agrg agrh agri agrj agrk agrl agrm agrn agro agrp agrq
-agrr agrs agrt agru agrv agrw agrx agry agrz agsa agsb agsc agsd agse agsf
-agsg agsh agsi agsj agsk agsl agsm agsn agso agsp agsq agsr agss agst agsu
-agsv agsw agsx agsy agsz agta agtb agtc agtd agte agtf agtg agth agti agtj
-agtk agtl agtm agtn agto agtp agtq agtr agts agtt agtu agtv agtw agtx agty
-agtz agua agub aguc agud ague aguf agug aguh agui aguj aguk agul agum agun
-aguo agup aguq agur agus agut aguu aguv aguw agux aguy aguz agva agvb agvc
-agvd agve agvf agvg agvh agvi agvj agvk agvl agvm agvn agvo agvp agvq agvr
-agvs agvt agvu agvv agvw agvx agvy agvz agwa agwb agwc agwd agwe agwf agwg
-agwh agwi agwj agwk agwl agwm agwn agwo agwp agwq agwr agws agwt agwu agwv
-agww agwx agwy agwz agxa agxb agxc agxd agxe agxf agxg agxh agxi agxj agxk
-agxl agxm agxn agxo agxp agxq agxr agxs agxt agxu agxv agxw agxx agxy agxz
-agya agyb agyc agyd agye agyf agyg agyh agyi agyj agyk agyl agym agyn agyo
-agyp agyq agyr agys agyt agyu agyv agyw agyx agyy agyz agza agzb agzc agzd
-agze agzf agzg agzh agzi agzj agzk agzl agzm agzn agzo agzp agzq agzr agzs
-agzt agzu agzv agzw agzx agzy agzz ahaa ahab ahac ahad ahae ahaf ahag ahah
-ahai ahaj ahak ahal aham ahan ahao ahap ahaq ahar ahas ahat ahau ahav ahaw
-ahax ahay ahaz ahba ahbb ahbc ahbd ahbe ahbf ahbg ahbh ahbi ahbj ahbk ahbl
-ahbm ahbn ahbo ahbp ahbq ahbr ahbs ahbt ahbu ahbv ahbw ahbx ahby ahbz ahca
-ahcb ahcc ahcd ahce ahcf ahcg ahch ahci ahcj ahck ahcl ahcm ahcn ahco ahcp
-ahcq ahcr ahcs ahct ahcu ahcv ahcw ahcx ahcy ahcz ahda ahdb ahdc ahdd ahde
-ahdf ahdg ahdh ahdi ahdj ahdk ahdl ahdm ahdn ahdo ahdp ahdq ahdr ahds ahdt
-ahdu ahdv ahdw ahdx ahdy ahdz ahea aheb ahec ahed ahee ahef aheg aheh ahei
-ahej ahek ahel ahem ahen aheo ahep aheq aher ahes ahet aheu ahev ahew ahex
-ahey ahez ahfa ahfb ahfc ahfd ahfe ahff ahfg ahfh ahfi ahfj ahfk ahfl ahfm
-ahfn ahfo ahfp ahfq ahfr ahfs ahft ahfu ahfv ahfw ahfx ahfy ahfz ahga ahgb
-ahgc ahgd ahge ahgf ahgg ahgh ahgi ahgj ahgk ahgl ahgm ahgn ahgo ahgp ahgq
-ahgr ahgs ahgt ahgu ahgv ahgw ahgx ahgy ahgz ahha ahhb ahhc ahhd ahhe ahhf
-ahhg ahhh ahhi ahhj ahhk ahhl ahhm ahhn ahho ahhp ahhq ahhr ahhs ahht ahhu
-ahhv ahhw ahhx ahhy ahhz ahia ahib ahic ahid ahie ahif ahig ahih ahii ahij
-ahik ahil ahim ahin ahio ahip ahiq ahir ahis ahit ahiu ahiv ahiw ahix ahiy
-ahiz ahja ahjb ahjc ahjd ahje ahjf ahjg ahjh ahji ahjj ahjk ahjl ahjm ahjn
-ahjo ahjp ahjq ahjr ahjs ahjt ahju ahjv ahjw ahjx ahjy ahjz ahka ahkb ahkc
-ahkd ahke ahkf ahkg ahkh ahki ahkj ahkk ahkl ahkm ahkn ahko ahkp ahkq ahkr
-ahks ahkt ahku ahkv ahkw ahkx ahky ahkz ahla ahlb ahlc ahld ahle ahlf ahlg
-ahlh ahli ahlj ahlk ahll ahlm ahln ahlo ahlp ahlq ahlr ahls ahlt ahlu ahlv
-ahlw ahlx ahly ahlz ahma ahmb ahmc ahmd ahme ahmf ahmg ahmh ahmi ahmj ahmk
-ahml ahmm ahmn ahmo ahmp ahmq ahmr ahms ahmt ahmu ahmv ahmw ahmx ahmy ahmz
-ahna ahnb ahnc ahnd ahne ahnf ahng ahnh ahni ahnj ahnk ahnl ahnm ahnn ahno
-ahnp ahnq ahnr ahns ahnt ahnu ahnv ahnw ahnx ahny ahnz ahoa ahob ahoc ahod
-ahoe ahof ahog ahoh ahoi ahoj ahok ahol ahom ahon ahoo ahop ahoq ahor ahos
-ahot ahou ahov ahow ahox ahoy ahoz ahpa ahpb ahpc ahpd ahpe ahpf ahpg ahph
-ahpi ahpj ahpk ahpl ahpm ahpn ahpo ahpp ahpq ahpr ahps ahpt ahpu ahpv ahpw
-ahpx ahpy ahpz ahqa ahqb ahqc ahqd ahqe ahqf ahqg ahqh ahqi ahqj ahqk ahql
-ahqm ahqn ahqo ahqp ahqq ahqr ahqs ahqt ahqu ahqv ahqw ahqx ahqy ahqz ahra
-ahrb ahrc ahrd ahre ahrf ahrg ahrh ahri ahrj ahrk ahrl ahrm ahrn ahro ahrp
-ahrq ahrr ahrs ahrt ahru ahrv ahrw ahrx ahry ahrz ahsa ahsb ahsc ahsd ahse
-ahsf ahsg ahsh ahsi ahsj ahsk ahsl ahsm ahsn ahso ahsp ahsq ahsr ahss ahst
-ahsu ahsv ahsw ahsx ahsy ahsz ahta ahtb ahtc ahtd ahte ahtf ahtg ahth ahti
-ahtj ahtk ahtl ahtm ahtn ahto ahtp ahtq ahtr ahts ahtt ahtu ahtv ahtw ahtx
-ahty ahtz ahua ahub ahuc ahud ahue ahuf ahug ahuh ahui ahuj ahuk ahul ahum
-ahun ahuo ahup ahuq ahur ahus ahut ahuu ahuv ahuw ahux ahuy ahuz ahva ahvb
-ahvc ahvd ahve ahvf ahvg ahvh ahvi ahvj ahvk ahvl ahvm ahvn ahvo ahvp ahvq
-ahvr ahvs ahvt ahvu ahvv ahvw ahvx ahvy ahvz ahwa ahwb ahwc ahwd ahwe ahwf
-ahwg ahwh ahwi ahwj ahwk ahwl ahwm ahwn ahwo ahwp ahwq ahwr ahws ahwt ahwu
-ahwv ahww ahwx ahwy ahwz ahxa ahxb ahxc ahxd ahxe ahxf ahxg ahxh ahxi ahxj
-ahxk ahxl ahxm ahxn ahxo ahxp ahxq ahxr ahxs ahxt ahxu ahxv ahxw ahxx ahxy
-ahxz ahya ahyb ahyc ahyd ahye ahyf ahyg ahyh ahyi ahyj ahyk ahyl ahym ahyn
-ahyo ahyp ahyq ahyr ahys ahyt ahyu ahyv ahyw ahyx ahyy ahyz ahza ahzb ahzc
-ahzd ahze ahzf ahzg ahzh ahzi ahzj ahzk ahzl ahzm ahzn ahzo ahzp ahzq ahzr
-ahzs ahzt ahzu ahzv ahzw ahzx ahzy ahzz aiaa aiab aiac aiad aiae aiaf aiag
-aiah aiai aiaj aiak aial aiam aian aiao aiap aiaq aiar aias aiat aiau aiav
-aiaw aiax aiay aiaz aiba aibb aibc aibd aibe aibf aibg aibh aibi aibj aibk
-aibl aibm aibn aibo aibp aibq aibr aibs aibt aibu aibv aibw aibx aiby aibz
-aica aicb aicc aicd aice aicf aicg aich aici aicj aick aicl aicm aicn aico
-aicp aicq aicr aics aict aicu aicv aicw aicx aicy aicz aida aidb aidc aidd
-aide aidf aidg aidh aidi aidj aidk aidl aidm aidn aido aidp aidq aidr aids
-aidt aidu aidv aidw aidx aidy aidz aiea aieb aiec aied aiee aief aieg aieh
-aiei aiej aiek aiel aiem aien aieo aiep aieq aier aies aiet aieu aiev aiew
-aiex aiey aiez aifa aifb aifc aifd aife aiff aifg aifh aifi aifj aifk aifl
-aifm aifn aifo aifp aifq aifr aifs aift aifu aifv aifw aifx aify aifz aiga
-aigb aigc aigd aige aigf aigg aigh aigi aigj aigk aigl aigm aign aigo aigp
-aigq aigr aigs aigt aigu aigv aigw aigx aigy aigz aiha aihb aihc aihd aihe
-aihf aihg aihh aihi aihj aihk aihl aihm aihn aiho aihp aihq aihr aihs aiht
-aihu aihv aihw aihx aihy aihz aiia aiib aiic aiid aiie aiif aiig aiih aiii
-aiij aiik aiil aiim aiin aiio aiip aiiq aiir aiis aiit aiiu aiiv aiiw aiix
-aiiy aiiz aija aijb aijc aijd aije aijf aijg aijh aiji aijj aijk aijl aijm
-aijn aijo aijp aijq aijr aijs aijt aiju aijv aijw aijx aijy aijz aika aikb
-aikc aikd aike aikf aikg aikh aiki aikj aikk aikl aikm aikn aiko aikp aikq
-aikr aiks aikt aiku aikv aikw aikx aiky aikz aila ailb ailc aild aile ailf
-ailg ailh aili ailj ailk aill ailm ailn ailo ailp ailq ailr ails ailt ailu
-ailv ailw ailx aily ailz aima aimb aimc aimd aime aimf aimg aimh aimi aimj
-aimk aiml aimm aimn aimo aimp aimq aimr aims aimt aimu aimv aimw aimx aimy
-aimz aina ainb ainc aind aine ainf aing ainh aini ainj aink ainl ainm ainn
-aino ainp ainq ainr ains aint ainu ainv ainw ainx ainy ainz aioa aiob aioc
-aiod aioe aiof aiog aioh aioi aioj aiok aiol aiom aion aioo aiop aioq aior
-aios aiot aiou aiov aiow aiox aioy aioz aipa aipb aipc aipd aipe aipf aipg
-aiph aipi aipj aipk aipl aipm aipn aipo aipp aipq aipr aips aipt aipu aipv
-aipw aipx aipy aipz aiqa aiqb aiqc aiqd aiqe aiqf aiqg aiqh aiqi aiqj aiqk
-aiql aiqm aiqn aiqo aiqp aiqq aiqr aiqs aiqt aiqu aiqv aiqw aiqx aiqy aiqz
-aira airb airc aird aire airf airg airh airi airj airk airl airm airn airo
-airp airq airr airs airt airu airv airw airx airy airz aisa aisb aisc aisd
-aise aisf aisg aish aisi aisj aisk aisl aism aisn aiso aisp aisq aisr aiss
-aist aisu aisv aisw aisx aisy aisz aita aitb aitc aitd aite aitf aitg aith
-aiti aitj aitk aitl aitm aitn aito aitp aitq aitr aits aitt aitu aitv aitw
-aitx aity aitz aiua aiub aiuc aiud aiue aiuf aiug aiuh aiui aiuj aiuk aiul
-aium aiun aiuo aiup aiuq aiur aius aiut aiuu aiuv aiuw aiux aiuy aiuz aiva
-aivb aivc aivd aive aivf aivg aivh aivi aivj aivk aivl aivm aivn aivo aivp
-aivq aivr aivs aivt aivu aivv aivw aivx aivy aivz aiwa aiwb aiwc aiwd aiwe
-aiwf aiwg aiwh aiwi aiwj aiwk aiwl aiwm aiwn aiwo aiwp aiwq aiwr aiws aiwt
-aiwu aiwv aiww aiwx aiwy aiwz aixa aixb aixc aixd aixe aixf aixg aixh aixi
-aixj aixk aixl aixm aixn aixo aixp aixq aixr aixs aixt aixu aixv aixw aixx
-aixy aixz aiya aiyb aiyc aiyd aiye aiyf aiyg aiyh aiyi aiyj aiyk aiyl aiym
-aiyn aiyo aiyp aiyq aiyr aiys aiyt aiyu aiyv aiyw aiyx aiyy aiyz aiza aizb
-aizc aizd aize aizf aizg aizh aizi aizj aizk aizl aizm aizn aizo aizp aizq
-aizr aizs aizt aizu aizv aizw aizx aizy aizz ajaa ajab ajac ajad ajae ajaf
-ajag ajah ajai ajaj ajak ajal ajam ajan ajao ajap ajaq ajar ajas ajat ajau
-ajav ajaw ajax ajay ajaz ajba ajbb ajbc ajbd ajbe ajbf ajbg ajbh ajbi ajbj
-ajbk ajbl ajbm ajbn ajbo ajbp ajbq ajbr ajbs ajbt ajbu ajbv ajbw ajbx ajby
-ajbz ajca ajcb ajcc ajcd ajce ajcf ajcg ajch ajci ajcj ajck ajcl ajcm ajcn
-ajco ajcp ajcq ajcr ajcs ajct ajcu ajcv ajcw ajcx ajcy ajcz ajda ajdb ajdc
-ajdd ajde ajdf ajdg ajdh ajdi ajdj ajdk ajdl ajdm ajdn ajdo ajdp ajdq ajdr
-ajds ajdt ajdu ajdv ajdw ajdx ajdy ajdz ajea ajeb ajec ajed ajee ajef ajeg
-ajeh ajei ajej ajek ajel ajem ajen ajeo ajep ajeq ajer ajes ajet ajeu ajev
-ajew ajex ajey ajez ajfa ajfb ajfc ajfd ajfe ajff ajfg ajfh ajfi ajfj ajfk
-ajfl ajfm ajfn ajfo ajfp ajfq ajfr ajfs ajft ajfu ajfv ajfw ajfx ajfy ajfz
-ajga ajgb ajgc ajgd ajge ajgf ajgg ajgh ajgi ajgj ajgk ajgl ajgm ajgn ajgo
-ajgp ajgq ajgr ajgs ajgt ajgu ajgv ajgw ajgx ajgy ajgz ajha ajhb ajhc ajhd
-ajhe ajhf ajhg ajhh ajhi ajhj ajhk ajhl ajhm ajhn ajho ajhp ajhq ajhr ajhs
-ajht ajhu ajhv ajhw ajhx ajhy ajhz ajia ajib ajic ajid ajie ajif ajig ajih
-ajii ajij ajik ajil ajim ajin ajio ajip ajiq ajir ajis ajit ajiu ajiv ajiw
-ajix ajiy ajiz ajja ajjb ajjc ajjd ajje ajjf ajjg ajjh ajji ajjj ajjk ajjl
-ajjm ajjn ajjo ajjp ajjq ajjr ajjs ajjt ajju ajjv ajjw ajjx ajjy ajjz ajka
-ajkb ajkc ajkd ajke ajkf ajkg ajkh ajki ajkj ajkk ajkl ajkm ajkn ajko ajkp
-ajkq ajkr ajks ajkt ajku ajkv ajkw ajkx ajky ajkz ajla ajlb ajlc ajld ajle
-ajlf ajlg ajlh ajli ajlj ajlk ajll ajlm ajln ajlo ajlp ajlq ajlr ajls ajlt
-ajlu ajlv ajlw ajlx ajly ajlz ajma ajmb ajmc ajmd ajme ajmf ajmg ajmh ajmi
-ajmj ajmk ajml ajmm ajmn ajmo ajmp ajmq ajmr ajms ajmt ajmu ajmv ajmw ajmx
-ajmy ajmz ajna ajnb ajnc ajnd ajne ajnf ajng ajnh ajni ajnj ajnk ajnl ajnm
-ajnn ajno ajnp ajnq ajnr ajns ajnt ajnu ajnv ajnw ajnx ajny ajnz ajoa ajob
-ajoc ajod ajoe ajof ajog ajoh ajoi ajoj ajok ajol ajom ajon ajoo ajop ajoq
-ajor ajos ajot ajou ajov ajow ajox ajoy ajoz ajpa ajpb ajpc ajpd ajpe ajpf
-ajpg ajph ajpi ajpj ajpk ajpl ajpm ajpn ajpo ajpp ajpq ajpr ajps ajpt ajpu
-ajpv ajpw ajpx ajpy ajpz ajqa ajqb ajqc ajqd ajqe ajqf ajqg ajqh ajqi ajqj
-ajqk ajql ajqm ajqn ajqo ajqp ajqq ajqr ajqs ajqt ajqu ajqv ajqw ajqx ajqy
-ajqz ajra ajrb ajrc ajrd ajre ajrf ajrg ajrh ajri ajrj ajrk ajrl ajrm ajrn
-ajro ajrp ajrq ajrr ajrs ajrt ajru ajrv ajrw ajrx ajry ajrz ajsa ajsb ajsc
-ajsd ajse ajsf ajsg ajsh ajsi ajsj ajsk ajsl ajsm ajsn ajso ajsp ajsq ajsr
-ajss ajst ajsu ajsv ajsw ajsx ajsy ajsz ajta ajtb ajtc ajtd ajte ajtf ajtg
-ajth ajti ajtj ajtk ajtl ajtm ajtn ajto ajtp ajtq ajtr ajts ajtt ajtu ajtv
-ajtw ajtx ajty ajtz ajua ajub ajuc ajud ajue ajuf ajug ajuh ajui ajuj ajuk
-ajul ajum ajun ajuo ajup ajuq ajur ajus ajut ajuu ajuv ajuw ajux ajuy ajuz
-ajva ajvb ajvc ajvd ajve ajvf ajvg ajvh ajvi ajvj ajvk ajvl ajvm ajvn ajvo
-ajvp ajvq ajvr ajvs ajvt ajvu ajvv ajvw ajvx ajvy ajvz ajwa ajwb ajwc ajwd
-ajwe ajwf ajwg ajwh ajwi ajwj ajwk ajwl ajwm ajwn ajwo ajwp ajwq ajwr ajws
-ajwt ajwu ajwv ajww ajwx ajwy ajwz ajxa ajxb ajxc ajxd ajxe ajxf ajxg ajxh
-ajxi ajxj ajxk ajxl ajxm ajxn ajxo ajxp ajxq ajxr ajxs ajxt ajxu ajxv ajxw
-ajxx ajxy ajxz ajya ajyb ajyc ajyd ajye ajyf ajyg ajyh ajyi ajyj ajyk ajyl
-ajym ajyn ajyo ajyp ajyq ajyr ajys ajyt ajyu ajyv ajyw ajyx ajyy ajyz ajza
-ajzb ajzc ajzd ajze ajzf ajzg ajzh ajzi ajzj ajzk ajzl ajzm ajzn ajzo ajzp
-ajzq ajzr ajzs ajzt ajzu ajzv ajzw ajzx ajzy ajzz akaa akab akac akad akae
-akaf akag akah akai akaj akak akal akam akan akao akap akaq akar akas akat
-akau akav akaw akax akay akaz akba akbb akbc akbd akbe akbf akbg akbh akbi
-akbj akbk akbl akbm akbn akbo akbp akbq akbr akbs akbt akbu akbv akbw akbx
-akby akbz akca akcb akcc akcd akce akcf akcg akch akci akcj akck akcl akcm
-akcn akco akcp akcq akcr akcs akct akcu akcv akcw akcx akcy akcz akda akdb
-akdc akdd akde akdf akdg akdh akdi akdj akdk akdl akdm akdn akdo akdp akdq
-akdr akds akdt akdu akdv akdw akdx akdy akdz akea akeb akec aked akee akef
-akeg akeh akei akej akek akel akem aken akeo akep akeq aker akes aket akeu
-akev akew akex akey akez akfa akfb akfc akfd akfe akff akfg akfh akfi akfj
-akfk akfl akfm akfn akfo akfp akfq akfr akfs akft akfu akfv akfw akfx akfy
-akfz akga akgb akgc akgd akge akgf akgg akgh akgi akgj akgk akgl akgm akgn
-akgo akgp akgq akgr akgs akgt akgu akgv akgw akgx akgy akgz akha akhb akhc
-akhd akhe akhf akhg akhh akhi akhj akhk akhl akhm akhn akho akhp akhq akhr
-akhs akht akhu akhv akhw akhx akhy akhz akia akib akic akid akie akif akig
-akih akii akij akik akil akim akin akio akip akiq akir akis akit akiu akiv
-akiw akix akiy akiz akja akjb akjc akjd akje akjf akjg akjh akji akjj akjk
-akjl akjm akjn akjo akjp akjq akjr akjs akjt akju akjv akjw akjx akjy akjz
-akka akkb akkc akkd akke akkf akkg akkh akki akkj akkk akkl akkm akkn akko
-akkp akkq akkr akks akkt akku akkv akkw akkx akky akkz akla aklb aklc akld
-akle aklf aklg aklh akli aklj aklk akll aklm akln aklo aklp aklq aklr akls
-aklt aklu aklv aklw aklx akly aklz akma akmb akmc akmd akme akmf akmg akmh
-akmi akmj akmk akml akmm akmn akmo akmp akmq akmr akms akmt akmu akmv akmw
-akmx akmy akmz akna aknb aknc aknd akne aknf akng aknh akni aknj aknk aknl
-aknm aknn akno aknp aknq aknr akns aknt aknu aknv aknw aknx akny aknz akoa
-akob akoc akod akoe akof akog akoh akoi akoj akok akol akom akon akoo akop
-akoq akor akos akot akou akov akow akox akoy akoz akpa akpb akpc akpd akpe
-akpf akpg akph akpi akpj akpk akpl akpm akpn akpo akpp akpq akpr akps akpt
-akpu akpv akpw akpx akpy akpz akqa akqb akqc akqd akqe akqf akqg akqh akqi
-akqj akqk akql akqm akqn akqo akqp akqq akqr akqs akqt akqu akqv akqw akqx
-akqy akqz akra akrb akrc akrd akre akrf akrg akrh akri akrj akrk akrl akrm
-akrn akro akrp akrq akrr akrs akrt akru akrv akrw akrx akry akrz aksa aksb
-aksc aksd akse aksf aksg aksh aksi aksj aksk aksl aksm aksn akso aksp aksq
-aksr akss akst aksu aksv aksw aksx aksy aksz akta aktb aktc aktd akte aktf
-aktg akth akti aktj aktk aktl aktm aktn akto aktp aktq aktr akts aktt aktu
-aktv aktw aktx akty aktz akua akub akuc akud akue akuf akug akuh akui akuj
-akuk akul akum akun akuo akup akuq akur akus akut akuu akuv akuw akux akuy
-akuz akva akvb akvc akvd akve akvf akvg akvh akvi akvj akvk akvl akvm akvn
-akvo akvp akvq akvr akvs akvt akvu akvv akvw akvx akvy akvz akwa akwb akwc
-akwd akwe akwf akwg akwh akwi akwj akwk akwl akwm akwn akwo akwp akwq akwr
-akws akwt akwu akwv akww akwx akwy akwz akxa akxb akxc akxd akxe akxf akxg
-akxh akxi akxj akxk akxl akxm akxn akxo akxp akxq akxr akxs akxt akxu akxv
-akxw akxx akxy akxz akya akyb akyc akyd akye akyf akyg akyh akyi akyj akyk
-akyl akym akyn akyo akyp akyq akyr akys akyt akyu akyv akyw akyx akyy akyz
-akza akzb akzc akzd akze akzf akzg akzh akzi akzj akzk akzl akzm akzn akzo
-akzp akzq akzr akzs akzt akzu akzv akzw akzx akzy akzz alaa alab alac alad
-alae alaf alag alah alai alaj alak alal alam alan alao alap alaq alar alas
-alat alau alav alaw alax alay alaz alba albb albc albd albe albf albg albh
-albi albj albk albl albm albn albo albp albq albr albs albt albu albv albw
diff --git a/camlp4/test/fixtures/idents2 b/camlp4/test/fixtures/idents2
deleted file mode 100644 (file)
index ef07f3e..0000000
+++ /dev/null
@@ -1,1219 +0,0 @@
-aaaa aaab aaac aaad aaae aaaf aaag aaah aaai aaaj aaak aaal aaam aaan aaao
-aaap aaaq aaar aaas aaat aaau aaav aaaw aaax aaay aaaz aaba aabb aabc aabd
-aabe aabf aabg aabh aabi aabj aabk aabl aabm aabn aabo aabp aabq aabr aabs
-aabt aabu aabv aabw aabx aaby aabz aaca aacb aacc aacd aace aacf aacg aach
-aaci aacj aack aacl aacm aacn aaco aacp aacq aacr aacs aact aacu aacv aacw
-aacx aacy aacz aada aadb aadc aadd aade aadf aadg aadh aadi aadj aadk aadl
-aadm aadn aado aadp aadq aadr aads aadt aadu aadv aadw aadx aady aadz aaea
-aaeb aaec aaed aaee aaef aaeg aaeh aaei aaej aaek aael aaem aaen aaeo aaep
-aaeq aaer aaes aaet aaeu aaev aaew aaex aaey aaez aafa aafb aafc aafd aafe
-aaff aafg aafh aafi aafj aafk aafl aafm aafn aafo aafp aafq aafr aafs aaft
-aafu aafv aafw aafx aafy aafz aaga aagb aagc aagd aage aagf aagg aagh aagi
-aagj aagk aagl aagm aagn aago aagp aagq aagr aags aagt aagu aagv aagw aagx
-aagy aagz aaha aahb aahc aahd aahe aahf aahg aahh aahi aahj aahk aahl aahm
-aahn aaho aahp aahq aahr aahs aaht aahu aahv aahw aahx aahy aahz aaia aaib
-aaic aaid aaie aaif aaig aaih aaii aaij aaik aail aaim aain aaio aaip aaiq
-aair aais aait aaiu aaiv aaiw aaix aaiy aaiz aaja aajb aajc aajd aaje aajf
-aajg aajh aaji aajj aajk aajl aajm aajn aajo aajp aajq aajr aajs aajt aaju
-aajv aajw aajx aajy aajz aaka aakb aakc aakd aake aakf aakg aakh aaki aakj
-aakk aakl aakm aakn aako aakp aakq aakr aaks aakt aaku aakv aakw aakx aaky
-aakz aala aalb aalc aald aale aalf aalg aalh aali aalj aalk aall aalm aaln
-aalo aalp aalq aalr aals aalt aalu aalv aalw aalx aaly aalz aama aamb aamc
-aamd aame aamf aamg aamh aami aamj aamk aaml aamm aamn aamo aamp aamq aamr
-aams aamt aamu aamv aamw aamx aamy aamz aana aanb aanc aand aane aanf aang
-aanh aani aanj aank aanl aanm aann aano aanp aanq aanr aans aant aanu aanv
-aanw aanx aany aanz aaoa aaob aaoc aaod aaoe aaof aaog aaoh aaoi aaoj aaok
-aaol aaom aaon aaoo aaop aaoq aaor aaos aaot aaou aaov aaow aaox aaoy aaoz
-aapa aapb aapc aapd aape aapf aapg aaph aapi aapj aapk aapl aapm aapn aapo
-aapp aapq aapr aaps aapt aapu aapv aapw aapx aapy aapz aaqa aaqb aaqc aaqd
-aaqe aaqf aaqg aaqh aaqi aaqj aaqk aaql aaqm aaqn aaqo aaqp aaqq aaqr aaqs
-aaqt aaqu aaqv aaqw aaqx aaqy aaqz aara aarb aarc aard aare aarf aarg aarh
-aari aarj aark aarl aarm aarn aaro aarp aarq aarr aars aart aaru aarv aarw
-aarx aary aarz aasa aasb aasc aasd aase aasf aasg aash aasi aasj aask aasl
-aasm aasn aaso aasp aasq aasr aass aast aasu aasv aasw aasx aasy aasz aata
-aatb aatc aatd aate aatf aatg aath aati aatj aatk aatl aatm aatn aato aatp
-aatq aatr aats aatt aatu aatv aatw aatx aaty aatz aaua aaub aauc aaud aaue
-aauf aaug aauh aaui aauj aauk aaul aaum aaun aauo aaup aauq aaur aaus aaut
-aauu aauv aauw aaux aauy aauz aava aavb aavc aavd aave aavf aavg aavh aavi
-aavj aavk aavl aavm aavn aavo aavp aavq aavr aavs aavt aavu aavv aavw aavx
-aavy aavz aawa aawb aawc aawd aawe aawf aawg aawh aawi aawj aawk aawl aawm
-aawn aawo aawp aawq aawr aaws aawt aawu aawv aaww aawx aawy aawz aaxa aaxb
-aaxc aaxd aaxe aaxf aaxg aaxh aaxi aaxj aaxk aaxl aaxm aaxn aaxo aaxp aaxq
-aaxr aaxs aaxt aaxu aaxv aaxw aaxx aaxy aaxz aaya aayb aayc aayd aaye aayf
-aayg aayh aayi aayj aayk aayl aaym aayn aayo aayp aayq aayr aays aayt aayu
-aayv aayw aayx aayy aayz aaza aazb aazc aazd aaze aazf aazg aazh aazi aazj
-aazk aazl aazm aazn aazo aazp aazq aazr aazs aazt aazu aazv aazw aazx aazy
-aazz abaa abab abac abad abae abaf abag abah abai abaj abak abal abam aban
-abao abap abaq abar abas abat abau abav abaw abax abay abaz abba abbb abbc
-abbd abbe abbf abbg abbh abbi abbj abbk abbl abbm abbn abbo abbp abbq abbr
-abbs abbt abbu abbv abbw abbx abby abbz abca abcb abcc abcd abce abcf abcg
-abch abci abcj abck abcl abcm abcn abco abcp abcq abcr abcs abct abcu abcv
-abcw abcx abcy abcz abda abdb abdc abdd abde abdf abdg abdh abdi abdj abdk
-abdl abdm abdn abdo abdp abdq abdr abds abdt abdu abdv abdw abdx abdy abdz
-abea abeb abec abed abee abef abeg abeh abei abej abek abel abem aben abeo
-abep abeq aber abes abet abeu abev abew abex abey abez abfa abfb abfc abfd
-abfe abff abfg abfh abfi abfj abfk abfl abfm abfn abfo abfp abfq abfr abfs
-abft abfu abfv abfw abfx abfy abfz abga abgb abgc abgd abge abgf abgg abgh
-abgi abgj abgk abgl abgm abgn abgo abgp abgq abgr abgs abgt abgu abgv abgw
-abgx abgy abgz abha abhb abhc abhd abhe abhf abhg abhh abhi abhj abhk abhl
-abhm abhn abho abhp abhq abhr abhs abht abhu abhv abhw abhx abhy abhz abia
-abib abic abid abie abif abig abih abii abij abik abil abim abin abio abip
-abiq abir abis abit abiu abiv abiw abix abiy abiz abja abjb abjc abjd abje
-abjf abjg abjh abji abjj abjk abjl abjm abjn abjo abjp abjq abjr abjs abjt
-abju abjv abjw abjx abjy abjz abka abkb abkc abkd abke abkf abkg abkh abki
-abkj abkk abkl abkm abkn abko abkp abkq abkr abks abkt abku abkv abkw abkx
-abky abkz abla ablb ablc abld able ablf ablg ablh abli ablj ablk abll ablm
-abln ablo ablp ablq ablr abls ablt ablu ablv ablw ablx ably ablz abma abmb
-abmc abmd abme abmf abmg abmh abmi abmj abmk abml abmm abmn abmo abmp abmq
-abmr abms abmt abmu abmv abmw abmx abmy abmz abna abnb abnc abnd abne abnf
-abng abnh abni abnj abnk abnl abnm abnn abno abnp abnq abnr abns abnt abnu
-abnv abnw abnx abny abnz aboa abob aboc abod aboe abof abog aboh aboi aboj
-abok abol abom abon aboo abop aboq abor abos abot abou abov abow abox aboy
-aboz abpa abpb abpc abpd abpe abpf abpg abph abpi abpj abpk abpl abpm abpn
-abpo abpp abpq abpr abps abpt abpu abpv abpw abpx abpy abpz abqa abqb abqc
-abqd abqe abqf abqg abqh abqi abqj abqk abql abqm abqn abqo abqp abqq abqr
-abqs abqt abqu abqv abqw abqx abqy abqz abra abrb abrc abrd abre abrf abrg
-abrh abri abrj abrk abrl abrm abrn abro abrp abrq abrr abrs abrt abru abrv
-abrw abrx abry abrz absa absb absc absd abse absf absg absh absi absj absk
-absl absm absn abso absp absq absr abss abst absu absv absw absx absy absz
-abta abtb abtc abtd abte abtf abtg abth abti abtj abtk abtl abtm abtn abto
-abtp abtq abtr abts abtt abtu abtv abtw abtx abty abtz abua abub abuc abud
-abue abuf abug abuh abui abuj abuk abul abum abun abuo abup abuq abur abus
-abut abuu abuv abuw abux abuy abuz abva abvb abvc abvd abve abvf abvg abvh
-abvi abvj abvk abvl abvm abvn abvo abvp abvq abvr abvs abvt abvu abvv abvw
-abvx abvy abvz abwa abwb abwc abwd abwe abwf abwg abwh abwi abwj abwk abwl
-abwm abwn abwo abwp abwq abwr abws abwt abwu abwv abww abwx abwy abwz abxa
-abxb abxc abxd abxe abxf abxg abxh abxi abxj abxk abxl abxm abxn abxo abxp
-abxq abxr abxs abxt abxu abxv abxw abxx abxy abxz abya abyb abyc abyd abye
-abyf abyg abyh abyi abyj abyk abyl abym abyn abyo abyp abyq abyr abys abyt
-abyu abyv abyw abyx abyy abyz abza abzb abzc abzd abze abzf abzg abzh abzi
-abzj abzk abzl abzm abzn abzo abzp abzq abzr abzs abzt abzu abzv abzw abzx
-abzy abzz acaa acab acac acad acae acaf acag acah acai acaj acak acal acam
-acan acao acap acaq acar acas acat acau acav acaw acax acay acaz acba acbb
-acbc acbd acbe acbf acbg acbh acbi acbj acbk acbl acbm acbn acbo acbp acbq
-acbr acbs acbt acbu acbv acbw acbx acby acbz acca accb accc accd acce accf
-accg acch acci accj acck accl accm accn acco accp accq accr accs acct accu
-accv accw accx accy accz acda acdb acdc acdd acde acdf acdg acdh acdi acdj
-acdk acdl acdm acdn acdo acdp acdq acdr acds acdt acdu acdv acdw acdx acdy
-acdz acea aceb acec aced acee acef aceg aceh acei acej acek acel acem acen
-aceo acep aceq acer aces acet aceu acev acew acex acey acez acfa acfb acfc
-acfd acfe acff acfg acfh acfi acfj acfk acfl acfm acfn acfo acfp acfq acfr
-acfs acft acfu acfv acfw acfx acfy acfz acga acgb acgc acgd acge acgf acgg
-acgh acgi acgj acgk acgl acgm acgn acgo acgp acgq acgr acgs acgt acgu acgv
-acgw acgx acgy acgz acha achb achc achd ache achf achg achh achi achj achk
-achl achm achn acho achp achq achr achs acht achu achv achw achx achy achz
-acia acib acic acid acie acif acig acih acii acij acik acil acim acin acio
-acip aciq acir acis acit aciu aciv aciw acix aciy aciz acja acjb acjc acjd
-acje acjf acjg acjh acji acjj acjk acjl acjm acjn acjo acjp acjq acjr acjs
-acjt acju acjv acjw acjx acjy acjz acka ackb ackc ackd acke ackf ackg ackh
-acki ackj ackk ackl ackm ackn acko ackp ackq ackr acks ackt acku ackv ackw
-ackx acky ackz acla aclb aclc acld acle aclf aclg aclh acli aclj aclk acll
-aclm acln aclo aclp aclq aclr acls aclt aclu aclv aclw aclx acly aclz acma
-acmb acmc acmd acme acmf acmg acmh acmi acmj acmk acml acmm acmn acmo acmp
-acmq acmr acms acmt acmu acmv acmw acmx acmy acmz acna acnb acnc acnd acne
-acnf acng acnh acni acnj acnk acnl acnm acnn acno acnp acnq acnr acns acnt
-acnu acnv acnw acnx acny acnz acoa acob acoc acod acoe acof acog acoh acoi
-acoj acok acol acom acon acoo acop acoq acor acos acot acou acov acow acox
-acoy acoz acpa acpb acpc acpd acpe acpf acpg acph acpi acpj acpk acpl acpm
-acpn acpo acpp acpq acpr acps acpt acpu acpv acpw acpx acpy acpz acqa acqb
-acqc acqd acqe acqf acqg acqh acqi acqj acqk acql acqm acqn acqo acqp acqq
-acqr acqs acqt acqu acqv acqw acqx acqy acqz acra acrb acrc acrd acre acrf
-acrg acrh acri acrj acrk acrl acrm acrn acro acrp acrq acrr acrs acrt acru
-acrv acrw acrx acry acrz acsa acsb acsc acsd acse acsf acsg acsh acsi acsj
-acsk acsl acsm acsn acso acsp acsq acsr acss acst acsu acsv acsw acsx acsy
-acsz acta actb actc actd acte actf actg acth acti actj actk actl actm actn
-acto actp actq actr acts actt actu actv actw actx acty actz acua acub acuc
-acud acue acuf acug acuh acui acuj acuk acul acum acun acuo acup acuq acur
-acus acut acuu acuv acuw acux acuy acuz acva acvb acvc acvd acve acvf acvg
-acvh acvi acvj acvk acvl acvm acvn acvo acvp acvq acvr acvs acvt acvu acvv
-acvw acvx acvy acvz acwa acwb acwc acwd acwe acwf acwg acwh acwi acwj acwk
-acwl acwm acwn acwo acwp acwq acwr acws acwt acwu acwv acww acwx acwy acwz
-acxa acxb acxc acxd acxe acxf acxg acxh acxi acxj acxk acxl acxm acxn acxo
-acxp acxq acxr acxs acxt acxu acxv acxw acxx acxy acxz acya acyb acyc acyd
-acye acyf acyg acyh acyi acyj acyk acyl acym acyn acyo acyp acyq acyr acys
-acyt acyu acyv acyw acyx acyy acyz acza aczb aczc aczd acze aczf aczg aczh
-aczi aczj aczk aczl aczm aczn aczo aczp aczq aczr aczs aczt aczu aczv aczw
-aczx aczy aczz adaa adab adac adad adae adaf adag adah adai adaj adak adal
-adam adan adao adap adaq adar adas adat adau adav adaw adax aday adaz adba
-adbb adbc adbd adbe adbf adbg adbh adbi adbj adbk adbl adbm adbn adbo adbp
-adbq adbr adbs adbt adbu adbv adbw adbx adby adbz adca adcb adcc adcd adce
-adcf adcg adch adci adcj adck adcl adcm adcn adco adcp adcq adcr adcs adct
-adcu adcv adcw adcx adcy adcz adda addb addc addd adde addf addg addh addi
-addj addk addl addm addn addo addp addq addr adds addt addu addv addw addx
-addy addz adea adeb adec aded adee adef adeg adeh adei adej adek adel adem
-aden adeo adep adeq ader ades adet adeu adev adew adex adey adez adfa adfb
-adfc adfd adfe adff adfg adfh adfi adfj adfk adfl adfm adfn adfo adfp adfq
-adfr adfs adft adfu adfv adfw adfx adfy adfz adga adgb adgc adgd adge adgf
-adgg adgh adgi adgj adgk adgl adgm adgn adgo adgp adgq adgr adgs adgt adgu
-adgv adgw adgx adgy adgz adha adhb adhc adhd adhe adhf adhg adhh adhi adhj
-adhk adhl adhm adhn adho adhp adhq adhr adhs adht adhu adhv adhw adhx adhy
-adhz adia adib adic adid adie adif adig adih adii adij adik adil adim adin
-adio adip adiq adir adis adit adiu adiv adiw adix adiy adiz adja adjb adjc
-adjd adje adjf adjg adjh adji adjj adjk adjl adjm adjn adjo adjp adjq adjr
-adjs adjt adju adjv adjw adjx adjy adjz adka adkb adkc adkd adke adkf adkg
-adkh adki adkj adkk adkl adkm adkn adko adkp adkq adkr adks adkt adku adkv
-adkw adkx adky adkz adla adlb adlc adld adle adlf adlg adlh adli adlj adlk
-adll adlm adln adlo adlp adlq adlr adls adlt adlu adlv adlw adlx adly adlz
-adma admb admc admd adme admf admg admh admi admj admk adml admm admn admo
-admp admq admr adms admt admu admv admw admx admy admz adna adnb adnc adnd
-adne adnf adng adnh adni adnj adnk adnl adnm adnn adno adnp adnq adnr adns
-adnt adnu adnv adnw adnx adny adnz adoa adob adoc adod adoe adof adog adoh
-adoi adoj adok adol adom adon adoo adop adoq ador ados adot adou adov adow
-adox adoy adoz adpa adpb adpc adpd adpe adpf adpg adph adpi adpj adpk adpl
-adpm adpn adpo adpp adpq adpr adps adpt adpu adpv adpw adpx adpy adpz adqa
-adqb adqc adqd adqe adqf adqg adqh adqi adqj adqk adql adqm adqn adqo adqp
-adqq adqr adqs adqt adqu adqv adqw adqx adqy adqz adra adrb adrc adrd adre
-adrf adrg adrh adri adrj adrk adrl adrm adrn adro adrp adrq adrr adrs adrt
-adru adrv adrw adrx adry adrz adsa adsb adsc adsd adse adsf adsg adsh adsi
-adsj adsk adsl adsm adsn adso adsp adsq adsr adss adst adsu adsv adsw adsx
-adsy adsz adta adtb adtc adtd adte adtf adtg adth adti adtj adtk adtl adtm
-adtn adto adtp adtq adtr adts adtt adtu adtv adtw adtx adty adtz adua adub
-aduc adud adue aduf adug aduh adui aduj aduk adul adum adun aduo adup aduq
-adur adus adut aduu aduv aduw adux aduy aduz adva advb advc advd adve advf
-advg advh advi advj advk advl advm advn advo advp advq advr advs advt advu
-advv advw advx advy advz adwa adwb adwc adwd adwe adwf adwg adwh adwi adwj
-adwk adwl adwm adwn adwo adwp adwq adwr adws adwt adwu adwv adww adwx adwy
-adwz adxa adxb adxc adxd adxe adxf adxg adxh adxi adxj adxk adxl adxm adxn
-adxo adxp adxq adxr adxs adxt adxu adxv adxw adxx adxy adxz adya adyb adyc
-adyd adye adyf adyg adyh adyi adyj adyk adyl adym adyn adyo adyp adyq adyr
-adys adyt adyu adyv adyw adyx adyy adyz adza adzb adzc adzd adze adzf adzg
-adzh adzi adzj adzk adzl adzm adzn adzo adzp adzq adzr adzs adzt adzu adzv
-adzw adzx adzy adzz aeaa aeab aeac aead aeae aeaf aeag aeah aeai aeaj aeak
-aeal aeam aean aeao aeap aeaq aear aeas aeat aeau aeav aeaw aeax aeay aeaz
-aeba aebb aebc aebd aebe aebf aebg aebh aebi aebj aebk aebl aebm aebn aebo
-aebp aebq aebr aebs aebt aebu aebv aebw aebx aeby aebz aeca aecb aecc aecd
-aece aecf aecg aech aeci aecj aeck aecl aecm aecn aeco aecp aecq aecr aecs
-aect aecu aecv aecw aecx aecy aecz aeda aedb aedc aedd aede aedf aedg aedh
-aedi aedj aedk aedl aedm aedn aedo aedp aedq aedr aeds aedt aedu aedv aedw
-aedx aedy aedz aeea aeeb aeec aeed aeee aeef aeeg aeeh aeei aeej aeek aeel
-aeem aeen aeeo aeep aeeq aeer aees aeet aeeu aeev aeew aeex aeey aeez aefa
-aefb aefc aefd aefe aeff aefg aefh aefi aefj aefk aefl aefm aefn aefo aefp
-aefq aefr aefs aeft aefu aefv aefw aefx aefy aefz aega aegb aegc aegd aege
-aegf aegg aegh aegi aegj aegk aegl aegm aegn aego aegp aegq aegr aegs aegt
-aegu aegv aegw aegx aegy aegz aeha aehb aehc aehd aehe aehf aehg aehh aehi
-aehj aehk aehl aehm aehn aeho aehp aehq aehr aehs aeht aehu aehv aehw aehx
-aehy aehz aeia aeib aeic aeid aeie aeif aeig aeih aeii aeij aeik aeil aeim
-aein aeio aeip aeiq aeir aeis aeit aeiu aeiv aeiw aeix aeiy aeiz aeja aejb
-aejc aejd aeje aejf aejg aejh aeji aejj aejk aejl aejm aejn aejo aejp aejq
-aejr aejs aejt aeju aejv aejw aejx aejy aejz aeka aekb aekc aekd aeke aekf
-aekg aekh aeki aekj aekk aekl aekm aekn aeko aekp aekq aekr aeks aekt aeku
-aekv aekw aekx aeky aekz aela aelb aelc aeld aele aelf aelg aelh aeli aelj
-aelk aell aelm aeln aelo aelp aelq aelr aels aelt aelu aelv aelw aelx aely
-aelz aema aemb aemc aemd aeme aemf aemg aemh aemi aemj aemk aeml aemm aemn
-aemo aemp aemq aemr aems aemt aemu aemv aemw aemx aemy aemz aena aenb aenc
-aend aene aenf aeng aenh aeni aenj aenk aenl aenm aenn aeno aenp aenq aenr
-aens aent aenu aenv aenw aenx aeny aenz aeoa aeob aeoc aeod aeoe aeof aeog
-aeoh aeoi aeoj aeok aeol aeom aeon aeoo aeop aeoq aeor aeos aeot aeou aeov
-aeow aeox aeoy aeoz aepa aepb aepc aepd aepe aepf aepg aeph aepi aepj aepk
-aepl aepm aepn aepo aepp aepq aepr aeps aept aepu aepv aepw aepx aepy aepz
-aeqa aeqb aeqc aeqd aeqe aeqf aeqg aeqh aeqi aeqj aeqk aeql aeqm aeqn aeqo
-aeqp aeqq aeqr aeqs aeqt aequ aeqv aeqw aeqx aeqy aeqz aera aerb aerc aerd
-aere aerf aerg aerh aeri aerj aerk aerl aerm aern aero aerp aerq aerr aers
-aert aeru aerv aerw aerx aery aerz aesa aesb aesc aesd aese aesf aesg aesh
-aesi aesj aesk aesl aesm aesn aeso aesp aesq aesr aess aest aesu aesv aesw
-aesx aesy aesz aeta aetb aetc aetd aete aetf aetg aeth aeti aetj aetk aetl
-aetm aetn aeto aetp aetq aetr aets aett aetu aetv aetw aetx aety aetz aeua
-aeub aeuc aeud aeue aeuf aeug aeuh aeui aeuj aeuk aeul aeum aeun aeuo aeup
-aeuq aeur aeus aeut aeuu aeuv aeuw aeux aeuy aeuz aeva aevb aevc aevd aeve
-aevf aevg aevh aevi aevj aevk aevl aevm aevn aevo aevp aevq aevr aevs aevt
-aevu aevv aevw aevx aevy aevz aewa aewb aewc aewd aewe aewf aewg aewh aewi
-aewj aewk aewl aewm aewn aewo aewp aewq aewr aews aewt aewu aewv aeww aewx
-aewy aewz aexa aexb aexc aexd aexe aexf aexg aexh aexi aexj aexk aexl aexm
-aexn aexo aexp aexq aexr aexs aext aexu aexv aexw aexx aexy aexz aeya aeyb
-aeyc aeyd aeye aeyf aeyg aeyh aeyi aeyj aeyk aeyl aeym aeyn aeyo aeyp aeyq
-aeyr aeys aeyt aeyu aeyv aeyw aeyx aeyy aeyz aeza aezb aezc aezd aeze aezf
-aezg aezh aezi aezj aezk aezl aezm aezn aezo aezp aezq aezr aezs aezt aezu
-aezv aezw aezx aezy aezz afaa afab afac afad afae afaf afag afah afai afaj
-afak afal afam afan afao afap afaq afar afas afat afau afav afaw afax afay
-afaz afba afbb afbc afbd afbe afbf afbg afbh afbi afbj afbk afbl afbm afbn
-afbo afbp afbq afbr afbs afbt afbu afbv afbw afbx afby afbz afca afcb afcc
-afcd afce afcf afcg afch afci afcj afck afcl afcm afcn afco afcp afcq afcr
-afcs afct afcu afcv afcw afcx afcy afcz afda afdb afdc afdd afde afdf afdg
-afdh afdi afdj afdk afdl afdm afdn afdo afdp afdq afdr afds afdt afdu afdv
-afdw afdx afdy afdz afea afeb afec afed afee afef afeg afeh afei afej afek
-afel afem afen afeo afep afeq afer afes afet afeu afev afew afex afey afez
-affa affb affc affd affe afff affg affh affi affj affk affl affm affn affo
-affp affq affr affs afft affu affv affw affx affy affz afga afgb afgc afgd
-afge afgf afgg afgh afgi afgj afgk afgl afgm afgn afgo afgp afgq afgr afgs
-afgt afgu afgv afgw afgx afgy afgz afha afhb afhc afhd afhe afhf afhg afhh
-afhi afhj afhk afhl afhm afhn afho afhp afhq afhr afhs afht afhu afhv afhw
-afhx afhy afhz afia afib afic afid afie afif afig afih afii afij afik afil
-afim afin afio afip afiq afir afis afit afiu afiv afiw afix afiy afiz afja
-afjb afjc afjd afje afjf afjg afjh afji afjj afjk afjl afjm afjn afjo afjp
-afjq afjr afjs afjt afju afjv afjw afjx afjy afjz afka afkb afkc afkd afke
-afkf afkg afkh afki afkj afkk afkl afkm afkn afko afkp afkq afkr afks afkt
-afku afkv afkw afkx afky afkz afla aflb aflc afld afle aflf aflg aflh afli
-aflj aflk afll aflm afln aflo aflp aflq aflr afls aflt aflu aflv aflw aflx
-afly aflz afma afmb afmc afmd afme afmf afmg afmh afmi afmj afmk afml afmm
-afmn afmo afmp afmq afmr afms afmt afmu afmv afmw afmx afmy afmz afna afnb
-afnc afnd afne afnf afng afnh afni afnj afnk afnl afnm afnn afno afnp afnq
-afnr afns afnt afnu afnv afnw afnx afny afnz afoa afob afoc afod afoe afof
-afog afoh afoi afoj afok afol afom afon afoo afop afoq afor afos afot afou
-afov afow afox afoy afoz afpa afpb afpc afpd afpe afpf afpg afph afpi afpj
-afpk afpl afpm afpn afpo afpp afpq afpr afps afpt afpu afpv afpw afpx afpy
-afpz afqa afqb afqc afqd afqe afqf afqg afqh afqi afqj afqk afql afqm afqn
-afqo afqp afqq afqr afqs afqt afqu afqv afqw afqx afqy afqz afra afrb afrc
-afrd afre afrf afrg afrh afri afrj afrk afrl afrm afrn afro afrp afrq afrr
-afrs afrt afru afrv afrw afrx afry afrz afsa afsb afsc afsd afse afsf afsg
-afsh afsi afsj afsk afsl afsm afsn afso afsp afsq afsr afss afst afsu afsv
-afsw afsx afsy afsz afta aftb aftc aftd afte aftf aftg afth afti aftj aftk
-aftl aftm aftn afto aftp aftq aftr afts aftt aftu aftv aftw aftx afty aftz
-afua afub afuc afud afue afuf afug afuh afui afuj afuk aful afum afun afuo
-afup afuq afur afus afut afuu afuv afuw afux afuy afuz afva afvb afvc afvd
-afve afvf afvg afvh afvi afvj afvk afvl afvm afvn afvo afvp afvq afvr afvs
-afvt afvu afvv afvw afvx afvy afvz afwa afwb afwc afwd afwe afwf afwg afwh
-afwi afwj afwk afwl afwm afwn afwo afwp afwq afwr afws afwt afwu afwv afww
-afwx afwy afwz afxa afxb afxc afxd afxe afxf afxg afxh afxi afxj afxk afxl
-afxm afxn afxo afxp afxq afxr afxs afxt afxu afxv afxw afxx afxy afxz afya
-afyb afyc afyd afye afyf afyg afyh afyi afyj afyk afyl afym afyn afyo afyp
-afyq afyr afys afyt afyu afyv afyw afyx afyy afyz afza afzb afzc afzd afze
-afzf afzg afzh afzi afzj afzk afzl afzm afzn afzo afzp afzq afzr afzs afzt
-afzu afzv afzw afzx afzy afzz agaa agab agac agad agae agaf agag agah agai
-agaj agak agal agam agan agao agap agaq agar agas agat agau agav agaw agax
-agay agaz agba agbb agbc agbd agbe agbf agbg agbh agbi agbj agbk agbl agbm
-agbn agbo agbp agbq agbr agbs agbt agbu agbv agbw agbx agby agbz agca agcb
-agcc agcd agce agcf agcg agch agci agcj agck agcl agcm agcn agco agcp agcq
-agcr agcs agct agcu agcv agcw agcx agcy agcz agda agdb agdc agdd agde agdf
-agdg agdh agdi agdj agdk agdl agdm agdn agdo agdp agdq agdr agds agdt agdu
-agdv agdw agdx agdy agdz agea ageb agec aged agee agef ageg ageh agei agej
-agek agel agem agen ageo agep ageq ager ages aget ageu agev agew agex agey
-agez agfa agfb agfc agfd agfe agff agfg agfh agfi agfj agfk agfl agfm agfn
-agfo agfp agfq agfr agfs agft agfu agfv agfw agfx agfy agfz agga aggb aggc
-aggd agge aggf aggg aggh aggi aggj aggk aggl aggm aggn aggo aggp aggq aggr
-aggs aggt aggu aggv aggw aggx aggy aggz agha aghb aghc aghd aghe aghf aghg
-aghh aghi aghj aghk aghl aghm aghn agho aghp aghq aghr aghs aght aghu aghv
-aghw aghx aghy aghz agia agib agic agid agie agif agig agih agii agij agik
-agil agim agin agio agip agiq agir agis agit agiu agiv agiw agix agiy agiz
-agja agjb agjc agjd agje agjf agjg agjh agji agjj agjk agjl agjm agjn agjo
-agjp agjq agjr agjs agjt agju agjv agjw agjx agjy agjz agka agkb agkc agkd
-agke agkf agkg agkh agki agkj agkk agkl agkm agkn agko agkp agkq agkr agks
-agkt agku agkv agkw agkx agky agkz agla aglb aglc agld agle aglf aglg aglh
-agli aglj aglk agll aglm agln aglo aglp aglq aglr agls aglt aglu aglv aglw
-aglx agly aglz agma agmb agmc agmd agme agmf agmg agmh agmi agmj agmk agml
-agmm agmn agmo agmp agmq agmr agms agmt agmu agmv agmw agmx agmy agmz agna
-agnb agnc agnd agne agnf agng agnh agni agnj agnk agnl agnm agnn agno agnp
-agnq agnr agns agnt agnu agnv agnw agnx agny agnz agoa agob agoc agod agoe
-agof agog agoh agoi agoj agok agol agom agon agoo agop agoq agor agos agot
-agou agov agow agox agoy agoz agpa agpb agpc agpd agpe agpf agpg agph agpi
-agpj agpk agpl agpm agpn agpo agpp agpq agpr agps agpt agpu agpv agpw agpx
-agpy agpz agqa agqb agqc agqd agqe agqf agqg agqh agqi agqj agqk agql agqm
-agqn agqo agqp agqq agqr agqs agqt agqu agqv agqw agqx agqy agqz agra agrb
-agrc agrd agre agrf agrg agrh agri agrj agrk agrl agrm agrn agro agrp agrq
-agrr agrs agrt agru agrv agrw agrx agry agrz agsa agsb agsc agsd agse agsf
-agsg agsh agsi agsj agsk agsl agsm agsn agso agsp agsq agsr agss agst agsu
-agsv agsw agsx agsy agsz agta agtb agtc agtd agte agtf agtg agth agti agtj
-agtk agtl agtm agtn agto agtp agtq agtr agts agtt agtu agtv agtw agtx agty
-agtz agua agub aguc agud ague aguf agug aguh agui aguj aguk agul agum agun
-aguo agup aguq agur agus agut aguu aguv aguw agux aguy aguz agva agvb agvc
-agvd agve agvf agvg agvh agvi agvj agvk agvl agvm agvn agvo agvp agvq agvr
-agvs agvt agvu agvv agvw agvx agvy agvz agwa agwb agwc agwd agwe agwf agwg
-agwh agwi agwj agwk agwl agwm agwn agwo agwp agwq agwr agws agwt agwu agwv
-agww agwx agwy agwz agxa agxb agxc agxd agxe agxf agxg agxh agxi agxj agxk
-agxl agxm agxn agxo agxp agxq agxr agxs agxt agxu agxv agxw agxx agxy agxz
-agya agyb agyc agyd agye agyf agyg agyh agyi agyj agyk agyl agym agyn agyo
-agyp agyq agyr agys agyt agyu agyv agyw agyx agyy agyz agza agzb agzc agzd
-agze agzf agzg agzh agzi agzj agzk agzl agzm agzn agzo agzp agzq agzr agzs
-agzt agzu agzv agzw agzx agzy agzz ahaa ahab ahac ahad ahae ahaf ahag ahah
-ahai ahaj ahak ahal aham ahan ahao ahap ahaq ahar ahas ahat ahau ahav ahaw
-ahax ahay ahaz ahba ahbb ahbc ahbd ahbe ahbf ahbg ahbh ahbi ahbj ahbk ahbl
-ahbm ahbn ahbo ahbp ahbq ahbr ahbs ahbt ahbu ahbv ahbw ahbx ahby ahbz ahca
-ahcb ahcc ahcd ahce ahcf ahcg ahch ahci ahcj ahck ahcl ahcm ahcn ahco ahcp
-ahcq ahcr ahcs ahct ahcu ahcv ahcw ahcx ahcy ahcz ahda ahdb ahdc ahdd ahde
-ahdf ahdg ahdh ahdi ahdj ahdk ahdl ahdm ahdn ahdo ahdp ahdq ahdr ahds ahdt
-ahdu ahdv ahdw ahdx ahdy ahdz ahea aheb ahec ahed ahee ahef aheg aheh ahei
-ahej ahek ahel ahem ahen aheo ahep aheq aher ahes ahet aheu ahev ahew ahex
-ahey ahez ahfa ahfb ahfc ahfd ahfe ahff ahfg ahfh ahfi ahfj ahfk ahfl ahfm
-ahfn ahfo ahfp ahfq ahfr ahfs ahft ahfu ahfv ahfw ahfx ahfy ahfz ahga ahgb
-ahgc ahgd ahge ahgf ahgg ahgh ahgi ahgj ahgk ahgl ahgm ahgn ahgo ahgp ahgq
-ahgr ahgs ahgt ahgu ahgv ahgw ahgx ahgy ahgz ahha ahhb ahhc ahhd ahhe ahhf
-ahhg ahhh ahhi ahhj ahhk ahhl ahhm ahhn ahho ahhp ahhq ahhr ahhs ahht ahhu
-ahhv ahhw ahhx ahhy ahhz ahia ahib ahic ahid ahie ahif ahig ahih ahii ahij
-ahik ahil ahim ahin ahio ahip ahiq ahir ahis ahit ahiu ahiv ahiw ahix ahiy
-ahiz ahja ahjb ahjc ahjd ahje ahjf ahjg ahjh ahji ahjj ahjk ahjl ahjm ahjn
-ahjo ahjp ahjq ahjr ahjs ahjt ahju ahjv ahjw ahjx ahjy ahjz ahka ahkb ahkc
-ahkd ahke ahkf ahkg ahkh ahki ahkj ahkk ahkl ahkm ahkn ahko ahkp ahkq ahkr
-ahks ahkt ahku ahkv ahkw ahkx ahky ahkz ahla ahlb ahlc ahld ahle ahlf ahlg
-ahlh ahli ahlj ahlk ahll ahlm ahln ahlo ahlp ahlq ahlr ahls ahlt ahlu ahlv
-ahlw ahlx ahly ahlz ahma ahmb ahmc ahmd ahme ahmf ahmg ahmh ahmi ahmj ahmk
-ahml ahmm ahmn ahmo ahmp ahmq ahmr ahms ahmt ahmu ahmv ahmw ahmx ahmy ahmz
-ahna ahnb ahnc ahnd ahne ahnf ahng ahnh ahni ahnj ahnk ahnl ahnm ahnn ahno
-ahnp ahnq ahnr ahns ahnt ahnu ahnv ahnw ahnx ahny ahnz ahoa ahob ahoc ahod
-ahoe ahof ahog ahoh ahoi ahoj ahok ahol ahom ahon ahoo ahop ahoq ahor ahos
-ahot ahou ahov ahow ahox ahoy ahoz ahpa ahpb ahpc ahpd ahpe ahpf ahpg ahph
-ahpi ahpj ahpk ahpl ahpm ahpn ahpo ahpp ahpq ahpr ahps ahpt ahpu ahpv ahpw
-ahpx ahpy ahpz ahqa ahqb ahqc ahqd ahqe ahqf ahqg ahqh ahqi ahqj ahqk ahql
-ahqm ahqn ahqo ahqp ahqq ahqr ahqs ahqt ahqu ahqv ahqw ahqx ahqy ahqz ahra
-ahrb ahrc ahrd ahre ahrf ahrg ahrh ahri ahrj ahrk ahrl ahrm ahrn ahro ahrp
-ahrq ahrr ahrs ahrt ahru ahrv ahrw ahrx ahry ahrz ahsa ahsb ahsc ahsd ahse
-ahsf ahsg ahsh ahsi ahsj ahsk ahsl ahsm ahsn ahso ahsp ahsq ahsr ahss ahst
-ahsu ahsv ahsw ahsx ahsy ahsz ahta ahtb ahtc ahtd ahte ahtf ahtg ahth ahti
-ahtj ahtk ahtl ahtm ahtn ahto ahtp ahtq ahtr ahts ahtt ahtu ahtv ahtw ahtx
-ahty ahtz ahua ahub ahuc ahud ahue ahuf ahug ahuh ahui ahuj ahuk ahul ahum
-ahun ahuo ahup ahuq ahur ahus ahut ahuu ahuv ahuw ahux ahuy ahuz ahva ahvb
-ahvc ahvd ahve ahvf ahvg ahvh ahvi ahvj ahvk ahvl ahvm ahvn ahvo ahvp ahvq
-ahvr ahvs ahvt ahvu ahvv ahvw ahvx ahvy ahvz ahwa ahwb ahwc ahwd ahwe ahwf
-ahwg ahwh ahwi ahwj ahwk ahwl ahwm ahwn ahwo ahwp ahwq ahwr ahws ahwt ahwu
-ahwv ahww ahwx ahwy ahwz ahxa ahxb ahxc ahxd ahxe ahxf ahxg ahxh ahxi ahxj
-ahxk ahxl ahxm ahxn ahxo ahxp ahxq ahxr ahxs ahxt ahxu ahxv ahxw ahxx ahxy
-ahxz ahya ahyb ahyc ahyd ahye ahyf ahyg ahyh ahyi ahyj ahyk ahyl ahym ahyn
-ahyo ahyp ahyq ahyr ahys ahyt ahyu ahyv ahyw ahyx ahyy ahyz ahza ahzb ahzc
-ahzd ahze ahzf ahzg ahzh ahzi ahzj ahzk ahzl ahzm ahzn ahzo ahzp ahzq ahzr
-ahzs ahzt ahzu ahzv ahzw ahzx ahzy ahzz aiaa aiab aiac aiad aiae aiaf aiag
-aiah aiai aiaj aiak aial aiam aian aiao aiap aiaq aiar aias aiat aiau aiav
-aiaw aiax aiay aiaz aiba aibb aibc aibd aibe aibf aibg aibh aibi aibj aibk
-aibl aibm aibn aibo aibp aibq aibr aibs aibt aibu aibv aibw aibx aiby aibz
-aica aicb aicc aicd aice aicf aicg aich aici aicj aick aicl aicm aicn aico
-aicp aicq aicr aics aict aicu aicv aicw aicx aicy aicz aida aidb aidc aidd
-aide aidf aidg aidh aidi aidj aidk aidl aidm aidn aido aidp aidq aidr aids
-aidt aidu aidv aidw aidx aidy aidz aiea aieb aiec aied aiee aief aieg aieh
-aiei aiej aiek aiel aiem aien aieo aiep aieq aier aies aiet aieu aiev aiew
-aiex aiey aiez aifa aifb aifc aifd aife aiff aifg aifh aifi aifj aifk aifl
-aifm aifn aifo aifp aifq aifr aifs aift aifu aifv aifw aifx aify aifz aiga
-aigb aigc aigd aige aigf aigg aigh aigi aigj aigk aigl aigm aign aigo aigp
-aigq aigr aigs aigt aigu aigv aigw aigx aigy aigz aiha aihb aihc aihd aihe
-aihf aihg aihh aihi aihj aihk aihl aihm aihn aiho aihp aihq aihr aihs aiht
-aihu aihv aihw aihx aihy aihz aiia aiib aiic aiid aiie aiif aiig aiih aiii
-aiij aiik aiil aiim aiin aiio aiip aiiq aiir aiis aiit aiiu aiiv aiiw aiix
-aiiy aiiz aija aijb aijc aijd aije aijf aijg aijh aiji aijj aijk aijl aijm
-aijn aijo aijp aijq aijr aijs aijt aiju aijv aijw aijx aijy aijz aika aikb
-aikc aikd aike aikf aikg aikh aiki aikj aikk aikl aikm aikn aiko aikp aikq
-aikr aiks aikt aiku aikv aikw aikx aiky aikz aila ailb ailc aild aile ailf
-ailg ailh aili ailj ailk aill ailm ailn ailo ailp ailq ailr ails ailt ailu
-ailv ailw ailx aily ailz aima aimb aimc aimd aime aimf aimg aimh aimi aimj
-aimk aiml aimm aimn aimo aimp aimq aimr aims aimt aimu aimv aimw aimx aimy
-aimz aina ainb ainc aind aine ainf aing ainh aini ainj aink ainl ainm ainn
-aino ainp ainq ainr ains aint ainu ainv ainw ainx ainy ainz aioa aiob aioc
-aiod aioe aiof aiog aioh aioi aioj aiok aiol aiom aion aioo aiop aioq aior
-aios aiot aiou aiov aiow aiox aioy aioz aipa aipb aipc aipd aipe aipf aipg
-aiph aipi aipj aipk aipl aipm aipn aipo aipp aipq aipr aips aipt aipu aipv
-aipw aipx aipy aipz aiqa aiqb aiqc aiqd aiqe aiqf aiqg aiqh aiqi aiqj aiqk
-aiql aiqm aiqn aiqo aiqp aiqq aiqr aiqs aiqt aiqu aiqv aiqw aiqx aiqy aiqz
-aira airb airc aird aire airf airg airh airi airj airk airl airm airn airo
-airp airq airr airs airt airu airv airw airx airy airz aisa aisb aisc aisd
-aise aisf aisg aish aisi aisj aisk aisl aism aisn aiso aisp aisq aisr aiss
-aist aisu aisv aisw aisx aisy aisz aita aitb aitc aitd aite aitf aitg aith
-aiti aitj aitk aitl aitm aitn aito aitp aitq aitr aits aitt aitu aitv aitw
-aitx aity aitz aiua aiub aiuc aiud aiue aiuf aiug aiuh aiui aiuj aiuk aiul
-aium aiun aiuo aiup aiuq aiur aius aiut aiuu aiuv aiuw aiux aiuy aiuz aiva
-aivb aivc aivd aive aivf aivg aivh aivi aivj aivk aivl aivm aivn aivo aivp
-aivq aivr aivs aivt aivu aivv aivw aivx aivy aivz aiwa aiwb aiwc aiwd aiwe
-aiwf aiwg aiwh aiwi aiwj aiwk aiwl aiwm aiwn aiwo aiwp aiwq aiwr aiws aiwt
-aiwu aiwv aiww aiwx aiwy aiwz aixa aixb aixc aixd aixe aixf aixg aixh aixi
-aixj aixk aixl aixm aixn aixo aixp aixq aixr aixs aixt aixu aixv aixw aixx
-aixy aixz aiya aiyb aiyc aiyd aiye aiyf aiyg aiyh aiyi aiyj aiyk aiyl aiym
-aiyn aiyo aiyp aiyq aiyr aiys aiyt aiyu aiyv aiyw aiyx aiyy aiyz aiza aizb
-aizc aizd aize aizf aizg aizh aizi aizj aizk aizl aizm aizn aizo aizp aizq
-aizr aizs aizt aizu aizv aizw aizx aizy aizz ajaa ajab ajac ajad ajae ajaf
-ajag ajah ajai ajaj ajak ajal ajam ajan ajao ajap ajaq ajar ajas ajat ajau
-ajav ajaw ajax ajay ajaz ajba ajbb ajbc ajbd ajbe ajbf ajbg ajbh ajbi ajbj
-ajbk ajbl ajbm ajbn ajbo ajbp ajbq ajbr ajbs ajbt ajbu ajbv ajbw ajbx ajby
-ajbz ajca ajcb ajcc ajcd ajce ajcf ajcg ajch ajci ajcj ajck ajcl ajcm ajcn
-ajco ajcp ajcq ajcr ajcs ajct ajcu ajcv ajcw ajcx ajcy ajcz ajda ajdb ajdc
-ajdd ajde ajdf ajdg ajdh ajdi ajdj ajdk ajdl ajdm ajdn ajdo ajdp ajdq ajdr
-ajds ajdt ajdu ajdv ajdw ajdx ajdy ajdz ajea ajeb ajec ajed ajee ajef ajeg
-ajeh ajei ajej ajek ajel ajem ajen ajeo ajep ajeq ajer ajes ajet ajeu ajev
-ajew ajex ajey ajez ajfa ajfb ajfc ajfd ajfe ajff ajfg ajfh ajfi ajfj ajfk
-ajfl ajfm ajfn ajfo ajfp ajfq ajfr ajfs ajft ajfu ajfv ajfw ajfx ajfy ajfz
-ajga ajgb ajgc ajgd ajge ajgf ajgg ajgh ajgi ajgj ajgk ajgl ajgm ajgn ajgo
-ajgp ajgq ajgr ajgs ajgt ajgu ajgv ajgw ajgx ajgy ajgz ajha ajhb ajhc ajhd
-ajhe ajhf ajhg ajhh ajhi ajhj ajhk ajhl ajhm ajhn ajho ajhp ajhq ajhr ajhs
-ajht ajhu ajhv ajhw ajhx ajhy ajhz ajia ajib ajic ajid ajie ajif ajig ajih
-ajii ajij ajik ajil ajim ajin ajio ajip ajiq ajir ajis ajit ajiu ajiv ajiw
-ajix ajiy ajiz ajja ajjb ajjc ajjd ajje ajjf ajjg ajjh ajji ajjj ajjk ajjl
-ajjm ajjn ajjo ajjp ajjq ajjr ajjs ajjt ajju ajjv ajjw ajjx ajjy ajjz ajka
-ajkb ajkc ajkd ajke ajkf ajkg ajkh ajki ajkj ajkk ajkl ajkm ajkn ajko ajkp
-ajkq ajkr ajks ajkt ajku ajkv ajkw ajkx ajky ajkz ajla ajlb ajlc ajld ajle
-ajlf ajlg ajlh ajli ajlj ajlk ajll ajlm ajln ajlo ajlp ajlq ajlr ajls ajlt
-ajlu ajlv ajlw ajlx ajly ajlz ajma ajmb ajmc ajmd ajme ajmf ajmg ajmh ajmi
-ajmj ajmk ajml ajmm ajmn ajmo ajmp ajmq ajmr ajms ajmt ajmu ajmv ajmw ajmx
-ajmy ajmz ajna ajnb ajnc ajnd ajne ajnf ajng ajnh ajni ajnj ajnk ajnl ajnm
-ajnn ajno ajnp ajnq ajnr ajns ajnt ajnu ajnv ajnw ajnx ajny ajnz ajoa ajob
-ajoc ajod ajoe ajof ajog ajoh ajoi ajoj ajok ajol ajom ajon ajoo ajop ajoq
-ajor ajos ajot ajou ajov ajow ajox ajoy ajoz ajpa ajpb ajpc ajpd ajpe ajpf
-ajpg ajph ajpi ajpj ajpk ajpl ajpm ajpn ajpo ajpp ajpq ajpr ajps ajpt ajpu
-ajpv ajpw ajpx ajpy ajpz ajqa ajqb ajqc ajqd ajqe ajqf ajqg ajqh ajqi ajqj
-ajqk ajql ajqm ajqn ajqo ajqp ajqq ajqr ajqs ajqt ajqu ajqv ajqw ajqx ajqy
-ajqz ajra ajrb ajrc ajrd ajre ajrf ajrg ajrh ajri ajrj ajrk ajrl ajrm ajrn
-ajro ajrp ajrq ajrr ajrs ajrt ajru ajrv ajrw ajrx ajry ajrz ajsa ajsb ajsc
-ajsd ajse ajsf ajsg ajsh ajsi ajsj ajsk ajsl ajsm ajsn ajso ajsp ajsq ajsr
-ajss ajst ajsu ajsv ajsw ajsx ajsy ajsz ajta ajtb ajtc ajtd ajte ajtf ajtg
-ajth ajti ajtj ajtk ajtl ajtm ajtn ajto ajtp ajtq ajtr ajts ajtt ajtu ajtv
-ajtw ajtx ajty ajtz ajua ajub ajuc ajud ajue ajuf ajug ajuh ajui ajuj ajuk
-ajul ajum ajun ajuo ajup ajuq ajur ajus ajut ajuu ajuv ajuw ajux ajuy ajuz
-ajva ajvb ajvc ajvd ajve ajvf ajvg ajvh ajvi ajvj ajvk ajvl ajvm ajvn ajvo
-ajvp ajvq ajvr ajvs ajvt ajvu ajvv ajvw ajvx ajvy ajvz ajwa ajwb ajwc ajwd
-ajwe ajwf ajwg ajwh ajwi ajwj ajwk ajwl ajwm ajwn ajwo ajwp ajwq ajwr ajws
-ajwt ajwu ajwv ajww ajwx ajwy ajwz ajxa ajxb ajxc ajxd ajxe ajxf ajxg ajxh
-ajxi ajxj ajxk ajxl ajxm ajxn ajxo ajxp ajxq ajxr ajxs ajxt ajxu ajxv ajxw
-ajxx ajxy ajxz ajya ajyb ajyc ajyd ajye ajyf ajyg ajyh ajyi ajyj ajyk ajyl
-ajym ajyn ajyo ajyp ajyq ajyr ajys ajyt ajyu ajyv ajyw ajyx ajyy ajyz ajza
-ajzb ajzc ajzd ajze ajzf ajzg ajzh ajzi ajzj ajzk ajzl ajzm ajzn ajzo ajzp
-ajzq ajzr ajzs ajzt ajzu ajzv ajzw ajzx ajzy ajzz akaa akab akac akad akae
-akaf akag akah akai akaj akak akal akam akan akao akap akaq akar akas akat
-akau akav akaw akax akay akaz akba akbb akbc akbd akbe akbf akbg akbh akbi
-akbj akbk akbl akbm akbn akbo akbp akbq akbr akbs akbt akbu akbv akbw akbx
-akby akbz akca akcb akcc akcd akce akcf akcg akch akci akcj akck akcl akcm
-akcn akco akcp akcq akcr akcs akct akcu akcv akcw akcx akcy akcz akda akdb
-akdc akdd akde akdf akdg akdh akdi akdj akdk akdl akdm akdn akdo akdp akdq
-akdr akds akdt akdu akdv akdw akdx akdy akdz akea akeb akec aked akee akef
-akeg akeh akei akej akek akel akem aken akeo akep akeq aker akes aket akeu
-akev akew akex akey akez akfa akfb akfc akfd akfe akff akfg akfh akfi akfj
-akfk akfl akfm akfn akfo akfp akfq akfr akfs akft akfu akfv akfw akfx akfy
-akfz akga akgb akgc akgd akge akgf akgg akgh akgi akgj akgk akgl akgm akgn
-akgo akgp akgq akgr akgs akgt akgu akgv akgw akgx akgy akgz akha akhb akhc
-akhd akhe akhf akhg akhh akhi akhj akhk akhl akhm akhn akho akhp akhq akhr
-akhs akht akhu akhv akhw akhx akhy akhz akia akib akic akid akie akif akig
-akih akii akij akik akil akim akin akio akip akiq akir akis akit akiu akiv
-akiw akix akiy akiz akja akjb akjc akjd akje akjf akjg akjh akji akjj akjk
-akjl akjm akjn akjo akjp akjq akjr akjs akjt akju akjv akjw akjx akjy akjz
-akka akkb akkc akkd akke akkf akkg akkh akki akkj akkk akkl akkm akkn akko
-akkp akkq akkr akks akkt akku akkv akkw akkx akky akkz akla aklb aklc akld
-akle aklf aklg aklh akli aklj aklk akll aklm akln aklo aklp aklq aklr akls
-aklt aklu aklv aklw aklx akly aklz akma akmb akmc akmd akme akmf akmg akmh
-akmi akmj akmk akml akmm akmn akmo akmp akmq akmr akms akmt akmu akmv akmw
-akmx akmy akmz akna aknb aknc aknd akne aknf akng aknh akni aknj aknk aknl
-aknm aknn akno aknp aknq aknr akns aknt aknu aknv aknw aknx akny aknz akoa
-akob akoc akod akoe akof akog akoh akoi akoj akok akol akom akon akoo akop
-akoq akor akos akot akou akov akow akox akoy akoz akpa akpb akpc akpd akpe
-akpf akpg akph akpi akpj akpk akpl akpm akpn akpo akpp akpq akpr akps akpt
-akpu akpv akpw akpx akpy akpz akqa akqb akqc akqd akqe akqf akqg akqh akqi
-akqj akqk akql akqm akqn akqo akqp akqq akqr akqs akqt akqu akqv akqw akqx
-akqy akqz akra akrb akrc akrd akre akrf akrg akrh akri akrj akrk akrl akrm
-akrn akro akrp akrq akrr akrs akrt akru akrv akrw akrx akry akrz aksa aksb
-aksc aksd akse aksf aksg aksh aksi aksj aksk aksl aksm aksn akso aksp aksq
-aksr akss akst aksu aksv aksw aksx aksy aksz akta aktb aktc aktd akte aktf
-aktg akth akti aktj aktk aktl aktm aktn akto aktp aktq aktr akts aktt aktu
-aktv aktw aktx akty aktz akua akub akuc akud akue akuf akug akuh akui akuj
-akuk akul akum akun akuo akup akuq akur akus akut akuu akuv akuw akux akuy
-akuz akva akvb akvc akvd akve akvf akvg akvh akvi akvj akvk akvl akvm akvn
-akvo akvp akvq akvr akvs akvt akvu akvv akvw akvx akvy akvz akwa akwb akwc
-akwd akwe akwf akwg akwh akwi akwj akwk akwl akwm akwn akwo akwp akwq akwr
-akws akwt akwu akwv akww akwx akwy akwz akxa akxb akxc akxd akxe akxf akxg
-akxh akxi akxj akxk akxl akxm akxn akxo akxp akxq akxr akxs akxt akxu akxv
-akxw akxx akxy akxz akya akyb akyc akyd akye akyf akyg akyh akyi akyj akyk
-akyl akym akyn akyo akyp akyq akyr akys akyt akyu akyv akyw akyx akyy akyz
-akza akzb akzc akzd akze akzf akzg akzh akzi akzj akzk akzl akzm akzn akzo
-akzp akzq akzr akzs akzt akzu akzv akzw akzx akzy akzz alaa alab alac alad
-alae alaf alag alah alai alaj alak alal alam alan alao alap alaq alar alas
-alat alau alav alaw alax alay alaz alba albb albc albd albe albf albg albh
-albi albj albk albl albm albn albo albp albq albr albs albt albu albv albw
-albx alby albz alca alcb alcc alcd alce alcf alcg alch alci alcj alck alcl
-alcm alcn alco alcp alcq alcr alcs alct alcu alcv alcw alcx alcy alcz alda
-aldb aldc aldd alde aldf aldg aldh aldi aldj aldk aldl aldm aldn aldo aldp
-aldq aldr alds aldt aldu aldv aldw aldx aldy aldz alea aleb alec aled alee
-alef aleg aleh alei alej alek alel alem alen aleo alep aleq aler ales alet
-aleu alev alew alex aley alez alfa alfb alfc alfd alfe alff alfg alfh alfi
-alfj alfk alfl alfm alfn alfo alfp alfq alfr alfs alft alfu alfv alfw alfx
-alfy alfz alga algb algc algd alge algf algg algh algi algj algk algl algm
-algn algo algp algq algr algs algt algu algv algw algx algy algz alha alhb
-alhc alhd alhe alhf alhg alhh alhi alhj alhk alhl alhm alhn alho alhp alhq
-alhr alhs alht alhu alhv alhw alhx alhy alhz alia alib alic alid alie alif
-alig alih alii alij alik alil alim alin alio alip aliq alir alis alit aliu
-aliv aliw alix aliy aliz alja aljb aljc aljd alje aljf aljg aljh alji aljj
-aljk aljl aljm aljn aljo aljp aljq aljr aljs aljt alju aljv aljw aljx aljy
-aljz alka alkb alkc alkd alke alkf alkg alkh alki alkj alkk alkl alkm alkn
-alko alkp alkq alkr alks alkt alku alkv alkw alkx alky alkz alla allb allc
-alld alle allf allg allh alli allj allk alll allm alln allo allp allq allr
-alls allt allu allv allw allx ally allz alma almb almc almd alme almf almg
-almh almi almj almk alml almm almn almo almp almq almr alms almt almu almv
-almw almx almy almz alna alnb alnc alnd alne alnf alng alnh alni alnj alnk
-alnl alnm alnn alno alnp alnq alnr alns alnt alnu alnv alnw alnx alny alnz
-aloa alob aloc alod aloe alof alog aloh aloi aloj alok alol alom alon aloo
-alop aloq alor alos alot alou alov alow alox aloy aloz alpa alpb alpc alpd
-alpe alpf alpg alph alpi alpj alpk alpl alpm alpn alpo alpp alpq alpr alps
-alpt alpu alpv alpw alpx alpy alpz alqa alqb alqc alqd alqe alqf alqg alqh
-alqi alqj alqk alql alqm alqn alqo alqp alqq alqr alqs alqt alqu alqv alqw
-alqx alqy alqz alra alrb alrc alrd alre alrf alrg alrh alri alrj alrk alrl
-alrm alrn alro alrp alrq alrr alrs alrt alru alrv alrw alrx alry alrz alsa
-alsb alsc alsd alse alsf alsg alsh alsi alsj alsk alsl alsm alsn also alsp
-alsq alsr alss alst alsu alsv alsw alsx alsy alsz alta altb altc altd alte
-altf altg alth alti altj altk altl altm altn alto altp altq altr alts altt
-altu altv altw altx alty altz alua alub aluc alud alue aluf alug aluh alui
-aluj aluk alul alum alun aluo alup aluq alur alus alut aluu aluv aluw alux
-aluy aluz alva alvb alvc alvd alve alvf alvg alvh alvi alvj alvk alvl alvm
-alvn alvo alvp alvq alvr alvs alvt alvu alvv alvw alvx alvy alvz alwa alwb
-alwc alwd alwe alwf alwg alwh alwi alwj alwk alwl alwm alwn alwo alwp alwq
-alwr alws alwt alwu alwv alww alwx alwy alwz alxa alxb alxc alxd alxe alxf
-alxg alxh alxi alxj alxk alxl alxm alxn alxo alxp alxq alxr alxs alxt alxu
-alxv alxw alxx alxy alxz alya alyb alyc alyd alye alyf alyg alyh alyi alyj
-alyk alyl alym alyn alyo alyp alyq alyr alys alyt alyu alyv alyw alyx alyy
-alyz alza alzb alzc alzd alze alzf alzg alzh alzi alzj alzk alzl alzm alzn
-alzo alzp alzq alzr alzs alzt alzu alzv alzw alzx alzy alzz amaa amab amac
-amad amae amaf amag amah amai amaj amak amal amam aman amao amap amaq amar
-amas amat amau amav amaw amax amay amaz amba ambb ambc ambd ambe ambf ambg
-ambh ambi ambj ambk ambl ambm ambn ambo ambp ambq ambr ambs ambt ambu ambv
-ambw ambx amby ambz amca amcb amcc amcd amce amcf amcg amch amci amcj amck
-amcl amcm amcn amco amcp amcq amcr amcs amct amcu amcv amcw amcx amcy amcz
-amda amdb amdc amdd amde amdf amdg amdh amdi amdj amdk amdl amdm amdn amdo
-amdp amdq amdr amds amdt amdu amdv amdw amdx amdy amdz amea ameb amec amed
-amee amef ameg ameh amei amej amek amel amem amen ameo amep ameq amer ames
-amet ameu amev amew amex amey amez amfa amfb amfc amfd amfe amff amfg amfh
-amfi amfj amfk amfl amfm amfn amfo amfp amfq amfr amfs amft amfu amfv amfw
-amfx amfy amfz amga amgb amgc amgd amge amgf amgg amgh amgi amgj amgk amgl
-amgm amgn amgo amgp amgq amgr amgs amgt amgu amgv amgw amgx amgy amgz amha
-amhb amhc amhd amhe amhf amhg amhh amhi amhj amhk amhl amhm amhn amho amhp
-amhq amhr amhs amht amhu amhv amhw amhx amhy amhz amia amib amic amid amie
-amif amig amih amii amij amik amil amim amin amio amip amiq amir amis amit
-amiu amiv amiw amix amiy amiz amja amjb amjc amjd amje amjf amjg amjh amji
-amjj amjk amjl amjm amjn amjo amjp amjq amjr amjs amjt amju amjv amjw amjx
-amjy amjz amka amkb amkc amkd amke amkf amkg amkh amki amkj amkk amkl amkm
-amkn amko amkp amkq amkr amks amkt amku amkv amkw amkx amky amkz amla amlb
-amlc amld amle amlf amlg amlh amli amlj amlk amll amlm amln amlo amlp amlq
-amlr amls amlt amlu amlv amlw amlx amly amlz amma ammb ammc ammd amme ammf
-ammg ammh ammi ammj ammk amml ammm ammn ammo ammp ammq ammr amms ammt ammu
-ammv ammw ammx ammy ammz amna amnb amnc amnd amne amnf amng amnh amni amnj
-amnk amnl amnm amnn amno amnp amnq amnr amns amnt amnu amnv amnw amnx amny
-amnz amoa amob amoc amod amoe amof amog amoh amoi amoj amok amol amom amon
-amoo amop amoq amor amos amot amou amov amow amox amoy amoz ampa ampb ampc
-ampd ampe ampf ampg amph ampi ampj ampk ampl ampm ampn ampo ampp ampq ampr
-amps ampt ampu ampv ampw ampx ampy ampz amqa amqb amqc amqd amqe amqf amqg
-amqh amqi amqj amqk amql amqm amqn amqo amqp amqq amqr amqs amqt amqu amqv
-amqw amqx amqy amqz amra amrb amrc amrd amre amrf amrg amrh amri amrj amrk
-amrl amrm amrn amro amrp amrq amrr amrs amrt amru amrv amrw amrx amry amrz
-amsa amsb amsc amsd amse amsf amsg amsh amsi amsj amsk amsl amsm amsn amso
-amsp amsq amsr amss amst amsu amsv amsw amsx amsy amsz amta amtb amtc amtd
-amte amtf amtg amth amti amtj amtk amtl amtm amtn amto amtp amtq amtr amts
-amtt amtu amtv amtw amtx amty amtz amua amub amuc amud amue amuf amug amuh
-amui amuj amuk amul amum amun amuo amup amuq amur amus amut amuu amuv amuw
-amux amuy amuz amva amvb amvc amvd amve amvf amvg amvh amvi amvj amvk amvl
-amvm amvn amvo amvp amvq amvr amvs amvt amvu amvv amvw amvx amvy amvz amwa
-amwb amwc amwd amwe amwf amwg amwh amwi amwj amwk amwl amwm amwn amwo amwp
-amwq amwr amws amwt amwu amwv amww amwx amwy amwz amxa amxb amxc amxd amxe
-amxf amxg amxh amxi amxj amxk amxl amxm amxn amxo amxp amxq amxr amxs amxt
-amxu amxv amxw amxx amxy amxz amya amyb amyc amyd amye amyf amyg amyh amyi
-amyj amyk amyl amym amyn amyo amyp amyq amyr amys amyt amyu amyv amyw amyx
-amyy amyz amza amzb amzc amzd amze amzf amzg amzh amzi amzj amzk amzl amzm
-amzn amzo amzp amzq amzr amzs amzt amzu amzv amzw amzx amzy amzz anaa anab
-anac anad anae anaf anag anah anai anaj anak anal anam anan anao anap anaq
-anar anas anat anau anav anaw anax anay anaz anba anbb anbc anbd anbe anbf
-anbg anbh anbi anbj anbk anbl anbm anbn anbo anbp anbq anbr anbs anbt anbu
-anbv anbw anbx anby anbz anca ancb ancc ancd ance ancf ancg anch anci ancj
-anck ancl ancm ancn anco ancp ancq ancr ancs anct ancu ancv ancw ancx ancy
-ancz anda andb andc andd ande andf andg andh andi andj andk andl andm andn
-ando andp andq andr ands andt andu andv andw andx andy andz anea aneb anec
-aned anee anef aneg aneh anei anej anek anel anem anen aneo anep aneq aner
-anes anet aneu anev anew anex aney anez anfa anfb anfc anfd anfe anff anfg
-anfh anfi anfj anfk anfl anfm anfn anfo anfp anfq anfr anfs anft anfu anfv
-anfw anfx anfy anfz anga angb angc angd ange angf angg angh angi angj angk
-angl angm angn ango angp angq angr angs angt angu angv angw angx angy angz
-anha anhb anhc anhd anhe anhf anhg anhh anhi anhj anhk anhl anhm anhn anho
-anhp anhq anhr anhs anht anhu anhv anhw anhx anhy anhz ania anib anic anid
-anie anif anig anih anii anij anik anil anim anin anio anip aniq anir anis
-anit aniu aniv aniw anix aniy aniz anja anjb anjc anjd anje anjf anjg anjh
-anji anjj anjk anjl anjm anjn anjo anjp anjq anjr anjs anjt anju anjv anjw
-anjx anjy anjz anka ankb ankc ankd anke ankf ankg ankh anki ankj ankk ankl
-ankm ankn anko ankp ankq ankr anks ankt anku ankv ankw ankx anky ankz anla
-anlb anlc anld anle anlf anlg anlh anli anlj anlk anll anlm anln anlo anlp
-anlq anlr anls anlt anlu anlv anlw anlx anly anlz anma anmb anmc anmd anme
-anmf anmg anmh anmi anmj anmk anml anmm anmn anmo anmp anmq anmr anms anmt
-anmu anmv anmw anmx anmy anmz anna annb annc annd anne annf anng annh anni
-annj annk annl annm annn anno annp annq annr anns annt annu annv annw annx
-anny annz anoa anob anoc anod anoe anof anog anoh anoi anoj anok anol anom
-anon anoo anop anoq anor anos anot anou anov anow anox anoy anoz anpa anpb
-anpc anpd anpe anpf anpg anph anpi anpj anpk anpl anpm anpn anpo anpp anpq
-anpr anps anpt anpu anpv anpw anpx anpy anpz anqa anqb anqc anqd anqe anqf
-anqg anqh anqi anqj anqk anql anqm anqn anqo anqp anqq anqr anqs anqt anqu
-anqv anqw anqx anqy anqz anra anrb anrc anrd anre anrf anrg anrh anri anrj
-anrk anrl anrm anrn anro anrp anrq anrr anrs anrt anru anrv anrw anrx anry
-anrz ansa ansb ansc ansd anse ansf ansg ansh ansi ansj ansk ansl ansm ansn
-anso ansp ansq ansr anss anst ansu ansv answ ansx ansy ansz anta antb antc
-antd ante antf antg anth anti antj antk antl antm antn anto antp antq antr
-ants antt antu antv antw antx anty antz anua anub anuc anud anue anuf anug
-anuh anui anuj anuk anul anum anun anuo anup anuq anur anus anut anuu anuv
-anuw anux anuy anuz anva anvb anvc anvd anve anvf anvg anvh anvi anvj anvk
-anvl anvm anvn anvo anvp anvq anvr anvs anvt anvu anvv anvw anvx anvy anvz
-anwa anwb anwc anwd anwe anwf anwg anwh anwi anwj anwk anwl anwm anwn anwo
-anwp anwq anwr anws anwt anwu anwv anww anwx anwy anwz anxa anxb anxc anxd
-anxe anxf anxg anxh anxi anxj anxk anxl anxm anxn anxo anxp anxq anxr anxs
-anxt anxu anxv anxw anxx anxy anxz anya anyb anyc anyd anye anyf anyg anyh
-anyi anyj anyk anyl anym anyn anyo anyp anyq anyr anys anyt anyu anyv anyw
-anyx anyy anyz anza anzb anzc anzd anze anzf anzg anzh anzi anzj anzk anzl
-anzm anzn anzo anzp anzq anzr anzs anzt anzu anzv anzw anzx anzy anzz aoaa
-aoab aoac aoad aoae aoaf aoag aoah aoai aoaj aoak aoal aoam aoan aoao aoap
-aoaq aoar aoas aoat aoau aoav aoaw aoax aoay aoaz aoba aobb aobc aobd aobe
-aobf aobg aobh aobi aobj aobk aobl aobm aobn aobo aobp aobq aobr aobs aobt
-aobu aobv aobw aobx aoby aobz aoca aocb aocc aocd aoce aocf aocg aoch aoci
-aocj aock aocl aocm aocn aoco aocp aocq aocr aocs aoct aocu aocv aocw aocx
-aocy aocz aoda aodb aodc aodd aode aodf aodg aodh aodi aodj aodk aodl aodm
-aodn aodo aodp aodq aodr aods aodt aodu aodv aodw aodx aody aodz aoea aoeb
-aoec aoed aoee aoef aoeg aoeh aoei aoej aoek aoel aoem aoen aoeo aoep aoeq
-aoer aoes aoet aoeu aoev aoew aoex aoey aoez aofa aofb aofc aofd aofe aoff
-aofg aofh aofi aofj aofk aofl aofm aofn aofo aofp aofq aofr aofs aoft aofu
-aofv aofw aofx aofy aofz aoga aogb aogc aogd aoge aogf aogg aogh aogi aogj
-aogk aogl aogm aogn aogo aogp aogq aogr aogs aogt aogu aogv aogw aogx aogy
-aogz aoha aohb aohc aohd aohe aohf aohg aohh aohi aohj aohk aohl aohm aohn
-aoho aohp aohq aohr aohs aoht aohu aohv aohw aohx aohy aohz aoia aoib aoic
-aoid aoie aoif aoig aoih aoii aoij aoik aoil aoim aoin aoio aoip aoiq aoir
-aois aoit aoiu aoiv aoiw aoix aoiy aoiz aoja aojb aojc aojd aoje aojf aojg
-aojh aoji aojj aojk aojl aojm aojn aojo aojp aojq aojr aojs aojt aoju aojv
-aojw aojx aojy aojz aoka aokb aokc aokd aoke aokf aokg aokh aoki aokj aokk
-aokl aokm aokn aoko aokp aokq aokr aoks aokt aoku aokv aokw aokx aoky aokz
-aola aolb aolc aold aole aolf aolg aolh aoli aolj aolk aoll aolm aoln aolo
-aolp aolq aolr aols aolt aolu aolv aolw aolx aoly aolz aoma aomb aomc aomd
-aome aomf aomg aomh aomi aomj aomk aoml aomm aomn aomo aomp aomq aomr aoms
-aomt aomu aomv aomw aomx aomy aomz aona aonb aonc aond aone aonf aong aonh
-aoni aonj aonk aonl aonm aonn aono aonp aonq aonr aons aont aonu aonv aonw
-aonx aony aonz aooa aoob aooc aood aooe aoof aoog aooh aooi aooj aook aool
-aoom aoon aooo aoop aooq aoor aoos aoot aoou aoov aoow aoox aooy aooz aopa
-aopb aopc aopd aope aopf aopg aoph aopi aopj aopk aopl aopm aopn aopo aopp
-aopq aopr aops aopt aopu aopv aopw aopx aopy aopz aoqa aoqb aoqc aoqd aoqe
-aoqf aoqg aoqh aoqi aoqj aoqk aoql aoqm aoqn aoqo aoqp aoqq aoqr aoqs aoqt
-aoqu aoqv aoqw aoqx aoqy aoqz aora aorb aorc aord aore aorf aorg aorh aori
-aorj aork aorl aorm aorn aoro aorp aorq aorr aors aort aoru aorv aorw aorx
-aory aorz aosa aosb aosc aosd aose aosf aosg aosh aosi aosj aosk aosl aosm
-aosn aoso aosp aosq aosr aoss aost aosu aosv aosw aosx aosy aosz aota aotb
-aotc aotd aote aotf aotg aoth aoti aotj aotk aotl aotm aotn aoto aotp aotq
-aotr aots aott aotu aotv aotw aotx aoty aotz aoua aoub aouc aoud aoue aouf
-aoug aouh aoui aouj aouk aoul aoum aoun aouo aoup aouq aour aous aout aouu
-aouv aouw aoux aouy aouz aova aovb aovc aovd aove aovf aovg aovh aovi aovj
-aovk aovl aovm aovn aovo aovp aovq aovr aovs aovt aovu aovv aovw aovx aovy
-aovz aowa aowb aowc aowd aowe aowf aowg aowh aowi aowj aowk aowl aowm aown
-aowo aowp aowq aowr aows aowt aowu aowv aoww aowx aowy aowz aoxa aoxb aoxc
-aoxd aoxe aoxf aoxg aoxh aoxi aoxj aoxk aoxl aoxm aoxn aoxo aoxp aoxq aoxr
-aoxs aoxt aoxu aoxv aoxw aoxx aoxy aoxz aoya aoyb aoyc aoyd aoye aoyf aoyg
-aoyh aoyi aoyj aoyk aoyl aoym aoyn aoyo aoyp aoyq aoyr aoys aoyt aoyu aoyv
-aoyw aoyx aoyy aoyz aoza aozb aozc aozd aoze aozf aozg aozh aozi aozj aozk
-aozl aozm aozn aozo aozp aozq aozr aozs aozt aozu aozv aozw aozx aozy aozz
-apaa apab apac apad apae apaf apag apah apai apaj apak apal apam apan apao
-apap apaq apar apas apat apau apav apaw apax apay apaz apba apbb apbc apbd
-apbe apbf apbg apbh apbi apbj apbk apbl apbm apbn apbo apbp apbq apbr apbs
-apbt apbu apbv apbw apbx apby apbz apca apcb apcc apcd apce apcf apcg apch
-apci apcj apck apcl apcm apcn apco apcp apcq apcr apcs apct apcu apcv apcw
-apcx apcy apcz apda apdb apdc apdd apde apdf apdg apdh apdi apdj apdk apdl
-apdm apdn apdo apdp apdq apdr apds apdt apdu apdv apdw apdx apdy apdz apea
-apeb apec aped apee apef apeg apeh apei apej apek apel apem apen apeo apep
-apeq aper apes apet apeu apev apew apex apey apez apfa apfb apfc apfd apfe
-apff apfg apfh apfi apfj apfk apfl apfm apfn apfo apfp apfq apfr apfs apft
-apfu apfv apfw apfx apfy apfz apga apgb apgc apgd apge apgf apgg apgh apgi
-apgj apgk apgl apgm apgn apgo apgp apgq apgr apgs apgt apgu apgv apgw apgx
-apgy apgz apha aphb aphc aphd aphe aphf aphg aphh aphi aphj aphk aphl aphm
-aphn apho aphp aphq aphr aphs apht aphu aphv aphw aphx aphy aphz apia apib
-apic apid apie apif apig apih apii apij apik apil apim apin apio apip apiq
-apir apis apit apiu apiv apiw apix apiy apiz apja apjb apjc apjd apje apjf
-apjg apjh apji apjj apjk apjl apjm apjn apjo apjp apjq apjr apjs apjt apju
-apjv apjw apjx apjy apjz apka apkb apkc apkd apke apkf apkg apkh apki apkj
-apkk apkl apkm apkn apko apkp apkq apkr apks apkt apku apkv apkw apkx apky
-apkz apla aplb aplc apld aple aplf aplg aplh apli aplj aplk apll aplm apln
-aplo aplp aplq aplr apls aplt aplu aplv aplw aplx aply aplz apma apmb apmc
-apmd apme apmf apmg apmh apmi apmj apmk apml apmm apmn apmo apmp apmq apmr
-apms apmt apmu apmv apmw apmx apmy apmz apna apnb apnc apnd apne apnf apng
-apnh apni apnj apnk apnl apnm apnn apno apnp apnq apnr apns apnt apnu apnv
-apnw apnx apny apnz apoa apob apoc apod apoe apof apog apoh apoi apoj apok
-apol apom apon apoo apop apoq apor apos apot apou apov apow apox apoy apoz
-appa appb appc appd appe appf appg apph appi appj appk appl appm appn appo
-appp appq appr apps appt appu appv appw appx appy appz apqa apqb apqc apqd
-apqe apqf apqg apqh apqi apqj apqk apql apqm apqn apqo apqp apqq apqr apqs
-apqt apqu apqv apqw apqx apqy apqz apra aprb aprc aprd apre aprf aprg aprh
-apri aprj aprk aprl aprm aprn apro aprp aprq aprr aprs aprt apru aprv aprw
-aprx apry aprz apsa apsb apsc apsd apse apsf apsg apsh apsi apsj apsk apsl
-apsm apsn apso apsp apsq apsr apss apst apsu apsv apsw apsx apsy apsz apta
-aptb aptc aptd apte aptf aptg apth apti aptj aptk aptl aptm aptn apto aptp
-aptq aptr apts aptt aptu aptv aptw aptx apty aptz apua apub apuc apud apue
-apuf apug apuh apui apuj apuk apul apum apun apuo apup apuq apur apus aput
-apuu apuv apuw apux apuy apuz apva apvb apvc apvd apve apvf apvg apvh apvi
-apvj apvk apvl apvm apvn apvo apvp apvq apvr apvs apvt apvu apvv apvw apvx
-apvy apvz apwa apwb apwc apwd apwe apwf apwg apwh apwi apwj apwk apwl apwm
-apwn apwo apwp apwq apwr apws apwt apwu apwv apww apwx apwy apwz apxa apxb
-apxc apxd apxe apxf apxg apxh apxi apxj apxk apxl apxm apxn apxo apxp apxq
-apxr apxs apxt apxu apxv apxw apxx apxy apxz apya apyb apyc apyd apye apyf
-apyg apyh apyi apyj apyk apyl apym apyn apyo apyp apyq apyr apys apyt apyu
-apyv apyw apyx apyy apyz apza apzb apzc apzd apze apzf apzg apzh apzi apzj
-apzk apzl apzm apzn apzo apzp apzq apzr apzs apzt apzu apzv apzw apzx apzy
-apzz aqaa aqab aqac aqad aqae aqaf aqag aqah aqai aqaj aqak aqal aqam aqan
-aqao aqap aqaq aqar aqas aqat aqau aqav aqaw aqax aqay aqaz aqba aqbb aqbc
-aqbd aqbe aqbf aqbg aqbh aqbi aqbj aqbk aqbl aqbm aqbn aqbo aqbp aqbq aqbr
-aqbs aqbt aqbu aqbv aqbw aqbx aqby aqbz aqca aqcb aqcc aqcd aqce aqcf aqcg
-aqch aqci aqcj aqck aqcl aqcm aqcn aqco aqcp aqcq aqcr aqcs aqct aqcu aqcv
-aqcw aqcx aqcy aqcz aqda aqdb aqdc aqdd aqde aqdf aqdg aqdh aqdi aqdj aqdk
-aqdl aqdm aqdn aqdo aqdp aqdq aqdr aqds aqdt aqdu aqdv aqdw aqdx aqdy aqdz
-aqea aqeb aqec aqed aqee aqef aqeg aqeh aqei aqej aqek aqel aqem aqen aqeo
-aqep aqeq aqer aqes aqet aqeu aqev aqew aqex aqey aqez aqfa aqfb aqfc aqfd
-aqfe aqff aqfg aqfh aqfi aqfj aqfk aqfl aqfm aqfn aqfo aqfp aqfq aqfr aqfs
-aqft aqfu aqfv aqfw aqfx aqfy aqfz aqga aqgb aqgc aqgd aqge aqgf aqgg aqgh
-aqgi aqgj aqgk aqgl aqgm aqgn aqgo aqgp aqgq aqgr aqgs aqgt aqgu aqgv aqgw
-aqgx aqgy aqgz aqha aqhb aqhc aqhd aqhe aqhf aqhg aqhh aqhi aqhj aqhk aqhl
-aqhm aqhn aqho aqhp aqhq aqhr aqhs aqht aqhu aqhv aqhw aqhx aqhy aqhz aqia
-aqib aqic aqid aqie aqif aqig aqih aqii aqij aqik aqil aqim aqin aqio aqip
-aqiq aqir aqis aqit aqiu aqiv aqiw aqix aqiy aqiz aqja aqjb aqjc aqjd aqje
-aqjf aqjg aqjh aqji aqjj aqjk aqjl aqjm aqjn aqjo aqjp aqjq aqjr aqjs aqjt
-aqju aqjv aqjw aqjx aqjy aqjz aqka aqkb aqkc aqkd aqke aqkf aqkg aqkh aqki
-aqkj aqkk aqkl aqkm aqkn aqko aqkp aqkq aqkr aqks aqkt aqku aqkv aqkw aqkx
-aqky aqkz aqla aqlb aqlc aqld aqle aqlf aqlg aqlh aqli aqlj aqlk aqll aqlm
-aqln aqlo aqlp aqlq aqlr aqls aqlt aqlu aqlv aqlw aqlx aqly aqlz aqma aqmb
-aqmc aqmd aqme aqmf aqmg aqmh aqmi aqmj aqmk aqml aqmm aqmn aqmo aqmp aqmq
-aqmr aqms aqmt aqmu aqmv aqmw aqmx aqmy aqmz aqna aqnb aqnc aqnd aqne aqnf
-aqng aqnh aqni aqnj aqnk aqnl aqnm aqnn aqno aqnp aqnq aqnr aqns aqnt aqnu
-aqnv aqnw aqnx aqny aqnz aqoa aqob aqoc aqod aqoe aqof aqog aqoh aqoi aqoj
-aqok aqol aqom aqon aqoo aqop aqoq aqor aqos aqot aqou aqov aqow aqox aqoy
-aqoz aqpa aqpb aqpc aqpd aqpe aqpf aqpg aqph aqpi aqpj aqpk aqpl aqpm aqpn
-aqpo aqpp aqpq aqpr aqps aqpt aqpu aqpv aqpw aqpx aqpy aqpz aqqa aqqb aqqc
-aqqd aqqe aqqf aqqg aqqh aqqi aqqj aqqk aqql aqqm aqqn aqqo aqqp aqqq aqqr
-aqqs aqqt aqqu aqqv aqqw aqqx aqqy aqqz aqra aqrb aqrc aqrd aqre aqrf aqrg
-aqrh aqri aqrj aqrk aqrl aqrm aqrn aqro aqrp aqrq aqrr aqrs aqrt aqru aqrv
-aqrw aqrx aqry aqrz aqsa aqsb aqsc aqsd aqse aqsf aqsg aqsh aqsi aqsj aqsk
-aqsl aqsm aqsn aqso aqsp aqsq aqsr aqss aqst aqsu aqsv aqsw aqsx aqsy aqsz
-aqta aqtb aqtc aqtd aqte aqtf aqtg aqth aqti aqtj aqtk aqtl aqtm aqtn aqto
-aqtp aqtq aqtr aqts aqtt aqtu aqtv aqtw aqtx aqty aqtz aqua aqub aquc aqud
-aque aquf aqug aquh aqui aquj aquk aqul aqum aqun aquo aqup aquq aqur aqus
-aqut aquu aquv aquw aqux aquy aquz aqva aqvb aqvc aqvd aqve aqvf aqvg aqvh
-aqvi aqvj aqvk aqvl aqvm aqvn aqvo aqvp aqvq aqvr aqvs aqvt aqvu aqvv aqvw
-aqvx aqvy aqvz aqwa aqwb aqwc aqwd aqwe aqwf aqwg aqwh aqwi aqwj aqwk aqwl
-aqwm aqwn aqwo aqwp aqwq aqwr aqws aqwt aqwu aqwv aqww aqwx aqwy aqwz aqxa
-aqxb aqxc aqxd aqxe aqxf aqxg aqxh aqxi aqxj aqxk aqxl aqxm aqxn aqxo aqxp
-aqxq aqxr aqxs aqxt aqxu aqxv aqxw aqxx aqxy aqxz aqya aqyb aqyc aqyd aqye
-aqyf aqyg aqyh aqyi aqyj aqyk aqyl aqym aqyn aqyo aqyp aqyq aqyr aqys aqyt
-aqyu aqyv aqyw aqyx aqyy aqyz aqza aqzb aqzc aqzd aqze aqzf aqzg aqzh aqzi
-aqzj aqzk aqzl aqzm aqzn aqzo aqzp aqzq aqzr aqzs aqzt aqzu aqzv aqzw aqzx
-aqzy aqzz araa arab arac arad arae araf arag arah arai araj arak aral aram
-aran arao arap araq arar aras arat arau arav araw arax aray araz arba arbb
-arbc arbd arbe arbf arbg arbh arbi arbj arbk arbl arbm arbn arbo arbp arbq
-arbr arbs arbt arbu arbv arbw arbx arby arbz arca arcb arcc arcd arce arcf
-arcg arch arci arcj arck arcl arcm arcn arco arcp arcq arcr arcs arct arcu
-arcv arcw arcx arcy arcz arda ardb ardc ardd arde ardf ardg ardh ardi ardj
-ardk ardl ardm ardn ardo ardp ardq ardr ards ardt ardu ardv ardw ardx ardy
-ardz area areb arec ared aree aref areg areh arei arej arek arel arem aren
-areo arep areq arer ares aret areu arev arew arex arey arez arfa arfb arfc
-arfd arfe arff arfg arfh arfi arfj arfk arfl arfm arfn arfo arfp arfq arfr
-arfs arft arfu arfv arfw arfx arfy arfz arga argb argc argd arge argf argg
-argh argi argj argk argl argm argn argo argp argq argr args argt argu argv
-argw argx argy argz arha arhb arhc arhd arhe arhf arhg arhh arhi arhj arhk
-arhl arhm arhn arho arhp arhq arhr arhs arht arhu arhv arhw arhx arhy arhz
-aria arib aric arid arie arif arig arih arii arij arik aril arim arin ario
-arip ariq arir aris arit ariu ariv ariw arix ariy ariz arja arjb arjc arjd
-arje arjf arjg arjh arji arjj arjk arjl arjm arjn arjo arjp arjq arjr arjs
-arjt arju arjv arjw arjx arjy arjz arka arkb arkc arkd arke arkf arkg arkh
-arki arkj arkk arkl arkm arkn arko arkp arkq arkr arks arkt arku arkv arkw
-arkx arky arkz arla arlb arlc arld arle arlf arlg arlh arli arlj arlk arll
-arlm arln arlo arlp arlq arlr arls arlt arlu arlv arlw arlx arly arlz arma
-armb armc armd arme armf armg armh armi armj armk arml armm armn armo armp
-armq armr arms armt armu armv armw armx army armz arna arnb arnc arnd arne
-arnf arng arnh arni arnj arnk arnl arnm arnn arno arnp arnq arnr arns arnt
-arnu arnv arnw arnx arny arnz aroa arob aroc arod aroe arof arog aroh aroi
-aroj arok arol arom aron aroo arop aroq aror aros arot arou arov arow arox
-aroy aroz arpa arpb arpc arpd arpe arpf arpg arph arpi arpj arpk arpl arpm
-arpn arpo arpp arpq arpr arps arpt arpu arpv arpw arpx arpy arpz arqa arqb
-arqc arqd arqe arqf arqg arqh arqi arqj arqk arql arqm arqn arqo arqp arqq
-arqr arqs arqt arqu arqv arqw arqx arqy arqz arra arrb arrc arrd arre arrf
-arrg arrh arri arrj arrk arrl arrm arrn arro arrp arrq arrr arrs arrt arru
-arrv arrw arrx arry arrz arsa arsb arsc arsd arse arsf arsg arsh arsi arsj
-arsk arsl arsm arsn arso arsp arsq arsr arss arst arsu arsv arsw arsx arsy
-arsz arta artb artc artd arte artf artg arth arti artj artk artl artm artn
-arto artp artq artr arts artt artu artv artw artx arty artz arua arub aruc
-arud arue aruf arug aruh arui aruj aruk arul arum arun aruo arup aruq arur
-arus arut aruu aruv aruw arux aruy aruz arva arvb arvc arvd arve arvf arvg
-arvh arvi arvj arvk arvl arvm arvn arvo arvp arvq arvr arvs arvt arvu arvv
-arvw arvx arvy arvz arwa arwb arwc arwd arwe arwf arwg arwh arwi arwj arwk
-arwl arwm arwn arwo arwp arwq arwr arws arwt arwu arwv arww arwx arwy arwz
-arxa arxb arxc arxd arxe arxf arxg arxh arxi arxj arxk arxl arxm arxn arxo
-arxp arxq arxr arxs arxt arxu arxv arxw arxx arxy arxz arya aryb aryc aryd
-arye aryf aryg aryh aryi aryj aryk aryl arym aryn aryo aryp aryq aryr arys
-aryt aryu aryv aryw aryx aryy aryz arza arzb arzc arzd arze arzf arzg arzh
-arzi arzj arzk arzl arzm arzn arzo arzp arzq arzr arzs arzt arzu arzv arzw
-arzx arzy arzz asaa asab asac asad asae asaf asag asah asai asaj asak asal
-asam asan asao asap asaq asar asas asat asau asav asaw asax asay asaz asba
-asbb asbc asbd asbe asbf asbg asbh asbi asbj asbk asbl asbm asbn asbo asbp
-asbq asbr asbs asbt asbu asbv asbw asbx asby asbz asca ascb ascc ascd asce
-ascf ascg asch asci ascj asck ascl ascm ascn asco ascp ascq ascr ascs asct
-ascu ascv ascw ascx ascy ascz asda asdb asdc asdd asde asdf asdg asdh asdi
-asdj asdk asdl asdm asdn asdo asdp asdq asdr asds asdt asdu asdv asdw asdx
-asdy asdz asea aseb asec ased asee asef aseg aseh asei asej asek asel asem
-asen aseo asep aseq aser ases aset aseu asev asew asex asey asez asfa asfb
-asfc asfd asfe asff asfg asfh asfi asfj asfk asfl asfm asfn asfo asfp asfq
-asfr asfs asft asfu asfv asfw asfx asfy asfz asga asgb asgc asgd asge asgf
-asgg asgh asgi asgj asgk asgl asgm asgn asgo asgp asgq asgr asgs asgt asgu
-asgv asgw asgx asgy asgz asha ashb ashc ashd ashe ashf ashg ashh ashi ashj
-ashk ashl ashm ashn asho ashp ashq ashr ashs asht ashu ashv ashw ashx ashy
-ashz asia asib asic asid asie asif asig asih asii asij asik asil asim asin
-asio asip asiq asir asis asit asiu asiv asiw asix asiy asiz asja asjb asjc
-asjd asje asjf asjg asjh asji asjj asjk asjl asjm asjn asjo asjp asjq asjr
-asjs asjt asju asjv asjw asjx asjy asjz aska askb askc askd aske askf askg
-askh aski askj askk askl askm askn asko askp askq askr asks askt asku askv
-askw askx asky askz asla aslb aslc asld asle aslf aslg aslh asli aslj aslk
-asll aslm asln aslo aslp aslq aslr asls aslt aslu aslv aslw aslx asly aslz
-asma asmb asmc asmd asme asmf asmg asmh asmi asmj asmk asml asmm asmn asmo
-asmp asmq asmr asms asmt asmu asmv asmw asmx asmy asmz asna asnb asnc asnd
-asne asnf asng asnh asni asnj asnk asnl asnm asnn asno asnp asnq asnr asns
-asnt asnu asnv asnw asnx asny asnz asoa asob asoc asod asoe asof asog asoh
-asoi asoj asok asol asom ason asoo asop asoq asor asos asot asou asov asow
-asox asoy asoz aspa aspb aspc aspd aspe aspf aspg asph aspi aspj aspk aspl
-aspm aspn aspo aspp aspq aspr asps aspt aspu aspv aspw aspx aspy aspz asqa
-asqb asqc asqd asqe asqf asqg asqh asqi asqj asqk asql asqm asqn asqo asqp
-asqq asqr asqs asqt asqu asqv asqw asqx asqy asqz asra asrb asrc asrd asre
-asrf asrg asrh asri asrj asrk asrl asrm asrn asro asrp asrq asrr asrs asrt
-asru asrv asrw asrx asry asrz assa assb assc assd asse assf assg assh assi
-assj assk assl assm assn asso assp assq assr asss asst assu assv assw assx
-assy assz asta astb astc astd aste astf astg asth asti astj astk astl astm
-astn asto astp astq astr asts astt astu astv astw astx asty astz asua asub
-asuc asud asue asuf asug asuh asui asuj asuk asul asum asun asuo asup asuq
-asur asus asut asuu asuv asuw asux asuy asuz asva asvb asvc asvd asve asvf
-asvg asvh asvi asvj asvk asvl asvm asvn asvo asvp asvq asvr asvs asvt asvu
-asvv asvw asvx asvy asvz aswa aswb aswc aswd aswe aswf aswg aswh aswi aswj
-aswk aswl aswm aswn aswo aswp aswq aswr asws aswt aswu aswv asww aswx aswy
-aswz asxa asxb asxc asxd asxe asxf asxg asxh asxi asxj asxk asxl asxm asxn
-asxo asxp asxq asxr asxs asxt asxu asxv asxw asxx asxy asxz asya asyb asyc
-asyd asye asyf asyg asyh asyi asyj asyk asyl asym asyn asyo asyp asyq asyr
-asys asyt asyu asyv asyw asyx asyy asyz asza aszb aszc aszd asze aszf aszg
-aszh aszi aszj aszk aszl aszm aszn aszo aszp aszq aszr aszs aszt aszu aszv
-aszw aszx aszy aszz ataa atab atac atad atae ataf atag atah atai ataj atak
-atal atam atan atao atap ataq atar atas atat atau atav ataw atax atay ataz
-atba atbb atbc atbd atbe atbf atbg atbh atbi atbj atbk atbl atbm atbn atbo
-atbp atbq atbr atbs atbt atbu atbv atbw atbx atby atbz atca atcb atcc atcd
-atce atcf atcg atch atci atcj atck atcl atcm atcn atco atcp atcq atcr atcs
-atct atcu atcv atcw atcx atcy atcz atda atdb atdc atdd atde atdf atdg atdh
-atdi atdj atdk atdl atdm atdn atdo atdp atdq atdr atds atdt atdu atdv atdw
-atdx atdy atdz atea ateb atec ated atee atef ateg ateh atei atej atek atel
-atem aten ateo atep ateq ater ates atet ateu atev atew atex atey atez atfa
-atfb atfc atfd atfe atff atfg atfh atfi atfj atfk atfl atfm atfn atfo atfp
-atfq atfr atfs atft atfu atfv atfw atfx atfy atfz atga atgb atgc atgd atge
-atgf atgg atgh atgi atgj atgk atgl atgm atgn atgo atgp atgq atgr atgs atgt
-atgu atgv atgw atgx atgy atgz atha athb athc athd athe athf athg athh athi
-athj athk athl athm athn atho athp athq athr aths atht athu athv athw athx
-athy athz atia atib atic atid atie atif atig atih atii atij atik atil atim
-atin atio atip atiq atir atis atit atiu ativ atiw atix atiy atiz atja atjb
-atjc atjd atje atjf atjg atjh atji atjj atjk atjl atjm atjn atjo atjp atjq
-atjr atjs atjt atju atjv atjw atjx atjy atjz atka atkb atkc atkd atke atkf
-atkg atkh atki atkj atkk atkl atkm atkn atko atkp atkq atkr atks atkt atku
-atkv atkw atkx atky atkz atla atlb atlc atld atle atlf atlg atlh atli atlj
-atlk atll atlm atln atlo atlp atlq atlr atls atlt atlu atlv atlw atlx atly
-atlz atma atmb atmc atmd atme atmf atmg atmh atmi atmj atmk atml atmm atmn
-atmo atmp atmq atmr atms atmt atmu atmv atmw atmx atmy atmz atna atnb atnc
-atnd atne atnf atng atnh atni atnj atnk atnl atnm atnn atno atnp atnq atnr
-atns atnt atnu atnv atnw atnx atny atnz atoa atob atoc atod atoe atof atog
-atoh atoi atoj atok atol atom aton atoo atop atoq ator atos atot atou atov
-atow atox atoy atoz atpa atpb atpc atpd atpe atpf atpg atph atpi atpj atpk
-atpl atpm atpn atpo atpp atpq atpr atps atpt atpu atpv atpw atpx atpy atpz
-atqa atqb atqc atqd atqe atqf atqg atqh atqi atqj atqk atql atqm atqn atqo
-atqp atqq atqr atqs atqt atqu atqv atqw atqx atqy atqz atra atrb atrc atrd
-atre atrf atrg atrh atri atrj atrk atrl atrm atrn atro atrp atrq atrr atrs
-atrt atru atrv atrw atrx atry atrz atsa atsb atsc atsd atse atsf atsg atsh
-atsi atsj atsk atsl atsm atsn atso atsp atsq atsr atss atst atsu atsv atsw
-atsx atsy atsz atta attb attc attd atte attf attg atth atti attj attk attl
-attm attn atto attp attq attr atts attt attu attv attw attx atty attz atua
-atub atuc atud atue atuf atug atuh atui atuj atuk atul atum atun atuo atup
-atuq atur atus atut atuu atuv atuw atux atuy atuz atva atvb atvc atvd atve
-atvf atvg atvh atvi atvj atvk atvl atvm atvn atvo atvp atvq atvr atvs atvt
-atvu atvv atvw atvx atvy atvz atwa atwb atwc atwd atwe atwf atwg atwh atwi
-atwj atwk atwl atwm atwn atwo atwp atwq atwr atws atwt atwu atwv atww atwx
-atwy atwz atxa atxb atxc atxd atxe atxf atxg atxh atxi atxj atxk atxl atxm
-atxn atxo atxp atxq atxr atxs atxt atxu atxv atxw atxx atxy atxz atya atyb
-atyc atyd atye atyf atyg atyh atyi atyj atyk atyl atym atyn atyo atyp atyq
-atyr atys atyt atyu atyv atyw atyx atyy atyz atza atzb atzc atzd atze atzf
-atzg atzh atzi atzj atzk atzl atzm atzn atzo atzp atzq atzr atzs atzt atzu
-atzv atzw atzx atzy atzz auaa auab auac auad auae auaf auag auah auai auaj
-auak aual auam auan auao auap auaq auar auas auat auau auav auaw auax auay
-auaz auba aubb aubc aubd aube aubf aubg aubh aubi aubj aubk aubl aubm aubn
-aubo aubp aubq aubr aubs aubt aubu aubv aubw aubx auby aubz auca aucb aucc
-aucd auce aucf aucg auch auci aucj auck aucl aucm aucn auco aucp aucq aucr
-aucs auct aucu aucv aucw aucx aucy aucz auda audb audc audd aude audf audg
-audh audi audj audk audl audm audn audo audp audq audr auds audt audu audv
-audw audx audy audz auea aueb auec aued auee auef aueg aueh auei auej auek
-auel auem auen aueo auep aueq auer aues auet aueu auev auew auex auey auez
-aufa aufb aufc aufd aufe auff aufg aufh aufi aufj aufk aufl aufm aufn aufo
-aufp aufq aufr aufs auft aufu aufv aufw aufx aufy aufz auga augb augc augd
-auge augf augg augh augi augj augk augl augm augn augo augp augq augr augs
-augt augu augv augw augx augy augz auha auhb auhc auhd auhe auhf auhg auhh
-auhi auhj auhk auhl auhm auhn auho auhp auhq auhr auhs auht auhu auhv auhw
-auhx auhy auhz auia auib auic auid auie auif auig auih auii auij auik auil
-auim auin auio auip auiq auir auis auit auiu auiv auiw auix auiy auiz auja
-aujb aujc aujd auje aujf aujg aujh auji aujj aujk aujl aujm aujn aujo aujp
-aujq aujr aujs aujt auju aujv aujw aujx aujy aujz auka aukb aukc aukd auke
-aukf aukg aukh auki aukj aukk aukl aukm aukn auko aukp aukq aukr auks aukt
-auku aukv aukw aukx auky aukz aula aulb aulc auld aule aulf aulg aulh auli
-aulj aulk aull aulm auln aulo aulp aulq aulr auls ault aulu aulv aulw aulx
-auly aulz auma aumb aumc aumd aume aumf aumg aumh aumi aumj aumk auml aumm
-aumn aumo aump aumq aumr aums aumt aumu aumv aumw aumx aumy aumz auna aunb
-aunc aund aune aunf aung aunh auni aunj aunk aunl aunm aunn auno aunp aunq
-aunr auns aunt aunu aunv aunw aunx auny aunz auoa auob auoc auod auoe auof
-auog auoh auoi auoj auok auol auom auon auoo auop auoq auor auos auot auou
-auov auow auox auoy auoz aupa aupb aupc aupd aupe aupf aupg auph aupi aupj
-aupk aupl aupm aupn aupo aupp aupq aupr aups aupt aupu aupv aupw aupx aupy
-aupz auqa auqb auqc auqd auqe auqf auqg auqh auqi auqj auqk auql auqm auqn
-auqo auqp auqq auqr auqs auqt auqu auqv auqw auqx auqy auqz aura aurb aurc
-aurd aure aurf aurg aurh auri aurj aurk aurl aurm aurn auro aurp aurq aurr
-aurs aurt auru aurv aurw aurx aury aurz ausa ausb ausc ausd ause ausf ausg
-aush ausi ausj ausk ausl ausm ausn auso ausp ausq ausr auss aust ausu ausv
-ausw ausx ausy ausz auta autb autc autd aute autf autg auth auti autj autk
-autl autm autn auto autp autq autr auts autt autu autv autw autx auty autz
-auua auub auuc auud auue auuf auug auuh auui auuj auuk auul auum auun auuo
-auup auuq auur auus auut auuu auuv auuw auux auuy auuz auva auvb auvc auvd
-auve auvf auvg auvh auvi auvj auvk auvl auvm auvn auvo auvp auvq auvr auvs
-auvt auvu auvv auvw auvx auvy auvz auwa auwb auwc auwd auwe auwf auwg auwh
-auwi auwj auwk auwl auwm auwn auwo auwp auwq auwr auws auwt auwu auwv auww
-auwx auwy auwz auxa auxb auxc auxd auxe auxf auxg auxh auxi auxj auxk auxl
-auxm auxn auxo auxp auxq auxr auxs auxt auxu auxv auxw auxx auxy auxz auya
-auyb auyc auyd auye auyf auyg auyh auyi auyj auyk auyl auym auyn auyo auyp
-auyq auyr auys auyt auyu auyv auyw auyx auyy auyz auza auzb auzc auzd auze
-auzf auzg auzh auzi auzj auzk auzl auzm auzn auzo auzp auzq auzr auzs auzt
-auzu auzv auzw auzx auzy auzz avaa avab avac avad avae avaf avag avah avai
-avaj avak aval avam avan avao avap avaq avar avas avat avau avav avaw avax
-avay avaz avba avbb avbc avbd avbe avbf avbg avbh avbi avbj avbk avbl avbm
-avbn avbo avbp avbq avbr avbs avbt avbu avbv avbw avbx avby avbz avca avcb
-avcc avcd avce avcf avcg avch avci avcj avck avcl avcm avcn avco avcp avcq
-avcr avcs avct avcu avcv avcw avcx avcy avcz avda avdb avdc avdd avde avdf
-avdg avdh avdi avdj avdk avdl avdm avdn avdo avdp avdq avdr avds avdt avdu
-avdv avdw avdx avdy avdz avea aveb avec aved avee avef aveg aveh avei avej
-avek avel avem aven aveo avep aveq aver aves avet aveu avev avew avex avey
-avez avfa avfb avfc avfd avfe avff avfg avfh avfi avfj avfk avfl avfm avfn
-avfo avfp avfq avfr avfs avft avfu avfv avfw avfx avfy avfz avga avgb avgc
-avgd avge avgf avgg avgh avgi avgj avgk avgl avgm avgn avgo avgp avgq avgr
-avgs avgt avgu avgv avgw avgx avgy avgz avha avhb avhc avhd avhe avhf avhg
-avhh avhi avhj avhk avhl avhm avhn avho avhp avhq avhr avhs avht avhu avhv
-avhw avhx avhy avhz avia avib avic avid avie avif avig avih avii avij avik
-avil avim avin avio avip aviq avir avis avit aviu aviv aviw avix aviy aviz
-avja avjb avjc avjd avje avjf avjg avjh avji avjj avjk avjl avjm avjn avjo
-avjp avjq avjr avjs avjt avju avjv avjw avjx avjy avjz avka avkb avkc avkd
-avke avkf avkg avkh avki avkj avkk avkl avkm avkn avko avkp avkq avkr avks
-avkt avku avkv avkw avkx avky avkz avla avlb avlc avld avle avlf avlg avlh
-avli avlj avlk avll avlm avln avlo avlp avlq avlr avls avlt avlu avlv avlw
-avlx avly avlz avma avmb avmc avmd avme avmf avmg avmh avmi avmj avmk avml
-avmm avmn avmo avmp avmq avmr avms avmt avmu avmv avmw avmx avmy avmz avna
-avnb avnc avnd avne avnf avng avnh avni avnj avnk avnl avnm avnn avno avnp
-avnq avnr avns avnt avnu avnv avnw avnx avny avnz avoa avob avoc avod avoe
-avof avog avoh avoi avoj avok avol avom avon avoo avop avoq avor avos avot
-avou avov avow avox avoy avoz avpa avpb avpc avpd avpe avpf avpg avph avpi
-avpj avpk avpl avpm avpn avpo avpp avpq avpr avps avpt avpu avpv avpw avpx
-avpy avpz avqa avqb avqc avqd avqe avqf avqg avqh avqi avqj avqk avql avqm
-avqn avqo avqp avqq avqr avqs avqt avqu avqv avqw avqx avqy avqz avra avrb
-avrc avrd avre avrf avrg avrh avri avrj avrk avrl avrm avrn avro avrp avrq
-avrr avrs avrt avru avrv avrw avrx avry avrz avsa avsb avsc avsd avse avsf
-avsg avsh avsi avsj avsk avsl avsm avsn avso avsp avsq avsr avss avst avsu
-avsv avsw avsx avsy avsz avta avtb avtc avtd avte avtf avtg avth avti avtj
-avtk avtl avtm avtn avto avtp avtq avtr avts avtt avtu avtv avtw avtx avty
-avtz avua avub avuc avud avue avuf avug avuh avui avuj avuk avul avum avun
-avuo avup avuq avur avus avut avuu avuv avuw avux avuy avuz avva avvb avvc
-avvd avve avvf avvg avvh avvi avvj avvk avvl avvm avvn avvo avvp avvq avvr
-avvs avvt avvu avvv avvw avvx avvy avvz avwa avwb avwc avwd avwe avwf avwg
-avwh avwi avwj avwk avwl avwm avwn avwo avwp avwq avwr avws avwt avwu avwv
-avww avwx avwy avwz avxa avxb avxc avxd avxe avxf avxg avxh avxi avxj avxk
-avxl avxm avxn avxo avxp avxq avxr avxs avxt avxu avxv avxw avxx avxy avxz
-avya avyb avyc avyd avye avyf avyg avyh avyi avyj avyk avyl avym avyn avyo
-avyp avyq avyr avys avyt avyu avyv avyw avyx avyy avyz avza avzb avzc avzd
-avze avzf avzg avzh avzi avzj avzk avzl avzm avzn avzo avzp avzq avzr avzs
-avzt avzu avzv avzw avzx avzy avzz awaa awab awac awad awae awaf awag awah
-awai awaj awak awal awam awan awao awap awaq awar awas awat awau awav awaw
-awax away awaz awba awbb awbc awbd awbe awbf awbg awbh awbi awbj awbk awbl
-awbm awbn awbo awbp awbq awbr awbs awbt awbu awbv awbw awbx awby awbz awca
-awcb awcc awcd awce awcf awcg awch awci awcj awck awcl awcm awcn awco awcp
-awcq awcr awcs awct awcu awcv awcw awcx awcy awcz awda awdb awdc awdd awde
-awdf awdg awdh awdi awdj awdk awdl awdm awdn awdo awdp awdq awdr awds awdt
-awdu awdv awdw awdx awdy awdz awea aweb awec awed awee awef aweg aweh awei
-awej awek awel awem awen aweo awep aweq awer awes awet aweu awev awew awex
-awey awez awfa awfb awfc awfd awfe awff awfg awfh awfi awfj awfk awfl awfm
-awfn awfo awfp awfq awfr awfs awft awfu awfv awfw awfx awfy awfz awga awgb
-awgc awgd awge awgf awgg awgh awgi awgj awgk awgl awgm awgn awgo awgp awgq
-awgr awgs awgt awgu awgv awgw awgx awgy awgz awha awhb awhc awhd awhe awhf
-awhg awhh awhi awhj awhk awhl awhm awhn awho awhp awhq awhr awhs awht awhu
-awhv awhw awhx awhy awhz awia awib awic awid awie awif awig awih awii awij
-awik awil awim awin awio awip awiq awir awis awit awiu awiv awiw awix awiy
-awiz awja awjb awjc awjd awje awjf awjg awjh awji awjj awjk awjl awjm awjn
-awjo awjp awjq awjr awjs awjt awju awjv awjw awjx awjy awjz awka awkb awkc
-awkd awke awkf awkg awkh awki awkj awkk awkl awkm awkn awko awkp awkq awkr
-awks awkt awku awkv awkw awkx awky awkz awla awlb awlc awld awle awlf awlg
-awlh awli awlj awlk awll awlm awln awlo awlp awlq awlr awls awlt awlu awlv
-awlw awlx awly awlz awma awmb awmc awmd awme awmf awmg awmh awmi awmj awmk
-awml awmm awmn awmo awmp awmq awmr awms awmt awmu awmv awmw awmx awmy awmz
-awna awnb awnc awnd awne awnf awng awnh awni awnj awnk awnl awnm awnn awno
-awnp awnq awnr awns awnt awnu awnv awnw awnx awny awnz awoa awob awoc awod
-awoe awof awog awoh awoi awoj awok awol awom awon awoo awop awoq awor awos
-awot awou awov awow awox awoy awoz awpa awpb awpc awpd awpe awpf awpg awph
-awpi awpj awpk awpl awpm awpn awpo awpp awpq awpr awps awpt awpu awpv awpw
-awpx awpy awpz awqa awqb awqc awqd awqe awqf awqg awqh awqi awqj awqk awql
-awqm awqn awqo awqp awqq awqr awqs awqt awqu awqv awqw awqx awqy awqz awra
-awrb awrc awrd awre awrf awrg awrh awri awrj awrk awrl awrm awrn awro awrp
-awrq awrr awrs awrt awru awrv awrw awrx awry awrz awsa awsb awsc awsd awse
-awsf awsg awsh awsi awsj awsk awsl awsm awsn awso awsp awsq awsr awss awst
-awsu awsv awsw awsx awsy awsz awta awtb awtc awtd awte awtf awtg awth awti
-awtj awtk awtl awtm awtn awto awtp awtq awtr awts awtt awtu awtv awtw awtx
-awty awtz awua awub awuc awud awue awuf awug awuh awui awuj awuk awul awum
-awun awuo awup awuq awur awus awut awuu awuv awuw awux awuy awuz awva awvb
-awvc awvd awve awvf awvg awvh awvi awvj awvk awvl awvm awvn awvo awvp awvq
-awvr awvs awvt awvu awvv awvw awvx awvy awvz awwa awwb awwc awwd awwe awwf
-awwg awwh awwi awwj awwk awwl awwm awwn awwo awwp awwq awwr awws awwt awwu
-awwv awww awwx awwy awwz awxa awxb awxc awxd awxe awxf awxg awxh awxi awxj
-awxk awxl awxm awxn awxo awxp awxq awxr awxs awxt awxu awxv awxw awxx awxy
-awxz awya awyb awyc awyd awye awyf awyg awyh awyi awyj awyk awyl awym awyn
-awyo awyp awyq awyr awys awyt awyu awyv awyw awyx awyy awyz awza awzb awzc
-awzd awze awzf awzg awzh awzi awzj awzk awzl awzm awzn awzo awzp awzq awzr
-awzs awzt awzu awzv awzw awzx awzy awzz axaa axab axac axad axae axaf axag
-axah axai axaj axak axal axam axan axao axap axaq axar axas axat axau axav
-axaw axax axay axaz axba axbb axbc axbd axbe axbf axbg axbh axbi axbj axbk
-axbl axbm axbn axbo axbp axbq axbr axbs axbt axbu axbv axbw axbx axby axbz
-axca axcb axcc axcd axce axcf axcg axch axci axcj axck axcl axcm axcn axco
-axcp axcq axcr axcs axct axcu axcv axcw axcx axcy axcz axda axdb axdc axdd
-axde axdf axdg axdh axdi axdj axdk axdl axdm axdn axdo axdp axdq axdr axds
-axdt axdu axdv axdw axdx axdy axdz axea axeb axec axed axee axef axeg axeh
-axei axej axek axel axem axen axeo axep axeq axer axes axet axeu axev axew
-axex axey axez axfa axfb axfc axfd axfe axff axfg axfh axfi axfj axfk axfl
-axfm axfn axfo axfp axfq axfr axfs axft axfu axfv axfw axfx axfy axfz axga
-axgb axgc axgd axge axgf axgg axgh axgi axgj axgk axgl axgm axgn axgo axgp
-axgq axgr axgs axgt axgu axgv axgw axgx axgy axgz axha axhb axhc axhd axhe
-axhf axhg axhh axhi axhj axhk axhl axhm axhn axho axhp axhq axhr axhs axht
-axhu axhv axhw axhx axhy axhz axia axib axic axid axie axif axig axih axii
-axij axik axil axim axin axio axip axiq axir axis axit axiu axiv axiw axix
-axiy axiz axja axjb axjc axjd axje axjf axjg axjh axji axjj axjk axjl axjm
-axjn axjo axjp axjq axjr axjs axjt axju axjv axjw axjx axjy axjz axka axkb
-axkc axkd axke axkf axkg axkh axki axkj axkk axkl axkm axkn axko axkp axkq
-axkr axks axkt axku axkv axkw axkx axky axkz axla axlb axlc axld axle axlf
-axlg axlh axli axlj axlk axll axlm axln axlo axlp axlq axlr axls axlt axlu
-axlv axlw axlx axly axlz axma axmb axmc axmd axme axmf axmg axmh axmi axmj
-axmk axml axmm axmn axmo axmp axmq axmr axms axmt axmu axmv axmw axmx axmy
-axmz axna axnb axnc axnd axne axnf axng axnh axni axnj axnk axnl axnm axnn
-axno axnp axnq axnr axns axnt axnu axnv axnw axnx axny axnz axoa axob axoc
-axod axoe axof axog axoh axoi axoj axok axol axom axon axoo axop axoq axor
-axos axot axou axov axow axox axoy axoz axpa axpb axpc axpd axpe axpf axpg
-axph axpi axpj axpk axpl axpm axpn axpo axpp axpq axpr axps axpt axpu axpv
-axpw axpx axpy axpz axqa axqb axqc axqd axqe axqf axqg axqh axqi axqj axqk
-axql axqm axqn axqo axqp axqq axqr axqs axqt axqu axqv axqw axqx axqy axqz
-axra axrb axrc axrd axre axrf axrg axrh axri axrj axrk axrl axrm axrn axro
-axrp axrq axrr axrs axrt axru axrv axrw axrx axry axrz axsa axsb axsc axsd
-axse axsf axsg axsh axsi axsj axsk axsl axsm axsn axso axsp axsq axsr axss
-axst axsu axsv axsw axsx axsy axsz axta axtb axtc axtd axte axtf axtg axth
-axti axtj axtk axtl axtm axtn axto axtp axtq axtr axts axtt axtu axtv axtw
-axtx axty axtz axua axub axuc axud axue axuf axug axuh axui axuj axuk axul
-axum axun axuo axup axuq axur axus axut axuu axuv axuw axux axuy axuz axva
-axvb axvc axvd axve axvf axvg axvh axvi axvj axvk axvl axvm axvn axvo axvp
-axvq axvr axvs axvt axvu axvv axvw axvx axvy axvz axwa axwb axwc axwd axwe
-axwf axwg axwh axwi axwj axwk axwl axwm axwn axwo axwp axwq axwr axws axwt
-axwu axwv axww axwx axwy axwz axxa axxb axxc axxd axxe axxf axxg axxh axxi
-axxj axxk axxl axxm axxn axxo axxp axxq axxr axxs axxt axxu axxv axxw axxx
-axxy axxz axya axyb axyc axyd axye axyf axyg axyh axyi axyj axyk axyl axym
-axyn axyo axyp axyq axyr axys axyt axyu axyv axyw axyx axyy axyz axza axzb
-axzc axzd axze axzf axzg axzh axzi axzj axzk axzl axzm axzn axzo axzp axzq
-axzr axzs axzt axzu axzv axzw axzx axzy axzz ayaa ayab ayac ayad ayae ayaf
-ayag ayah ayai ayaj ayak ayal ayam ayan ayao ayap ayaq ayar ayas ayat ayau
-ayav ayaw ayax ayay ayaz ayba aybb aybc aybd aybe aybf aybg aybh aybi aybj
-aybk aybl aybm aybn aybo aybp aybq aybr aybs aybt aybu aybv aybw aybx ayby
-aybz ayca aycb aycc aycd ayce aycf aycg aych ayci aycj ayck aycl aycm aycn
-ayco aycp aycq aycr aycs ayct aycu aycv aycw aycx aycy aycz ayda aydb aydc
-aydd ayde aydf aydg aydh aydi aydj aydk aydl aydm aydn aydo aydp aydq aydr
-ayds aydt aydu aydv aydw aydx aydy aydz ayea ayeb ayec ayed ayee ayef ayeg
-ayeh ayei ayej ayek ayel ayem ayen ayeo ayep ayeq ayer ayes ayet ayeu ayev
-ayew ayex ayey ayez ayfa ayfb ayfc ayfd ayfe ayff ayfg ayfh ayfi ayfj ayfk
-ayfl ayfm ayfn ayfo ayfp ayfq ayfr ayfs ayft ayfu ayfv ayfw ayfx ayfy ayfz
-ayga aygb aygc aygd ayge aygf aygg aygh aygi aygj aygk aygl aygm aygn aygo
-aygp aygq aygr aygs aygt aygu aygv aygw aygx aygy aygz ayha ayhb ayhc ayhd
-ayhe ayhf ayhg ayhh ayhi ayhj ayhk ayhl ayhm ayhn ayho ayhp ayhq ayhr ayhs
-ayht ayhu ayhv ayhw ayhx ayhy ayhz ayia ayib ayic ayid ayie ayif ayig ayih
-ayii ayij ayik ayil ayim ayin ayio ayip ayiq ayir ayis ayit ayiu ayiv ayiw
-ayix ayiy ayiz ayja ayjb ayjc ayjd ayje ayjf ayjg ayjh ayji ayjj ayjk ayjl
-ayjm ayjn ayjo ayjp ayjq ayjr ayjs ayjt ayju ayjv ayjw ayjx ayjy ayjz ayka
-aykb aykc aykd ayke aykf aykg aykh ayki aykj aykk aykl aykm aykn ayko aykp
-aykq aykr ayks aykt ayku aykv aykw aykx ayky aykz ayla aylb aylc ayld ayle
-aylf aylg aylh ayli aylj aylk ayll aylm ayln aylo aylp aylq aylr ayls aylt
-aylu aylv aylw aylx ayly aylz ayma aymb aymc aymd ayme aymf aymg aymh aymi
-aymj aymk ayml aymm aymn aymo aymp aymq aymr ayms aymt aymu aymv aymw aymx
-aymy aymz ayna aynb aync aynd ayne aynf ayng aynh ayni aynj aynk aynl aynm
-aynn ayno aynp aynq aynr ayns aynt aynu aynv aynw aynx ayny aynz ayoa ayob
-ayoc ayod ayoe ayof ayog ayoh ayoi ayoj ayok ayol ayom ayon ayoo ayop ayoq
-ayor ayos ayot ayou ayov ayow ayox ayoy ayoz aypa aypb aypc aypd aype aypf
-aypg ayph aypi aypj aypk aypl aypm aypn aypo aypp aypq aypr ayps aypt aypu
-aypv aypw aypx aypy aypz ayqa ayqb ayqc ayqd ayqe ayqf ayqg ayqh ayqi ayqj
-ayqk ayql ayqm ayqn ayqo ayqp ayqq ayqr ayqs ayqt ayqu ayqv ayqw ayqx ayqy
-ayqz ayra ayrb ayrc ayrd ayre ayrf ayrg ayrh ayri ayrj ayrk ayrl ayrm ayrn
-ayro ayrp ayrq ayrr ayrs ayrt ayru ayrv ayrw ayrx ayry ayrz aysa aysb aysc
-aysd ayse aysf aysg aysh aysi aysj aysk aysl aysm aysn ayso aysp aysq aysr
-ayss ayst aysu aysv aysw aysx aysy aysz ayta aytb aytc aytd ayte aytf aytg
-ayth ayti aytj aytk aytl aytm aytn ayto aytp aytq aytr ayts aytt aytu aytv
-aytw aytx ayty aytz ayua ayub ayuc ayud ayue ayuf ayug ayuh ayui ayuj ayuk
-ayul ayum ayun ayuo ayup ayuq ayur ayus ayut ayuu ayuv ayuw ayux ayuy ayuz
-ayva ayvb ayvc ayvd ayve ayvf ayvg ayvh ayvi ayvj ayvk ayvl ayvm ayvn ayvo
-ayvp ayvq ayvr ayvs ayvt ayvu ayvv ayvw ayvx ayvy ayvz aywa aywb aywc aywd
-aywe aywf aywg aywh aywi aywj aywk aywl aywm aywn aywo aywp aywq aywr ayws
-aywt aywu aywv ayww aywx aywy aywz ayxa ayxb ayxc ayxd ayxe ayxf ayxg ayxh
-ayxi ayxj ayxk ayxl ayxm ayxn ayxo ayxp ayxq ayxr ayxs ayxt ayxu ayxv ayxw
-ayxx ayxy ayxz ayya ayyb ayyc ayyd ayye ayyf ayyg ayyh ayyi ayyj ayyk ayyl
-ayym ayyn ayyo ayyp ayyq ayyr ayys ayyt ayyu ayyv ayyw ayyx ayyy ayyz ayza
-ayzb ayzc ayzd ayze ayzf ayzg ayzh ayzi ayzj ayzk ayzl ayzm ayzn ayzo ayzp
-ayzq ayzr ayzs ayzt ayzu ayzv ayzw ayzx ayzy ayzz azaa azab azac azad azae
-azaf azag azah azai azaj azak azal azam azan azao azap azaq azar azas azat
-azau azav azaw azax azay azaz azba azbb azbc azbd azbe azbf azbg azbh azbi
-azbj azbk azbl azbm azbn azbo azbp azbq azbr azbs azbt azbu azbv azbw azbx
-azby azbz azca azcb azcc azcd azce azcf azcg azch azci azcj azck azcl azcm
-azcn azco azcp azcq azcr azcs azct azcu azcv azcw azcx azcy azcz azda azdb
-azdc azdd azde azdf azdg azdh azdi azdj azdk azdl azdm azdn azdo azdp azdq
-azdr azds azdt azdu azdv azdw azdx azdy azdz azea azeb azec azed azee azef
-azeg azeh azei azej azek azel azem azen azeo azep azeq azer azes azet azeu
-azev azew azex azey azez azfa azfb azfc azfd azfe azff azfg azfh azfi azfj
-azfk azfl azfm azfn azfo azfp azfq azfr azfs azft azfu azfv azfw azfx azfy
-azfz azga azgb azgc azgd azge azgf azgg azgh azgi azgj azgk azgl azgm azgn
-azgo azgp azgq azgr azgs azgt azgu azgv azgw azgx azgy azgz azha azhb azhc
-azhd azhe azhf azhg azhh azhi azhj azhk azhl azhm azhn azho azhp azhq azhr
-azhs azht azhu azhv azhw azhx azhy azhz azia azib azic azid azie azif azig
-azih azii azij azik azil azim azin azio azip aziq azir azis azit aziu aziv
-aziw azix aziy aziz azja azjb azjc azjd azje azjf azjg azjh azji azjj azjk
-azjl azjm azjn azjo azjp azjq azjr azjs azjt azju azjv azjw azjx azjy azjz
-azka azkb azkc azkd azke azkf azkg azkh azki azkj azkk azkl azkm azkn azko
-azkp azkq azkr azks azkt azku azkv azkw azkx azky azkz azla azlb azlc azld
-azle azlf azlg azlh azli azlj azlk azll azlm azln azlo azlp azlq azlr azls
-azlt azlu azlv azlw azlx azly azlz azma azmb azmc azmd azme azmf azmg azmh
-azmi azmj azmk azml azmm azmn azmo azmp azmq azmr azms azmt azmu azmv azmw
-azmx azmy azmz azna aznb aznc aznd azne aznf azng aznh azni aznj aznk aznl
-aznm aznn azno aznp aznq aznr azns aznt aznu aznv aznw aznx azny aznz azoa
-azob azoc azod azoe azof azog azoh azoi azoj azok azol azom azon azoo azop
-azoq azor azos azot azou azov azow azox azoy azoz azpa azpb azpc azpd azpe
-azpf azpg azph azpi azpj azpk azpl azpm azpn azpo azpp azpq azpr azps azpt
-azpu azpv azpw azpx azpy azpz azqa azqb azqc azqd azqe azqf azqg azqh azqi
-azqj azqk azql azqm azqn azqo azqp azqq azqr azqs azqt azqu azqv azqw azqx
-azqy azqz azra azrb azrc azrd azre azrf azrg azrh azri azrj azrk azrl azrm
-azrn azro azrp azrq azrr azrs azrt azru azrv azrw azrx azry azrz azsa azsb
-azsc azsd azse azsf azsg azsh azsi azsj azsk azsl azsm azsn azso azsp azsq
-azsr azss azst azsu azsv azsw azsx azsy azsz azta aztb aztc aztd azte aztf
-aztg azth azti aztj aztk aztl aztm aztn azto aztp aztq aztr azts aztt aztu
-aztv aztw aztx azty aztz azua azub azuc azud azue azuf azug azuh azui azuj
-azuk azul azum azun azuo azup azuq azur azus azut azuu azuv azuw azux azuy
-azuz azva azvb azvc azvd azve azvf azvg azvh azvi azvj azvk azvl azvm azvn
-azvo azvp azvq azvr azvs azvt azvu azvv azvw azvx azvy azvz azwa azwb azwc
-azwd azwe azwf azwg azwh azwi azwj azwk azwl azwm azwn azwo azwp azwq azwr
-azws azwt azwu azwv azww azwx azwy azwz azxa azxb azxc azxd azxe azxf azxg
-azxh azxi azxj azxk azxl azxm azxn azxo azxp azxq azxr azxs azxt azxu azxv
-azxw azxx azxy azxz azya azyb azyc azyd azye azyf azyg azyh azyi azyj azyk
-azyl azym azyn azyo azyp azyq azyr azys azyt azyu azyv azyw azyx azyy azyz
-azza azzb azzc azzd azze azzf azzg azzh azzi azzj azzk azzl azzm azzn azzo
-azzp azzq azzr azzs azzt azzu azzv azzw azzx azzy azzz baaa baab baac baad
-baae baaf baag baah baai baaj baak baal baam baan baao baap baaq baar baas
-baat baau baav baaw baax baay baaz baba babb babc babd babe babf babg babh
-babi babj babk babl babm babn babo babp babq babr babs babt babu babv babw
-babx baby babz baca bacb bacc bacd bace bacf bacg bach baci bacj back bacl
-bacm bacn baco bacp bacq bacr bacs bact bacu bacv bacw bacx bacy bacz bada
-badb badc badd bade badf badg badh badi badj badk badl badm badn bado badp
-badq badr bads badt badu badv badw badx bady badz baea baeb baec baed baee
-baef baeg baeh baei baej baek bael baem baen baeo baep baeq baer baes baet
-baeu baev baew baex baey baez bafa bafb bafc bafd bafe baff bafg bafh bafi
-bafj bafk bafl bafm bafn bafo bafp bafq bafr bafs baft bafu bafv bafw bafx
-bafy bafz baga bagb bagc bagd bage bagf bagg bagh bagi bagj bagk bagl bagm
-bagn bago bagp bagq bagr bags bagt bagu bagv bagw bagx bagy bagz baha bahb
-bahc bahd bahe bahf bahg bahh bahi bahj bahk bahl bahm bahn baho bahp bahq
-bahr bahs baht bahu bahv bahw bahx bahy bahz baia baib baic baid baie baif
-baig baih baii baij baik bail baim bain baio baip baiq bair bais bait baiu
-baiv baiw baix baiy baiz baja bajb bajc bajd baje bajf bajg bajh baji bajj
-bajk bajl bajm bajn bajo bajp bajq bajr bajs bajt baju bajv bajw bajx bajy
-bajz baka bakb bakc bakd bake bakf bakg bakh baki bakj bakk bakl bakm bakn
-bako bakp bakq bakr baks bakt baku bakv bakw bakx baky bakz bala balb balc
-bald bale balf balg balh bali balj balk ball balm baln balo balp balq balr
-bals balt balu balv balw balx baly balz bama bamb bamc bamd bame bamf bamg
-bamh bami bamj bamk baml bamm bamn bamo bamp bamq bamr bams bamt bamu bamv
-bamw bamx bamy bamz bana banb banc band bane banf bang banh bani banj bank
-banl banm bann bano banp banq banr bans bant banu banv banw banx bany banz
-baoa baob baoc baod baoe baof baog baoh baoi baoj baok baol baom baon baoo
-baop baoq baor baos baot baou baov baow baox baoy baoz bapa bapb bapc bapd
-bape bapf bapg baph bapi bapj bapk bapl bapm bapn bapo bapp bapq bapr baps
-bapt bapu bapv bapw bapx bapy bapz baqa baqb baqc baqd baqe baqf baqg baqh
-baqi baqj baqk baql baqm baqn baqo baqp baqq baqr baqs baqt baqu baqv baqw
-baqx baqy baqz bara barb barc bard bare barf barg barh bari barj bark barl
-barm barn baro barp barq barr bars bart baru barv barw barx bary barz basa
-basb basc basd base basf basg bash basi basj bask basl basm basn baso basp
-basq basr bass bast basu basv basw basx basy basz bata batb batc batd bate
-batf batg bath bati batj batk batl batm batn bato batp batq batr bats batt
-batu batv batw batx baty batz baua baub bauc baud baue bauf baug bauh baui
-bauj bauk baul baum baun bauo baup bauq baur baus baut bauu bauv bauw baux
-bauy bauz bava bavb bavc bavd bave bavf bavg bavh bavi bavj bavk bavl bavm
-bavn bavo bavp bavq bavr bavs bavt bavu bavv bavw bavx bavy bavz bawa bawb
-bawc bawd bawe bawf bawg bawh bawi bawj bawk bawl bawm bawn bawo bawp bawq
-bawr baws bawt bawu bawv baww bawx bawy bawz baxa baxb baxc baxd baxe baxf
-baxg baxh baxi baxj baxk baxl baxm baxn baxo baxp baxq baxr baxs baxt baxu
-baxv baxw baxx baxy baxz baya bayb bayc bayd baye bayf bayg bayh bayi bayj
-bayk bayl baym bayn bayo bayp bayq bayr bays bayt bayu bayv bayw bayx bayy
-bayz baza bazb bazc bazd baze bazf bazg bazh bazi bazj bazk bazl bazm bazn
-bazo bazp bazq bazr bazs bazt bazu bazv bazw bazx bazy bazz bbaa bbab bbac
-bbad bbae bbaf bbag bbah bbai bbaj bbak bbal bbam bban bbao bbap bbaq bbar
-bbas bbat bbau bbav bbaw bbax bbay bbaz bbba bbbb
diff --git a/camlp4/test/fixtures/if.ml b/camlp4/test/fixtures/if.ml
deleted file mode 100644 (file)
index 3f9b452..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-let x = if x then a else b in x
-
-let x = if StringSet.mem "*" sections then a else b in x
-
-let x =
-if StringSet.mem "*" sections then fun _ -> true else
-  fun x -> StringSet.mem x sections
-in x
diff --git a/camlp4/test/fixtures/label.ml b/camlp4/test/fixtures/label.ml
deleted file mode 100644 (file)
index a60f367..0000000
+++ /dev/null
@@ -1 +0,0 @@
-value f ~a:_ ?b:_ = ();
diff --git a/camlp4/test/fixtures/lambda_free.ml b/camlp4/test/fixtures/lambda_free.ml
deleted file mode 100644 (file)
index 4d6f135..0000000
+++ /dev/null
@@ -1,68 +0,0 @@
-open Format;
-
-module S = Set.Make String;
-
-type term =
-  [ Lambda of string and term
-  | Atom of string
-  | App of term and term
-  | Opt of term and option term and term
-  ];
-
-value free_vars =
-  let rec fv t env free =
-    match t with
-    [ Lambda x t -> fv t (S.add x env) free
-    | Atom x -> if S.mem x env then free else S.add x free
-    | App t1 t2 -> fv t1 env (fv t2 env free)
-    | Opt _ _ _ -> assert False ]
-  in fun t -> fv t S.empty S.empty;
-
-value print_set f s = do {
-  fprintf f "@[<2>{ ";
-  S.iter (fprintf f "%s@ ") s;
-  fprintf f "}@]";
-};
-
-value t1 = Lambda "x" (App (Lambda "y" (App (Atom "y") (Atom "x"))) (Lambda "x" (Atom "x")));
-value t2 = Lambda "x" (App (Lambda "y" (App (Atom "y") (Atom "x"))) (Lambda "z" (Atom "z")));
-value t3 = Lambda "x" (App (Lambda "y" (App (Atom "y") (Atom "x"))) (Lambda "x" (Atom "z")));
-value t4 = Lambda "a" (App (Lambda "y" (App (Atom "y") (Atom "x"))) (Lambda "x" (Atom "z")));
-
-printf "t1: %a@." print_set (free_vars t1);
-printf "t2: %a@." print_set (free_vars t2);
-printf "t3: %a@." print_set (free_vars t3);
-printf "t4: %a@." print_set (free_vars t4);
-
-class fold ['accu] init =
-  object (o : 'self_type)
-    value accu : 'accu = init;
-    method accu = accu;
-    method term t =
-      match t with
-      [ Lambda x t -> (o#string x)#term t
-      | Atom x -> o#string x
-      | App t1 t2 -> (o#term t1)#term t2
-      | Opt t1 ot t2 -> ((o#term t1)#option (fun o -> o#term) ot)#term t2 ];
-    method string : string -> 'self_type = fun _ -> o;
-    method option : ! 'a. ('self_type -> 'a -> 'self_type) -> option 'a -> 'self_type =
-      fun f opt ->
-        match opt with
-        [ None -> o
-        | Some x -> f o x ];
-  end;
-
-class fold_atoms ['accu] f init =
-  object (o : 'self_type)
-    inherit fold ['accu] init as super;
-    method term t =
-      match t with
-      [ Atom x -> {< accu = f x accu >}
-      | _ -> super#term t ];
-  end;
-
-value t5 = Opt (Atom "a") (Some (Atom "b")) (Atom "c");
-
-value atoms = ((new fold_atoms S.add S.empty)#term t5)#accu;
-
-printf "atoms: %a@." print_set atoms;
diff --git a/camlp4/test/fixtures/loc-bug.ml b/camlp4/test/fixtures/loc-bug.ml
deleted file mode 100644 (file)
index 2901e6f..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-#default_quotation "expr";;
-Lwt.return
-  << 3 + >>
diff --git a/camlp4/test/fixtures/macrotest.ml b/camlp4/test/fixtures/macrotest.ml
deleted file mode 100644 (file)
index 023a5b4..0000000
+++ /dev/null
@@ -1,70 +0,0 @@
-DEFINE A = 42;
-DEFINE B = 51;
-
-IFDEF A THEN
-  value a_should_be_present = B + 2;
-  print_int (a_should_be_present + 1);
-ENDIF;
-
-print_int (a_should_be_present + 2);
-
-IFNDEF C THEN
-  print_int (a_should_be_present + 3);
-ENDIF;
-
-IFNDEF C THEN
-  print_int (a_should_be_present + 4);
-ELSE
-  print_int (c_should_not_be_present + 1);
-ENDIF;
-
-IFDEF C THEN
-  print_int (c_should_not_be_present + 2);
-ELSIF
-  print_int (A * a_should_be_present + 5);
-ENDIF;
-
-IFDEF DNE THEN
-  print_int (c_should_not_be_present + 2);
-ELSIF
-  print_int (A * a_should_be_present + 5);
-ENDIF;
-
-IFDEF OPT THEN
-  print_int (c_should_not_be_present + 2);
-ELSIF
-  print_int (A * a_should_be_present + 5);
-ENDIF;
-
-value e = 
-  IFDEF DNE THEN
-    print_int (c_should_not_be_present + 2)
-  ELSE
-    print_int (A * a_should_be_present + 5)
-  ENDIF;
-
-value f =
-  fun _ ->
-    IFDEF DNE THEN
-      print_int (c_should_not_be_present + 2)
-    ELSE
-      print_int (A * a_should_be_present + 5)
-    ENDIF;
-
-IFDEF A THEN
-  DEFINE Z = "ok";
-ELSE
-  DEFINE Z = "ko";
-ENDIF;
-
-Z;
-
-IFDEF DNE THEN
-  DEFINE Z = "ko2";
-ELSE
-  DEFINE Z = "ok2";
-ENDIF;
-
-Z;
-
-pouet;
diff --git a/camlp4/test/fixtures/macrotest.mli b/camlp4/test/fixtures/macrotest.mli
deleted file mode 100644 (file)
index 4912fd3..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-DEFINE A;
-DEFINE B;
-
-IFDEF A THEN
-  value a_should_be_present : int;
-ENDIF;
-
-IFNDEF C THEN
-  value b_should_be_present : int;
-ENDIF;
-
-IFNDEF C THEN
-  value c_should_be_present : int;
-ELSE
-  value a_should_NOT_be_present : int;
-END;
-
-IFDEF C THEN
-  value b_should_NOT_be_present : int;
-ELSE
-  value d_should_be_present : int;
-  value e_should_be_present : int;
-ENDIF;
-
-value f_should_be_present : int;
diff --git a/camlp4/test/fixtures/macrotest2.ml b/camlp4/test/fixtures/macrotest2.ml
deleted file mode 100644 (file)
index cb2d4cf..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-IFNDEF UNDEFINED_VARIABLE THEN
- DEFINE SQUARE (x) = x * x ;;
- DEFINE DOUBLE_SQUARE (x) = (SQUARE x) * 2 ;;
-END;;
-
-Printf.printf "%d\n" (DOUBLE_SQUARE(42)) ;;
diff --git a/camlp4/test/fixtures/macrotest3.ml b/camlp4/test/fixtures/macrotest3.ml
deleted file mode 100644 (file)
index ef618d2..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-IFNDEF UNDEFINED_VARIABLE THEN
- DEFINE UNDEFINED_VARIABLE
-
- IFDEF UNDEFINED_VARIABLE THEN
-  DEFINE SQUARE (x) = x * x ;;
-  DEFINE DOUBLE_SQUARE (x) = (SQUARE x) * 2 ;;
- END
-END;;
-
-Printf.printf "%d\n" (DOUBLE_SQUARE(42)) ;;
-
diff --git a/camlp4/test/fixtures/make_extend.ml b/camlp4/test/fixtures/make_extend.ml
deleted file mode 100644 (file)
index f2d625c..0000000
+++ /dev/null
@@ -1 +0,0 @@
-<:expr< EXTEND G expr: [[ "foo" -> <:expr< foo >> ]]; END >>;
diff --git a/camlp4/test/fixtures/match.ml b/camlp4/test/fixtures/match.ml
deleted file mode 100644 (file)
index 9fb52cb..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-let x =
-  match y with
-  | A z -> z z z z z z z z z z z z z z z z z z z z z z z z z z z z z z z z z z z z z z z z z z z z z z z z z z z z 
-  | B l ->
-      (match l with
-       | [] -> ()
-       | x::xs -> p x; self xs)
-  | C -> ()
-in x
diff --git a/camlp4/test/fixtures/match_parser.ml b/camlp4/test/fixtures/match_parser.ml
deleted file mode 100644 (file)
index e053ee8..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-open Camlp4.PreCast;
-
-let _loc = Loc.ghost in
-let e = <:expr< parser [: `"a" :] -> t >> in
-let a =
-  match e with
-  [ <:expr< parser [: `$str:x$ :] -> t >> -> x
-  | _ -> assert False ]
-in Format.printf "a: %S@." a;
-
diff --git a/camlp4/test/fixtures/meta_multi_term.ml b/camlp4/test/fixtures/meta_multi_term.ml
deleted file mode 100644 (file)
index 35e96b2..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-open Camlp4.PreCast;
-value _loc = Loc.ghost;
-
-module Term = struct
-  type patt =
-    [ PApp of patt and patt
-    | PAny
-    | PVar of string
-    | POlb of string and expr ]
-  and expr =
-    [ EApp of expr and expr
-    | EVar of string
-    | ELam of patt and expr ];
-end;
-
-module MetaTerm = MetaGenerator Term;
diff --git a/camlp4/test/fixtures/metalib.ml b/camlp4/test/fixtures/metalib.ml
deleted file mode 100644 (file)
index 22dff11..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-#load "camlp4of.cma";;
-open Camlp4.PreCast;;
-module M = Ast.Meta.Make(Ast.Meta.MetaGhostLoc);;
-let ghost = Loc.ghost;;
-M.Expr.meta_ctyp ghost <:ctyp@ghost< int >>;;
diff --git a/camlp4/test/fixtures/method_private_virtual.ml b/camlp4/test/fixtures/method_private_virtual.ml
deleted file mode 100644 (file)
index 6c0b94a..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-class virtual c1 = object method virtual private f : unit end;;
-class virtual c2 = object method private virtual f : unit end;;
-
-<:str_item< class virtual c1 = object method virtual private f : unit; end >>;;
-<:str_item< class virtual c2 = object method private virtual f : unit; end >>;;
-<:str_item< class virtual c2 = object method $private:p$ virtual f : unit; end >>;;
-<:str_item< class virtual c2 = object method virtual $private:p$ f : unit; end >>;;
-<:str_item< class $virtual:v$ c2 [$t1$] =
-              object ($pat:self$) method virtual $private:p$ $lid:f$ : $t2$; end >>;;
diff --git a/camlp4/test/fixtures/mod.ml b/camlp4/test/fixtures/mod.ml
deleted file mode 100644 (file)
index ca2b3e0..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-module type S = sig type t end
-module F (A : S) = struct
-  type t2 = A.t
-  module A = A
-end
-
-module A = struct type t = int end
-
-module type S3 = sig
-  module M : S
-end
-
-module type S2 = S with type t = F(A).t2
-
-module type S4 = S3 with module M = F(A).A
diff --git a/camlp4/test/fixtures/mod2.ml b/camlp4/test/fixtures/mod2.ml
deleted file mode 100644 (file)
index c0a1667..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-module type S = sig type t = 'a; end;
-module F (A : S) = struct
-  type t2 = A.t;
-end;
-
-module A = struct type t = int; end;
-
-module type S2 = S with type t = (F A).t2;
diff --git a/camlp4/test/fixtures/operators.ml b/camlp4/test/fixtures/operators.ml
deleted file mode 100644 (file)
index 467c37c..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-let _ : int = 42
-let (+) = M.(+)
-let (+) = M.(+) in 42
-let (+) : int -> int -> int = (+)
-let (+) : int -> int -> int = (+) in 42
-let None = None
-let None : int option = None
diff --git a/camlp4/test/fixtures/operators.mli b/camlp4/test/fixtures/operators.mli
deleted file mode 100644 (file)
index af44530..0000000
+++ /dev/null
@@ -1 +0,0 @@
-val (+) : int -> int -> int
diff --git a/camlp4/test/fixtures/original_syntax.ml b/camlp4/test/fixtures/original_syntax.ml
deleted file mode 100644 (file)
index bf08d56..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
-fun x when x <> 0 -> x / 42
-;;
-object val virtual mutable x : int val mutable virtual y : int end
-;;
-- !r
-;;
-! -r
-;;
--32
-;;
-- - 32
-;;
-!(r.b)
-;;
-(!r).b = !r.b
-;;
-let l : (unit -> int) list = [(fun _ -> 42); (fun _ -> 42)]
diff --git a/camlp4/test/fixtures/outside-scope.ml b/camlp4/test/fixtures/outside-scope.ml
deleted file mode 100644 (file)
index 6b8b80b..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-type t 'a = [ Nil | Cons of 'a and t 'a ];
-
-module A : sig
-  value app_hd : t 'a -> ('a -> 'a) -> option 'a;
-end = struct
-  value app_hd x f =
-    match x with
-    [ Nil -> None
-    | Cons x _ -> Some (f x) ];
-end;
-open A;
-
-module M = struct
-  external mk_nil : unit -> t 'a = "%identity";
-  value nil = mk_nil ();
-  (* value is_nil x = x = nil; *)
-end;
-
-(* M.app_hd succ (M.Cons 1 M.Nil); *)
-(* M.hd (M.Cons 1 M.Nil); *)
-app_hd (M.nil : t 'a) (fun (x : int) -> (x : 'a));
diff --git a/camlp4/test/fixtures/parser.ml b/camlp4/test/fixtures/parser.ml
deleted file mode 100644 (file)
index 7e41f35..0000000
+++ /dev/null
@@ -1,61 +0,0 @@
-open Camlp4.PreCast;
-type t = [ A of t and t | B of string ];
-value lex = Lexer.mk ();
-
-    (* value list0 symb =
-      let rec loop al =
-        parser
-        [ [: a = symb; s :] -> loop [a :: al] s
-        | [: :] -> al ]
-      in
-      parser [: a = loop [] :] -> List.rev a
-    ;
-    value list0sep symb sep =
-      let rec kont al =
-        parser
-        [ [: v = sep; a = symb; s :] -> kont [a :: al] s
-        | [: :] -> al ]
-      in
-      parser
-      [ [: a = symb; s :] -> List.rev (kont [a] s)
-      | [: :] -> [] ]
-    ;
-    value list1 symb =
-      let rec loop al =
-        parser
-        [ [: a = symb; s :] -> loop [a :: al] s
-        | [: :] -> al ]
-      in
-      parser [: a = symb; s :] -> List.rev (loop [a] s)
-    ;
-    value list1sep symb sep =
-      let rec kont al =
-        parser
-        [ [: v = sep; a = symb; s :] -> kont [a :: al] s
-        | [: :] -> al ]
-      in
-      parser [: a = symb; s :] -> List.rev (kont [a] s)
-    ;                                                       *)
-
-value list1 =
-  let rec self stream acc =
-    match stream with parser
-    [ [: `(EOI, _) :] -> acc
-    | [: `(LIDENT x, _); xs :] -> self xs (A acc (B x))
-    | [: `(BLANKS _ | NEWLINE, _); xs :] -> self xs acc ]
-  in
-  parser [: `(LIDENT x, _); xs :] -> self xs (B x);
-value rec length x acc =
-  match x with
-  [ A x y -> length x (length y acc)
-  | B _ -> succ acc ];
-(* value length _ _ = -1; *)
-open Format;
-try
-  let f = Sys.argv.(1) in
-  let () = printf "parsing...@." in
-  let a = list1 (lex (Loc.mk f) (Stream.of_channel (open_in f))) in
-  let () = printf "counting...@." in
-  let n = length a 0 in
-  printf "%d@." n
-with e -> eprintf "error: %a@." Camlp4.ErrorHandler.print e;
diff --git a/camlp4/test/fixtures/pp_let_in.ml b/camlp4/test/fixtures/pp_let_in.ml
deleted file mode 100644 (file)
index c616249..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-let i = "toto" in do { (let i = 42 in print_int i); print_string i };
-let i = "toto" in do { print_string i; let i = 42 in print_int i; print_int i };
-let i = "toto" in do {
-  (let i = 42 in print_int i);
-  let i = i ^ i;
-  let i = i ^ i;
-  print_string i;
-  print_string i;
-  let i = i ^ i;
-  print_string i };
diff --git a/camlp4/test/fixtures/pp_let_in2.ml b/camlp4/test/fixtures/pp_let_in2.ml
deleted file mode 100644 (file)
index 7e9b349..0000000
+++ /dev/null
@@ -1 +0,0 @@
-let i = "toto" in ((let i = 42 in print_int i); print_string i)
diff --git a/camlp4/test/fixtures/pp_xml.ml b/camlp4/test/fixtures/pp_xml.ml
deleted file mode 100644 (file)
index 986998c..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-
-type xml = Elt of string * xml list | Pcdata of string
-
-let pp = Format.fprintf
-
-let rec print_elt f =
-  function
-  | Elt (tag, contents) ->
-      pp f "@[<hv0>@[<hv2><%s>@,%a@]@,</%s>@]"
-        tag print_list_elts contents tag
-  | Pcdata s ->
-      Format.pp_print_string f s
-
-and print_list_elts f =
-    let rec loop =
-      function
-      | [] -> ()
-      | x::xs -> (pp f "@,"; print_elt f x; loop xs) in
-    function
-    | [] -> ()
-    | [x] -> print_elt f x
-    | x::xs -> (print_elt f x; loop xs)
-
-let tree =
-  Elt ("div", [
-     Elt ("p", [Pcdata "a short text"]);
-     Elt ("p", [Pcdata "a looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong text"])
-  ])
-
-let () = Format.printf "%a@." print_elt tree
-
diff --git a/camlp4/test/fixtures/pprecordtyp.ml b/camlp4/test/fixtures/pprecordtyp.ml
deleted file mode 100644 (file)
index 1b140af..0000000
+++ /dev/null
@@ -1,26 +0,0 @@
-open Camlp4.PreCast
-
-let _loc = Loc.mk "?"
-
-let base base fields ty =
-  let fields = List.fold_right (fun field acc ->
-    let c = <:ctyp< $lid:field$ : $uid:field$.record >> in
-    <:ctyp< $c$ ; $acc$ >>) fields <:ctyp< >>
-  in
-  <:module_binding< $uid:base$ :
-    sig type record = {
-        key : $ty$;
-        $fields$
-      } end = struct
-        type record = {
-        key : $ty$;
-        $fields$
-      } end
-    >>
-
-module CleanAst = Camlp4.Struct.CleanAst.Make(Ast)
-let _ =
-  let b = base "b" ["f1"; "f2"] <:ctyp< int >> in
-  Camlp4.PreCast.Printers.OCaml.print_implem
-    ((new CleanAst.clean_ast)#str_item
-      <:str_item< module rec $b$ >>)
diff --git a/camlp4/test/fixtures/pr4314.ml b/camlp4/test/fixtures/pr4314.ml
deleted file mode 100644 (file)
index 9e6b23b..0000000
+++ /dev/null
@@ -1 +0,0 @@
-(int_of_string "1" : unit);
diff --git a/camlp4/test/fixtures/pr4314gram1.ml b/camlp4/test/fixtures/pr4314gram1.ml
deleted file mode 100644 (file)
index a83b073..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-open Camlp4.PreCast ;
-module G = Camlp4.PreCast.Gram ;
-
-value exp = G.Entry.mk "exp" ;
-value prog = G.Entry.mk "prog" ;
-
-EXTEND G
-exp:
-[ "apply"
-  [ e1 = SELF; e2 = SELF ->
-    let p = Loc.dump in
-    let () =
-    Format.eprintf "e1:    %a,@.e2:    %a,@.e1-e2: %a,@._loc:  %a@."
-      p e1 p e2 p (Loc.merge e1 e2) p _loc
-    in
-    _loc
-  ]
-| "simple"
-  [ _ = LIDENT -> _loc ]
-];
-prog: [[ e = exp; `EOI -> e ]];
-END ;
-
-(* and the following function: *)
-
-value parse_string entry s =
-try
-  G.parse_string entry (Loc.mk "<string>") s
-with [ Loc.Exc_located loc exn ->
-begin
-  print_endline (Loc.to_string loc);
-  print_endline (Printexc.to_string exn);
-  failwith "Syntax Error"
-end ] ;
-
-parse_string prog "f x";
diff --git a/camlp4/test/fixtures/pr4314gram2.ml b/camlp4/test/fixtures/pr4314gram2.ml
deleted file mode 100644 (file)
index 38a5222..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-open Camlp4.PreCast ;
-module G = Camlp4.PreCast.Gram ;
-
-value exp = G.Entry.mk "exp" ;
-value prog = G.Entry.mk "prog" ;
-
-EXTEND G
-exp:
-[ "apply"
-  [ e1 = exp LEVEL "simple"; e2 = SELF ->
-    let p = Loc.dump in
-    let () =
-    Format.eprintf "e1:    %a,@.e2:    %a,@.e1-e2: %a,@._loc:  %a@."
-      p e1 p e2 p (Loc.merge e1 e2) p _loc
-    in
-    _loc
-  ]
-| "simple"
-  [ _ = LIDENT -> _loc ]
-];
-prog: [[ e = exp; `EOI -> e ]];
-END ;
-
-(* and the following function: *)
-
-value parse_string entry s =
-try
-  G.parse_string entry (Loc.mk "<string>") s
-with [ Loc.Exc_located loc exn ->
-begin
-  print_endline (Loc.to_string loc);
-  print_endline (Printexc.to_string exn);
-  failwith "Syntax Error"
-end ] ;
-
-parse_string prog "f x";
diff --git a/camlp4/test/fixtures/pr4314gram3.ml b/camlp4/test/fixtures/pr4314gram3.ml
deleted file mode 100644 (file)
index 3298bcb..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-open Camlp4.PreCast ;
-module G = Camlp4.PreCast.Gram ;
-
-value exp = G.Entry.mk "exp" ;
-value prog = G.Entry.mk "prog" ;
-
-EXTEND G
-exp:
-[ "apply"
-  [ e1 = SELF; e2 = exp LEVEL "simple" ->
-    let p = Loc.dump in
-    let () =
-    Format.eprintf "e1:    %a,@.e2:    %a,@.e1-e2: %a,@._loc:  %a@."
-      p e1 p e2 p (Loc.merge e1 e2) p _loc
-    in
-    _loc
-  ]
-| "simple"
-  [ _ = LIDENT -> _loc ]
-];
-prog: [[ e = exp; `EOI -> e ]];
-END ;
-
-(* and the following function: *)
-
-value parse_string entry s =
-try
-  G.parse_string entry (Loc.mk "<string>") s
-with [ Loc.Exc_located loc exn ->
-begin
-  print_endline (Loc.to_string loc);
-  print_endline (Printexc.to_string exn);
-  failwith "Syntax Error"
-end ] ;
-
-parse_string prog "f x";
diff --git a/camlp4/test/fixtures/pr4314gram4.ml b/camlp4/test/fixtures/pr4314gram4.ml
deleted file mode 100644 (file)
index 1c6712e..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-open Camlp4.PreCast ;
-module G = Camlp4.PreCast.Gram ;
-
-value exp = G.Entry.mk "exp" ;
-value prog = G.Entry.mk "prog" ;
-
-EXTEND G
-exp:
-[ "apply"
-  [ e1 = SELF; e2 = exp LEVEL "simple"; e3 = exp LEVEL "simple" ->
-    let p = Loc.dump in
-    let () =
-    Format.eprintf "e1:   %a,@.e2:   %a,@.e3:   %a,@._loc: %a@."
-      p e1 p e2 p e3 p _loc
-    in
-    _loc
-  ]
-| "simple"
-  [ _ = LIDENT -> _loc ]
-];
-prog: [[ e = exp; `EOI -> e ]];
-END ;
-
-(* and the following function: *)
-
-value parse_string entry s =
-try
-  G.parse_string entry (Loc.mk "<string>") s
-with [ Loc.Exc_located loc exn ->
-begin
-  print_endline (Loc.to_string loc);
-  print_endline (Printexc.to_string exn);
-  failwith "Syntax Error"
-end ] ;
-
-parse_string prog "f x y";
diff --git a/camlp4/test/fixtures/pr4314gram5.ml b/camlp4/test/fixtures/pr4314gram5.ml
deleted file mode 100644 (file)
index bd2fb11..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-open Camlp4.PreCast ;
-module G = Camlp4.PreCast.Gram ;
-
-value exp = G.Entry.mk "exp" ;
-value prog = G.Entry.mk "prog" ;
-
-EXTEND G
-exp:
-[ "apply"
-[ e1 = SELF; e2 = exp LEVEL "simple"; e3 = SELF ->
-    let p = Loc.dump in
-    let () =
-    Format.eprintf "e1:   %a,@.e2:   %a,@.e3:   %a,@._loc: %a@."
-      p e1 p e2 p e3 p _loc
-    in
-    _loc
-  ]
-| "simple"
-[ x = LIDENT; y = LIDENT ->
-  let () = Format.eprintf "reduce expr simple (%S, %S) at %a@." x y Loc.dump _loc in _loc ]
-];
-prog: [[ e = exp; `EOI -> e ]];
-END ;
-
-(* and the following function: *)
-
-value parse_string entry s =
-try
-  print_endline s;
-  G.parse_string entry (Loc.mk "<string>") s
-with [ Loc.Exc_located loc exn ->
-begin
-  print_endline (Loc.to_string loc);
-  print_endline (Printexc.to_string exn);
-  failwith "Syntax Error"
-end ] ;
-
-parse_string prog "f1 f2 x1 x2 y1 y2";
diff --git a/camlp4/test/fixtures/pr4329.ml b/camlp4/test/fixtures/pr4329.ml
deleted file mode 100644 (file)
index 72f2b78..0000000
+++ /dev/null
@@ -1,50 +0,0 @@
-open Camlp4.PreCast ;
-module G = Camlp4.PreCast.Gram;
-
-value ab_eoi = G.Entry.mk "ab_eoi" ;
-value a_or_ab = G.Entry.mk "a_or_ab" ;
-value a_or_ab_eoi = G.Entry.mk "a_or_ab_eoi" ;
-value c_a_or_ab_eoi = G.Entry.mk "c_a_or_ab_eoi" ;
-
-EXTEND G
-ab_eoi: [[ "a"; "b"; `EOI -> () ]];
-a_or_ab: [[ "a" -> () | "a"; "b" -> () ]];
-a_or_ab_eoi: [[ a_or_ab; `EOI -> () ]];
-c_a_or_ab_eoi: [[ "c"; a_or_ab; `EOI -> () ]];
-END ;
-
-value parse_string entry s =
-try
-  G.parse_string entry (Loc.mk "<string>") s
-with [ Loc.Exc_located loc exn ->
-begin
-  print_endline (Loc.to_string loc);
-  print_endline (Printexc.to_string exn);
-  (* failwith "Syntax Error" *)
-end ] ;
-
-(* Consider the following syntax errors: *)
-parse_string ab_eoi "a c" ;
-(* File "<string>", line 1, characters 2-3
-Stream.Error("illegal begin of ab_eoi")
-Exception: Failure "Syntax Error".
---> "Illegal begin": at least the first symbol was correct
---> nevertheless, the reported position is correct
---> The message used to be: "b" then EOI expected after "a" in [ab_eoi]    *)
-
-parse_string a_or_ab_eoi "a c" ;
-(* File "<string>", line 1, characters 0-1
-Stream.Error("illegal begin of a_or_ab_eoi")
-Exception: Failure "Syntax Error".
---> "Illegal begin": at least the first non-terminal was correct
---> the reported position is weird
---> I think the message used to be either: "b" expected after "a" in
-[a_or_ab]
-or: EOI expected after [a_or_ab] in [a_or_ab_eoi]                       *)
-
-parse_string c_a_or_ab_eoi "c a c" ;
-(* File "<string>", line 1, characters 2-3
-Stream.Error("[a_or_ab] expected after \"c\" (in [c_a_or_ab_eoi])")
-Exception: Failure "Syntax Error".
---> "[a_or_ab] expected": this is very confusing: there is a valid a_or_ab
-there, namely "a"                                                             *)
diff --git a/camlp4/test/fixtures/pr4330.ml b/camlp4/test/fixtures/pr4330.ml
deleted file mode 100644 (file)
index 1959358..0000000
+++ /dev/null
@@ -1,57 +0,0 @@
-open Camlp4.PreCast ;
-module G = Camlp4.PreCast.Gram ;
-
-value a = G.Entry.mk "a" ;
-value a_eoi = G.Entry.mk "a_eoi" ;
-
-EXTEND G
-a: [[ "one" -> 1 | x = a; "plus"; y = a -> x+y ]];
-a_eoi: [[ x = a; `EOI -> x ]];
-END ;
-
-(* and the following function: *)
-
-value parse_string entry s o =
-try
-  Printf.eprintf "Parsing %S\n%!" s;
-  assert (o = Some (G.parse_string entry (Loc.mk "<string>") s))
-with [ Loc.Exc_located loc exn when o <> None ->
-begin
-  print_endline (Loc.to_string loc);
-  print_endline (Printexc.to_string exn);
-  assert (o = None)
-end
-| exn when o = None -> Printf.eprintf "Fail as expected\n%!"
-| exn -> begin
-  Printf.eprintf "Unexpected exception: \n%!";
-  print_endline (Printexc.to_string exn);
-  assert (o = None)
-end ] ;
-
-(* The following is correct: *)
-
-parse_string a_eoi "one plus one" (Some 2);
-
-(* While all of the following inputs should be rejected because they are not *)
-(* legal according to the grammar: *)
-
-parse_string a_eoi "one plus" None;
-(* - : int = 1 *)
-parse_string a_eoi "one plus plus" None;
-(* - : int = 1 *)
-parse_string a_eoi "one plus one plus" None;
-(* - : int = 2 *)
-parse_string a_eoi "one plus one plus plus" None;
-(* - : int = 2 *)
-
-(* Curiously, you may only repeat the operator twice. If you specify it three
-times, gramlib complains.                                                     *)
-
-parse_string a_eoi "one plus plus plus" None ;
-(* File "<string>", line 1, characters 9-13 *)
-(* Stream.Error("EOI expected after [a] (in [a_eoi])") *)
-(* Exception: Failure "Syntax Error". *)
-parse_string a_eoi "one plus one plus plus plus" None ;
-(* File "<string>", line 1, characters 18-22 *)
-(* Stream.Error("EOI expected after [a] (in [a_eoi])") *)
-(* Exception: Failure "Syntax Error". *)
diff --git a/camlp4/test/fixtures/pr4357.ml b/camlp4/test/fixtures/pr4357.ml
deleted file mode 100644 (file)
index 2d84004..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-open Camlp4.PreCast
-
-let sample_expr _loc _loc_name s =
-  Printf.eprintf "file=%s line=%d offset=%d bol=%d\n%!"
-    (Loc.file_name _loc)
-    (Loc.start_line _loc)
-    (Loc.start_off _loc)
-    (Loc.start_bol _loc);
-  <:expr< $lid:s$ >>
-;;
-
-Quotation.add
-  "sample"
-  Syntax.Quotation.DynAst.expr_tag
-  sample_expr
-;;
diff --git a/camlp4/test/fixtures/pr4357sample.ml b/camlp4/test/fixtures/pr4357sample.ml
deleted file mode 100644 (file)
index 789bcb8..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-let u = "Hello";;
-let s = <:sample<u>>;;
-print_string s
diff --git a/camlp4/test/fixtures/pr4357sample2.ml b/camlp4/test/fixtures/pr4357sample2.ml
deleted file mode 100644 (file)
index f6fe8d0..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-#default_quotation "sample";;
-let u = "Hello";;
-let s = <<u>>;;
-let s = <:sample<u>>;;
-print_string s
diff --git a/camlp4/test/fixtures/pr4452.ml b/camlp4/test/fixtures/pr4452.ml
deleted file mode 100644 (file)
index bed7db7..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-open Camlp4.PreCast
-
-let _loc = Loc.mk "?"
-
-let base base fields ty =
-  let fields = List.fold_right (fun field acc ->
-    let c = <:ctyp< $lid:field$ : $uid:field$.record >> in
-    <:ctyp< $c$ ; $acc$ >>) fields <:ctyp< >>
-  in
-  <:module_binding< $uid:base$ :
-    sig type record = {
-        key : $ty$;
-        $fields$
-      } end = struct
-        type record = {
-        key : $ty$;
-        $fields$
-      } end
-    >>
-
-let _ =
-  let b = base "b" ["f1"; "f2"] <:ctyp< int >> in
-  Camlp4.PreCast.Printers.OCaml.print_implem
-    <:str_item< module rec $b$ >>
diff --git a/camlp4/test/fixtures/private_row.ml b/camlp4/test/fixtures/private_row.ml
deleted file mode 100644 (file)
index 53ada77..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-                                             
-
-module type Ops = sig
-     type expr
-  val eval : expr -> int
-  end
-  ;;
-
-
-module Plus = struct
-     type 'a expr0 = [`Num of int | `Plus of 'a * 'a ]
-     module F(X : Ops with type expr = private ([> 'a expr0] as 'a)) =
-        struct
-           type expr = X.expr expr0
-           let eval : expr -> int = function
-                 `Num n -> n
-                |`Plus(e1,e2) -> X.eval e1 + X.eval e2
-        end
-    module rec L : (Ops with type expr = L.expr expr0) = F(L)
-  end
-  ;;
-
-
-open Printf
-;;
-
-let _ = Printf.printf "%d\n%!" (Plus.L.eval (`Plus ((`Num 5),(`Num 2))));;
diff --git a/camlp4/test/fixtures/rec.ml b/camlp4/test/fixtures/rec.ml
deleted file mode 100644 (file)
index 1c74b24..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-(* rec.ml *)
-value rec x = 42;
diff --git a/camlp4/test/fixtures/seq.ml b/camlp4/test/fixtures/seq.ml
deleted file mode 100644 (file)
index dd563d4..0000000
+++ /dev/null
@@ -1,1003 +0,0 @@
-module M = struct
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-end;
diff --git a/camlp4/test/fixtures/seq2.ml b/camlp4/test/fixtures/seq2.ml
deleted file mode 100644 (file)
index d47c254..0000000
+++ /dev/null
@@ -1,3003 +0,0 @@
-module M = struct
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-  foo bar;
-end;
diff --git a/camlp4/test/fixtures/simplify.ml b/camlp4/test/fixtures/simplify.ml
deleted file mode 100644 (file)
index d910641..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-open Camlp4.PreCast
-
-let simplify =
-  object
-    inherit Ast.map as super
-    method expr e =
-      match super#expr e with
-      | <:expr< $x$ + 0 >> | <:expr< 0 + $x$ >> -> x
-      | x -> x
-  end
-in AstFilters.register_str_item_filter simplify#str_item
diff --git a/camlp4/test/fixtures/simplify_r.ml b/camlp4/test/fixtures/simplify_r.ml
deleted file mode 100644 (file)
index fa60135..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-open Camlp4.PreCast;
-
-let simplify =
-  object
-    inherit Ast.map as super;
-    method expr e =
-      match super#expr e with
-      [ <:expr< $x$ + 0 >> | <:expr< 0 + $x$ >> -> x
-      | x -> x ];
-  end
-in AstFilters.register_str_item_filter simplify#str_item;
diff --git a/camlp4/test/fixtures/stream-parser-bug.ml b/camlp4/test/fixtures/stream-parser-bug.ml
deleted file mode 100644 (file)
index 6c17793..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-let foo = parser
-  | [< '42; ps >] ->
-      let ps = ps + 42 in
-      type_phrases ps
-  | [< >] -> [< >]
-
diff --git a/camlp4/test/fixtures/string.ml b/camlp4/test/fixtures/string.ml
deleted file mode 100644 (file)
index 5b0e646..0000000
+++ /dev/null
@@ -1 +0,0 @@
-"abc";
diff --git a/camlp4/test/fixtures/superfluous.ml b/camlp4/test/fixtures/superfluous.ml
deleted file mode 100644 (file)
index 79b086b..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-open Camlp4.PreCast;;
-open Syntax;;
-
-let _loc = Loc.ghost;;
-let st = <:str_item< >>;;
-let e = <:expr< 1 >>
-let bi = <:binding< x = 0 >>;;
-
-(* none of these holds due to superfluous StSem and StNil *)
-assert (Ast.StSem (_loc, st, st) = <:str_item< $st$ $st$ >>);;
-assert (Ast.StExp (_loc, e) = <:str_item< $exp:e$ >>);;
-assert (Ast.StVal (_loc, bi) = <:str_item< let $bi$ >>);;
diff --git a/camlp4/test/fixtures/transform-examples.ml b/camlp4/test/fixtures/transform-examples.ml
deleted file mode 100644 (file)
index 0aea9c4..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-<:expr< $x$ + $y$ - $z$ >> -> <:expr< plus_minus $x$ $y$ $z$ >>
-
-<< List.rev (List.rev $l$) >> -> l
diff --git a/camlp4/test/fixtures/try.ml b/camlp4/test/fixtures/try.ml
deleted file mode 100644 (file)
index 90c01a3..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-try
-  let f = Sys.getenv "CAMLP4_DEBUG_FILE"
-  in
-    foo bar foo bar foo bar foo bar foo bar foo bar foo bar foo bar foo bar foo bar foo bar foo bar
-with Not_found -> stderr
-
diff --git a/camlp4/test/fixtures/tuple_as_retval.ml b/camlp4/test/fixtures/tuple_as_retval.ml
deleted file mode 100644 (file)
index 1dd68e6..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-EXTEND Gram
-  abc: [ [ (x,y) = foo -> x+y ] ];
-END;
diff --git a/camlp4/test/fixtures/type.ml b/camlp4/test/fixtures/type.ml
deleted file mode 100644 (file)
index f17cc50..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-type t = [ A of int | B of t ];
-type t2 = [ A of int | B of t ];
-type t3 = [ A of int | B of t ];
diff --git a/camlp4/test/fixtures/type_decl.ml b/camlp4/test/fixtures/type_decl.ml
deleted file mode 100644 (file)
index 8610ba2..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-module M = struct
-  type t = A of int * int * int * int * int * int * int * int * int * int
-    | B | B | B | B | B | B | B | B
-  and t2 =
-    | B | B | B | B | B | B | B | B
-  and t3 =
-    | B | B | B of a * a * a * a * a * a * a * a * a * a * a | B | B | B | B | B
-  and t4 =
-    | B | B | B | B | B | B | B | B
-  and t5 =
-    | B | B | B | B | B | B | B | B
-  and t6 =
-    | B | B | B |  A of int * int * int * int * int * int * int * int * int * int * int * int * int * int * int * int * int * int * int | B | B | B | B | B
-  and t7 =
-    | B | B | B | B | B | B | B | B
-  and t8 =
-    | B | B | B | B | B | B | B | B
-  and t9 =
-    | B | B | B | B | B | B | B | B
-  and t10 =
-    | A of (a * a)
-end
diff --git a/camlp4/test/fixtures/unit.ml b/camlp4/test/fixtures/unit.ml
deleted file mode 100644 (file)
index 52241df..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-type t1 = ();;
-type t2 = unit;;
-let x : t1 = ();;
-let y : t2 = ();;
diff --git a/camlp4/test/fixtures/use.ml b/camlp4/test/fixtures/use.ml
deleted file mode 100644 (file)
index 36e2f69..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-(* use.ml *)
-#use "test/fixtures/rec.ml";
-(* value use *)
-value use = 3;
diff --git a/camlp4/test/fixtures/where.o.ml b/camlp4/test/fixtures/where.o.ml
deleted file mode 100644 (file)
index 8295d4a..0000000
+++ /dev/null
@@ -1 +0,0 @@
-let where = 42
diff --git a/camlp4/test/fixtures/where.r.ml b/camlp4/test/fixtures/where.r.ml
deleted file mode 100644 (file)
index e48c308..0000000
+++ /dev/null
@@ -1 +0,0 @@
-x where x = 42;
diff --git a/camlp4/unmaintained/Makefile b/camlp4/unmaintained/Makefile
deleted file mode 100644 (file)
index ff79e33..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-#########################################################################
-#                                                                       #
-#                                 OCaml                                 #
-#                                                                       #
-#                                Camlp4                                 #
-#                                                                       #
-#   Copyright 2004 Institut National de Recherche en Informatique et    #
-#   en Automatique.  All rights reserved.  This file is distributed     #
-#   under the terms of the GNU Library General Public License, with     #
-#   the special exception on linking described in file ../../LICENSE.   #
-#                                                                       #
-#########################################################################
-#
-# The unmaintained directory
-#
-
-include ../config/Makefile.cnf
-
-DIRS=format lefteval ocamllex olabl scheme sml
-
-include ../config/Makefile.base
diff --git a/camlp4/unmaintained/compile/.depend b/camlp4/unmaintained/compile/.depend
deleted file mode 100644 (file)
index e69de29..0000000
diff --git a/camlp4/unmaintained/compile/.ignore b/camlp4/unmaintained/compile/.ignore
deleted file mode 100644 (file)
index 47817cc..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-*.fast
-*.fast.opt
-o_fast.ml
-pa_o_fast.ml
diff --git a/camlp4/unmaintained/compile/Makefile b/camlp4/unmaintained/compile/Makefile
deleted file mode 100644 (file)
index bd4078f..0000000
+++ /dev/null
@@ -1,37 +0,0 @@
-
-
-include ../config/Makefile.cnf
-
-INCLUDES=-I ../camlp4 -I ../lib
-SRC=../etc/pa_o.ml ../etc/pa_op.ml # FIXME and why not pa_$D.ml?
-D=o
-COMP_OPT=-strict_parsing -e "Grammar.Entry.obj Pcaml.interf" -e "Grammar.Entry.obj Pcaml.implem" -e "Grammar.Entry.obj Pcaml.top_phrase" -e "Grammar.Entry.obj Pcaml.use_file"
-CLEANFILES=pa_*_fast.ml *_fast.ml
-
-# FIXME
-EXECUTABLES=#camlp4$D.fast
-
-include ../config/Makefile.base
-
-WARNINGS=Ay
-
-camlp4$D.fast: pa_$D_fast.cmo
-       rm -f camlp4$D.fast
-       cd ../camlp4; $(MAKE) CAMLP4=../compile/camlp4$D.fast CAMLP4M="../compile/pa_$D_fast.cmo ../meta/pr_dump.cmo"
-
-camlp4$D.fast.opt: pa_$D_fast.cmx
-       rm -f camlp4$D.fast.opt
-       cd ../camlp4; $(MAKE) ../compile/camlp4$D.fast.opt CAMLP4OPT=../compile/camlp4$D.fast.opt CAMLP4M="../compile/pa_$D_fast.cmx ../meta/pr_dump.cmx"
-
-pa_$D_fast.ml: comp_head.ml $D_fast.ml comp_trail.ml
-       cat $(SRC) | sed -e "s/Plexer.make_lexer *()/P.lexer_pos/" -e "/EXTEND/,/END/d" -e "/Grammar.Entry.of_parser/d" -e "/Grammar.Entry.gcreate/d" | cat comp_head.ml - $D_fast.ml comp_trail.ml > pa_$D_fast.ml
-
-$D_fast.ml: compile.cmo $(SRC)
-       echo '(* camlp4r *)' >$D_fast.ml
-       OTOP=$(OTOP) EXE=$(EXE) ./compile.sh $(COMP_OPT) $(SRC) >> $D_fast.ml
-
-install-local:
-       if test -f camlp4$D.fast.opt; then cp camlp4$D.fast.opt $(BINDIR)/camlp4$D.opt$(EXE); fi
-       for TARG in  pa_$D_fast.cmi  pa_$D_fast.cmo pa_$D_fast.cmx ; do if test -f $$TARG; then cp $$TARG "$(LIBDIR)/camlp4/."; fi; done
-
-include .depend
diff --git a/camlp4/unmaintained/compile/comp_head.ml b/camlp4/unmaintained/compile/comp_head.ml
deleted file mode 100644 (file)
index cd62343..0000000
+++ /dev/null
@@ -1,70 +0,0 @@
-(* camlp4r q_MLast.cmo pa_extend.cmo *)
-
-
-module P =
-  struct
-    value gloc bp strm = Grammar.loc_of_token_interval bp (Stream.count strm);
-    value list0 symb =
-      let rec loop al =
-        parser
-        [ [: a = symb; s :] -> loop [a :: al] s
-        | [: :] -> al ]
-      in
-      parser [: a = loop [] :] -> List.rev a
-    ;
-    value list0sep symb sep =
-      let rec kont al =
-        parser
-        [ [: v = sep; a = symb; s :] -> kont [a :: al] s
-        | [: :] -> al ]
-      in
-      parser
-      [ [: a = symb; s :] -> List.rev (kont [a] s)
-      | [: :] -> [] ]
-    ;
-    value list1 symb =
-      let rec loop al =
-        parser
-        [ [: a = symb; s :] -> loop [a :: al] s
-        | [: :] -> al ]
-      in
-      parser [: a = symb; s :] -> List.rev (loop [a] s)
-    ;
-    value list1sep symb sep =
-      let rec kont al =
-        parser
-        [ [: v = sep; a = symb; s :] -> kont [a :: al] s
-        | [: :] -> al ]
-      in
-      parser [: a = symb; s :] -> List.rev (kont [a] s)
-    ;
-    value option f =
-      parser
-      [ [: x = f :] -> Some x
-      | [: :] -> None ]
-    ;
-    value token (p_con, p_prm) =
-      if p_prm = "" then parser [: `(con, prm) when con = p_con :] -> prm
-      else parser [: `(con, prm) when con = p_con && prm = p_prm :] -> prm
-    ;
-    value orzero f f0 =
-      parser bp
-      [ [: x = f :] -> x
-      | [: x = f0 :] ep ->
-(*
-let (loc1, loc2) = Grammar.loc_of_token_interval bp ep in
-let _ = do { Printf.eprintf "recovered or_zero at loc (%d, %d)\n" loc1 loc2; flush stderr } in
-*)
-           x ]
-    ;
-    value error entry prev_symb symb =
-      symb ^ " expected" ^
-      (if prev_symb = "" then "" else " after " ^ prev_symb) ^
-      " (in [" ^ entry ^ "])"
-    ;
-    value lexer = Plexer.gmake();
-  end
-;
-
-(****************************************)
-
diff --git a/camlp4/unmaintained/compile/comp_trail.ml b/camlp4/unmaintained/compile/comp_trail.ml
deleted file mode 100644 (file)
index 75f40ab..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
-(* camlp4r pa_extend.cmo *)
-(****************************************)
-
-value interf_p =
-  Grammar.Entry.of_parser Pcaml.gram "interf" interf_0
-;
-
-value implem_p =
-  Grammar.Entry.of_parser Pcaml.gram "implem" implem_0
-;
-
-value top_phrase_p =
-  Grammar.Entry.of_parser Pcaml.gram "top_phrase" top_phrase_0
-;
-
-value use_file_p =
-  Grammar.Entry.of_parser Pcaml.gram "use_file" use_file_0
-;
-
-EXTEND
-  interf:
-    [ [ x = interf_p -> x ] ]
-  ;
-  implem:
-    [ [ x = implem_p -> x ] ]
-  ;
-  top_phrase:
-    [ [ x = top_phrase_p -> x ] ]
-  ;
-  use_file:
-    [ [ x = use_file_p -> x ] ]
-  ;
-END;
diff --git a/camlp4/unmaintained/compile/compile.ml b/camlp4/unmaintained/compile/compile.ml
deleted file mode 100644 (file)
index b5e6ba5..0000000
+++ /dev/null
@@ -1,574 +0,0 @@
-(* camlp4r *)
-
-
-open Gramext;
-
-value strict_parsing = ref False;
-value keywords = ref [];
-
-value _loc = Loc.ghost;
-
-(* Watch the segmentation faults here! the compiled file must have been
-   loaded in camlp4 with the option pa_extend.cmo -meta_action. *)
-value magic_act (act : Obj.t) : MLast.expr = Obj.magic act;
-
-(* Names of symbols for error messages; code borrowed to grammar.ml *)
-
-value rec name_of_symbol entry =
-  fun
-  [ Snterm e -> "[" ^ e.ename ^ "]"
-  | Snterml e l -> "[" ^ e.ename ^ " level " ^ l ^ "]"
-  | Sself | Snext -> "[" ^ entry.ename ^ "]"
-  | Stoken tok -> entry.egram.glexer.Token.tok_text tok
-  | _ -> "???" ]
-;
-
-value rec name_of_symbol_failed entry =
-  fun
-  [ Slist0 s -> name_of_symbol_failed entry s
-  | Slist0sep s _ -> name_of_symbol_failed entry s
-  | Slist1 s -> name_of_symbol_failed entry s
-  | Slist1sep s _ -> name_of_symbol_failed entry s
-  | Sopt s -> name_of_symbol_failed entry s
-  | Stree t -> name_of_tree_failed entry t
-  | s -> name_of_symbol entry s ]
-and name_of_tree_failed entry =
-  fun
-  [ Node {node = s; brother = bro; son = son} ->
-      let txt = name_of_symbol_failed entry s in
-      let txt =
-        match (s, son) with
-        [ (Sopt _, Node _) -> txt ^ " or " ^ name_of_tree_failed entry son
-        | _ -> txt ]
-      in
-      let txt =
-        match bro with
-        [ DeadEnd | LocAct _ _ -> txt
-        | _ -> txt ^ " or " ^ name_of_tree_failed entry bro ]
-      in
-      txt
-  | DeadEnd | LocAct _ _ -> "???" ]
-;
-
-value tree_failed entry prev_symb tree =
-  let (s2, s3) =
-    let txt = name_of_tree_failed entry tree in
-    match prev_symb with
-    [ Slist0 s ->
-        let txt1 = name_of_symbol_failed entry s in
-        ("", txt1 ^ " or " ^ txt)
-    | Slist1 s ->
-        let txt1 = name_of_symbol_failed entry s in
-        ("", txt1 ^ " or " ^ txt)
-    | Slist0sep s sep ->
-        let txt1 = name_of_symbol_failed entry s in
-        ("", txt1 ^ " or " ^ txt)
-    | Slist1sep s sep ->
-        let txt1 = name_of_symbol_failed entry s in
-        ("", txt1 ^ " or " ^ txt)
-    | Sopt _ | Stree _ -> ("", txt)
-    | _ -> (name_of_symbol entry prev_symb, txt) ]
-  in
-  <:expr<
-    P.error $str:entry.ename$ $`str:s2$ $`str:s3$
-  >>
-;
-
-(* Compilation *)
-
-value rec find_act =
-  fun
-  [ DeadEnd -> failwith "find_act"
-  | LocAct act _ -> (magic_act act, 0)
-  | Node {son = son; brother = bro} ->
-      let (act, n) = try find_act son with [ Failure _ -> find_act bro ] in
-      (act, n + 1) ]
-;
-
-value level_number e l =
-  match e.edesc with
-  [ Dlevels elevs ->
-      loop 0 elevs where rec loop n =
-        fun
-        [ [lev :: levs] -> if lev.lname = Some l then n else loop (n + 1) levs
-        | [] -> failwith ("level " ^ l ^ " not found in entry " ^ e.ename) ]
-  | Dparser _ -> 0 ]
-;
-
-value nth_patt_of_act (e, n) =
-  let patt_list =
-    loop e where rec loop =
-      fun
-      [ <:expr< fun (_loc : Locaction.t) -> $_$ >> ->
-        []
-      | <:expr< fun ($p$ : $_$) -> $e$ >> -> [p :: loop e]
-      | <:expr< fun $p$ -> $e$ >> -> [p :: loop e]
-      | _ -> failwith "nth_patt_of_act" ]
-  in
-  List.nth patt_list n
-;
-
-value rec last_patt_of_act =
-  fun
-  [ <:expr< fun ($p$ : $_$) (_loc : Locaction.t) ->
-    $_$ >> -> p
-  | <:expr< fun $_$ -> $e$ >> -> last_patt_of_act e
-  | _ -> failwith "last_patt_of_act" ]
-;
-
-#load "pr_r.cmo";
-value rec final_action =
-  fun
-  [
-    <:expr< fun (_loc : Loc.t) -> ($e$ : $_$) >> -> e
-  | <:expr< fun $_$ -> $e$ >> -> final_action e
-  | ast -> do {
-    print_endline "final_action failed";
-    Pcaml.print_implem.val [(MLast.StExp _loc ast, _loc)];
-    failwith "final_action";
-  } ]
-;
-
-value parse_standard_symbol e rkont fkont ending_act =
-  <:expr<
-     match try Some ($e$ __strm) with [ Stream.Failure -> None ] with
-     [ Some $nth_patt_of_act ending_act$ -> $rkont$
-     | _ -> $fkont$ ]
-  >>
-;
-
-value parse_symbol_no_failure e rkont fkont ending_act =
-  <:expr<
-     let $nth_patt_of_act ending_act$ =
-       try $e$ __strm with [ Stream.Failure -> raise (Stream.Error "") ]
-     in
-     $rkont$
-  >>
-;
-
-value rec contain_loc =
-  fun
-  [ <:expr< $lid:s$ >> -> (s = "loc") || (s = "_loc")
-  | <:expr< $uid:_$ >> -> False
-  | <:expr< $str:_$ >> -> False
-  | <:expr< ($list:el$) >> -> List.exists contain_loc el
-  | <:expr< $e1$ $e2$ >> -> contain_loc e1 || contain_loc e2
-  | _ -> True ]
-;
-
-value gen_let_loc _loc e =
-  if contain_loc e then <:expr< let _loc = P.gloc bp __strm in $e$ >> else e
-;
-
-value phony_entry = Grammar.Entry.obj Pcaml.implem;
-
-value rec parse_tree entry nlevn alevn (tree, fst_symb) act_kont kont =
-  match tree with
-  [ DeadEnd -> kont
-  | LocAct act _ ->
-      let act = magic_act act in
-      act_kont False act
-  | Node {node = Sself; son = LocAct act _; brother = bro} ->
-      let act = magic_act act in
-      let n = entry.ename ^ "_" ^ string_of_int alevn in
-      let e =
-        if strict_parsing.val || alevn = 0 || fst_symb then <:expr< $lid:n$ >>
-        else <:expr< P.orzero $lid:n$ $lid:entry.ename ^ "_0"$ >>
-      in
-      let p2 =
-        match bro with
-        [ DeadEnd -> kont
-        | _ -> parse_tree entry nlevn alevn (bro, fst_symb) act_kont kont ]
-      in
-      let p1 = act_kont True act in
-      parse_standard_symbol e p1 p2 (act, 0)
-  | Node {node = s; son = LocAct act _; brother = bro} ->
-      let act = magic_act act in
-      let p2 = parse_tree entry nlevn alevn (bro, fst_symb) act_kont kont in
-      let p1 = act_kont False act in
-      parse_symbol entry nlevn s p1 p2 (act, 0)
-  | Node {node = s; son = son; brother = bro} ->
-      let p2 = parse_tree entry nlevn alevn (bro, fst_symb) act_kont kont in
-      let p1 =
-        let err =
-          let txt = tree_failed entry s son in
-          <:expr< raise (Stream.Error $txt$) >>
-        in
-        match son with
-        [ Node {brother = DeadEnd} ->
-            parse_tree entry nlevn alevn (son, False) act_kont err
-        | _ ->
-            let p1 =
-              parse_tree entry nlevn alevn (son, True) act_kont
-                <:expr< raise Stream.Failure >>
-            in
-            <:expr< try $p1$ with [ Stream.Failure -> $err$ ] >> ]
-      in
-      parse_symbol entry nlevn s p1 p2 (find_act son) ]
-and parse_symbol entry nlevn s rkont fkont ending_act =
-  match s with
-  [ Slist0 s ->
-      let e = <:expr< P.list0 $symbol_parser entry nlevn s$ >> in
-      parse_symbol_no_failure e rkont fkont ending_act
-  | Slist1 s ->
-      let e = <:expr< P.list1 $symbol_parser entry nlevn s$ >> in
-      parse_standard_symbol e rkont fkont ending_act
-  | Slist0sep s sep ->
-      let e =
-        <:expr<
-          P.list0sep $symbol_parser entry nlevn s$
-            $symbol_parser entry nlevn sep$ >>
-      in
-      parse_symbol_no_failure e rkont fkont ending_act
-  | Slist1sep s sep ->
-      let e =
-        <:expr<
-           P.list1sep $symbol_parser entry nlevn s$
-             $symbol_parser entry nlevn sep$ >>
-      in
-      parse_standard_symbol e rkont fkont ending_act
-  | Sopt s ->
-      let e = <:expr< P.option $symbol_parser entry nlevn s$ >> in
-      parse_symbol_no_failure e rkont fkont ending_act
-  | Stree tree ->
-      let kont = <:expr< raise Stream.Failure >> in
-      let act_kont _ act = gen_let_loc _loc (final_action act) in
-      let e = parse_tree phony_entry 0 0 (tree, True) act_kont kont in
-      parse_standard_symbol <:expr< fun __strm -> $e$ >> rkont fkont ending_act
-  | Snterm e ->
-      let n =
-        match e.edesc with
-        [ Dparser _ -> e.ename
-        | Dlevels _ -> e.ename ^ "_0" ]
-      in
-      parse_standard_symbol <:expr< $lid:n$ >> rkont fkont ending_act
-  | Snterml e l ->
-      let n = e.ename ^ "_" ^ string_of_int (level_number e l) in
-      parse_standard_symbol <:expr< $lid:n$ >> rkont fkont ending_act
-  | Sself ->
-      let n = entry.ename ^ "_0" in
-      parse_standard_symbol <:expr< $lid:n$ >> rkont fkont ending_act
-  | Snext ->
-      let n = entry.ename ^ "_" ^ string_of_int nlevn in
-      parse_standard_symbol <:expr< $lid:n$ >> rkont fkont ending_act
-  | Stoken tok ->
-      let _ =
-        do {
-          if fst tok = "" && not (List.mem (snd tok) keywords.val) then
-            keywords.val := [snd tok :: keywords.val]
-          else ()
-        }
-      in
-      let p =
-        let patt = nth_patt_of_act ending_act in
-        let p_con = fst tok in
-        let p_prm = snd tok in
-        if snd tok = "" then
-          if fst tok = "ANY" then <:patt< (_, $patt$) >>
-          else <:patt< ($`str:p_con$, $patt$) >>
-        else
-          match patt with
-          [ <:patt< _ >> -> <:patt< ($`str:p_con$, $`str:p_prm$) >>
-          | _ -> <:patt< ($`str:p_con$, ($`str:p_prm$ as $patt$)) >> ]
-      in
-      <:expr<
-        match Stream.peek __strm with
-        [ Some $p$ -> do { Stream.junk __strm; $rkont$ }
-        | _ -> $fkont$ ]
-      >>
-  | _ ->
-      parse_standard_symbol <:expr< not_impl >> rkont fkont ending_act ]
-and symbol_parser entry nlevn =
-  fun
-  [ Snterm e ->
-      let n = e.ename ^ "_0" in
-      <:expr< $lid:n$ >>
-  | Snterml e l ->
-      let n = e.ename ^ "_" ^ string_of_int (level_number e l) in
-      <:expr< $lid:n$ >>
-  | Snext ->
-      let n = entry.ename ^ "_" ^ string_of_int nlevn in
-      if strict_parsing.val then <:expr< $lid:n$ >>
-      else
-        let n0 = entry.ename ^ "_0" in
-        <:expr< P.orzero $lid:n$ $lid:n0$ >>
-  | Stoken tok ->
-      let _ =
-        do {
-          if fst tok = "" && not (List.mem (snd tok) keywords.val) then
-            keywords.val := [snd tok :: keywords.val]
-          else ()
-        }
-      in
-      <:expr< P.token ($`str:fst tok$, $`str:snd tok$) >>
-  | Stree tree ->
-      let kont = <:expr< raise Stream.Failure >> in
-      let act_kont _ act = final_action act in
-      <:expr<
-        fun __strm ->
-          $parse_tree phony_entry 0 0 (tree, True) act_kont kont$
-      >>
-  | _ ->
-      <:expr< aaa >> ]
-;
-
-value rec start_parser_of_levels entry clevn levs =
-  let n = entry.ename ^ "_" ^ string_of_int clevn in
-  let next = entry.ename ^ "_" ^ string_of_int (clevn + 1) in
-  let p = <:patt< $lid:n$ >> in
-  match levs with
-  [ [] -> [Some (p, <:expr< fun __strm -> raise Stream.Failure >>)]
-  | [lev :: levs] ->
-      let pel = start_parser_of_levels entry (succ clevn) levs in
-      match lev.lprefix with
-      [ DeadEnd ->
-          let ncont =
-             if not strict_parsing.val && clevn = 0 then
-               entry.ename ^ "_gen_cont"
-             else entry.ename ^ "_" ^ string_of_int clevn ^ "_cont"
-          in
-          let curr =
-            <:expr< let a = $lid:next$ __strm in $lid:ncont$ bp a __strm >>
-          in
-          let curr = <:expr< let bp = Stream.count __strm in $curr$ >> in
-          let e = <:expr< fun __strm -> $curr$ >> in
-          let pel = if levs = [] then [] else pel in
-          [Some (p, e) :: pel]
-      | tree ->
-          let alevn = clevn in
-          let (kont, pel) =
-            match levs with
-            [ [] -> (<:expr< raise Stream.Failure >>, [])
-            | _ ->
-                let e =
-                  match (lev.assoc, lev.lsuffix) with
-                  [ (NonA, _) | (_, DeadEnd) -> <:expr< $lid:next$ __strm >>
-                  | _ ->
-                      let ncont =
-                        entry.ename ^ "_" ^ string_of_int clevn ^ "_cont"
-                      in
-                      <:expr<
-                        let a = $lid:next$ __strm in
-                        $lid:ncont$ bp a __strm
-                      >> ]
-                in
-                (e, pel) ]
-          in
-          let act_kont end_with_self act =
-            if lev.lsuffix = DeadEnd then gen_let_loc _loc (final_action act)
-            else
-              let ncont = entry.ename ^ "_" ^ string_of_int clevn ^ "_cont" in
-              gen_let_loc _loc
-                <:expr< $lid:ncont$ bp $final_action act$ __strm >>
-          in
-          let curr =
-            parse_tree entry (succ clevn) alevn (tree, True) act_kont kont
-          in
-          let curr = <:expr< let bp = Stream.count __strm in $curr$ >> in
-          let e = <:expr< fun __strm -> $curr$ >> in
-          [Some (p, e) :: pel] ] ]
-;
-
-value rec continue_parser_of_levels entry clevn levs =
-  let n = entry.ename ^ "_" ^ string_of_int clevn ^ "_cont" in
-  let p = <:patt< $lid:n$ >> in
-  match levs with
-  [ [] -> [None]
-  | [lev :: levs] ->
-      let pel = continue_parser_of_levels entry (succ clevn) levs in
-      match lev.lsuffix with
-      [ DeadEnd ->
-          [None :: pel]
-      | tree ->
-          let alevn =
-            match lev.assoc with
-            [ LeftA | NonA -> succ clevn
-            | RightA -> clevn ]
-          in
-          let (kont, pel) =
-            match levs with
-            [ [] -> (<:expr< a__ >>, [])
-            | _ -> (<:expr< a__ >>, pel) ]
-          in
-          let act_kont end_with_self act =
-            let p = last_patt_of_act act in
-            match lev.assoc with
-            [ RightA | NonA ->
-                <:expr<
-                  let $p$ = a__ in
-                  $gen_let_loc _loc (final_action act)$
-                >>
-            | LeftA ->
-                let ncont =
-                  entry.ename ^ "_" ^ string_of_int clevn ^ "_cont"
-                in
-                gen_let_loc _loc
-                  <:expr<
-                    let $p$ = a__ in
-                    $lid:ncont$ bp $final_action act$ __strm
-                  >> ]
-          in
-          let curr =
-            parse_tree entry (succ clevn) alevn (tree, True) act_kont kont
-          in
-          let e = <:expr< fun bp a__ __strm -> $curr$ >> in
-          [Some (p, e) :: pel] ] ]
-;
-
-value continue_parser_of_levels_again entry levs =
-  let n = entry.ename ^ "_gen_cont" in
-  let e =
-    loop <:expr< a__ >> 0 levs where rec loop var levn =
-      fun
-      [ [] -> <:expr< if x == a__ then x else $lid:n$ bp x __strm >>
-      | [lev :: levs] ->
-          match lev.lsuffix with
-          [ DeadEnd -> loop var (levn + 1) levs
-          | _ ->
-              let n = entry.ename ^ "_" ^ string_of_int levn ^ "_cont" in
-              let rest = loop <:expr< x >> (levn + 1) levs in
-              <:expr< let x = $lid:n$ bp $var$ __strm in $rest$ >> ] ]
-  in
-  (<:patt< $lid:n$ >>, <:expr< fun bp a__ __strm -> $e$ >>)
-;
-
-value empty_entry ename =
-  let p = <:patt< $lid:ename$ >> in
-  let e =
-    <:expr<
-      fun __strm ->
-        raise (Stream.Error $str:"entry [" ^ ename ^ "] is empty"$) >>
-  in
-  [Some (p, e)]
-;
-
-value start_parser_of_entry entry =
-  match entry.edesc with
-  [ Dlevels [] -> empty_entry entry.ename
-  | Dlevels elev -> start_parser_of_levels entry 0 elev
-  | Dparser p -> [] ]
-;
-
-value continue_parser_of_entry entry =
-  match entry.edesc with
-  [ Dlevels elev -> continue_parser_of_levels entry 0 elev
-  | Dparser p -> [] ]
-;
-
-value continue_parser_of_entry_again entry =
-  if strict_parsing.val then []
-  else
-    match entry.edesc with
-    [ Dlevels ([_; _ :: _] as levs) ->
-        [continue_parser_of_levels_again entry levs]
-    | _ -> [] ]
-;
-
-value rec list_alternate l1 l2 =
-  match (l1, l2) with
-  [ ([x1 :: l1], [x2 :: l2]) -> [x1; x2 :: list_alternate l1 l2]
-  | ([], l2) -> l2
-  | (l1, []) -> l1 ]
-;
-
-value compile_entry entry =
-  let pel1 = start_parser_of_entry entry in
-  let pel2 = continue_parser_of_entry entry in
-  let pel = list_alternate pel1 pel2 in
-  List.fold_right
-    (fun pe list ->
-       match pe with
-       [ Some pe -> [pe :: list]
-       | None -> list ])
-    pel (continue_parser_of_entry_again entry)
-;
-
-(* get all entries connected together *)
-
-value rec scan_tree list =
-  fun
-  [ Node {node = n; son = son; brother = bro} ->
-      let list = scan_symbol list n in
-      let list = scan_tree list son in
-      let list = scan_tree list bro in
-      list
-  | LocAct _ _ | DeadEnd -> list ]
-and scan_symbol list =
-  fun
-  [ Snterm e -> scan_entry list e
-  | Snterml e l -> scan_entry list e
-  | Slist0 s -> scan_symbol list s
-  | Slist0sep s sep -> scan_symbol (scan_symbol list s) sep
-  | Slist1 s -> scan_symbol list s
-  | Slist1sep s sep -> scan_symbol (scan_symbol list s) sep
-  | Sopt s -> scan_symbol list s
-  | Stree t -> scan_tree list t
-  | Smeta _ _ _ | Sself | Snext | Stoken _ -> list ]
-and scan_level list lev =
-  let list = scan_tree list lev.lsuffix in
-  let list = scan_tree list lev.lprefix in
-  list
-and scan_levels list levs = List.fold_left scan_level list levs
-and scan_entry list entry =
-  if List.memq entry list then list
-  else
-    match entry.edesc with
-    [ Dlevels levs -> scan_levels [entry :: list] levs
-    | Dparser _ -> list ]
-;
-
-value all_entries_in_graph list entry =
-  List.rev (scan_entry list entry)
-;
-
-(* main *)
-
-value entries = ref [];
-
-value rec list_mem_right_assoc x =
-  fun
-  [ [] -> False
-  | [(a, b) :: l] -> x = b || list_mem_right_assoc x l ]
-;
-
-value rec expr_list =
-  fun
-  [ [] -> <:expr< [] >>
-  | [x :: l] -> <:expr< [$`str:x$ :: $expr_list l$] >> ]
-;
-
-value compile () =
-  let _ = do { keywords.val := []; } in
-  let list = List.fold_left all_entries_in_graph [] entries.val in
-  let list =
-    List.filter (fun e -> List.memq e list) entries.val @
-    List.filter (fun e -> not (List.memq e entries.val)) list
-  in
-  let list =
-    let set = ref [] in
-    List.fold_right
-      (fun entry list ->
-         if List.mem entry.ename set.val then
-           list
-         else do { set.val := [entry.ename :: set.val]; [entry :: list] })
-        list []
-  in
-  let pell = List.map compile_entry list in
-  let pel = List.flatten pell in
-  let si1 = <:str_item< value rec $list:pel$ >> in
-  let si2 =
-    let list = List.sort compare keywords.val in
-    <:str_item<
-      List.iter (fun kw -> P.lexer.Token.tok_using ("", kw))
-        $expr_list list$
-    >>
-  in
-  let loc = Loc.ghost in
-  ([(si1, loc); (si2, loc)], False)
-;
-
-Pcaml.parse_implem.val := fun _ _ -> compile ();
-
-Pcaml.add_option "-strict_parsing" (Arg.Set strict_parsing)
-  "Don't generate error recovering by trying continuations or first levels"
-;
diff --git a/camlp4/unmaintained/compile/compile.sh b/camlp4/unmaintained/compile/compile.sh
deleted file mode 100755 (executable)
index a2f4f77..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-#!/bin/sh -e
-
-ARGS=
-FILES=
-ENTRIES=
-while test "" != "$1"; do
-        case $1 in
-        -e)
-           shift;
-           if test "$ENTRIES" != ""; then ENTRIES="$ENTRIES; "; fi
-           ENTRIES="$ENTRIES$1";;
-        *.ml*) FILES="$FILES $1";;
-        *) ARGS="$ARGS $1";;
-        esac
-        shift
-done
-
-cat $FILES | sed -e 's/Pcaml.parse_i.*$//' > tmp.ml
-echo "Compile.entries.val := [$ENTRIES];" >> tmp.ml
-> tmp.mli
-set -x
-$OTOP/boot/ocamlrun$EXE $OTOP/boot/ocamlc -I $OTOP/boot -c tmp.mli
-$OTOP/boot/ocamlrun$EXE ../boot/camlp4boot$EXE -meta_action tmp.ml -o tmp.ppo
-$OTOP/boot/ocamlrun$EXE $OTOP/boot/ocamlc -I $OTOP/boot -I ../lib -I ../camlp4 -c -impl tmp.ppo
-rm tmp.ppo
-> tmp.null
-$OTOP/boot/ocamlrun$EXE ../camlp4/camlp4$EXE ./compile.cmo ./tmp.cmo ../etc/pr_r.cmo ../etc/pr_rp.cmo $ARGS -sep "\n\n" -impl tmp.null && rm tmp.*
diff --git a/camlp4/unmaintained/etc/.depend b/camlp4/unmaintained/etc/.depend
deleted file mode 100644 (file)
index 863adc1..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-parserify.cmo: parserify.cmi 
-parserify.cmx: parserify.cmi 
-pr_op_main.cmo: parserify.cmi 
-pr_op_main.cmx: parserify.cmx 
-pr_rp_main.cmo: parserify.cmi 
-pr_rp_main.cmx: parserify.cmx 
diff --git a/camlp4/unmaintained/etc/.ignore b/camlp4/unmaintained/etc/.ignore
deleted file mode 100644 (file)
index 709f85c..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-camlp4o
-camlp4sch
-camlp4o.opt
-version.sh
-mkcamlp4.sh
diff --git a/camlp4/unmaintained/etc/Makefile b/camlp4/unmaintained/etc/Makefile
deleted file mode 100644 (file)
index 47bc412..0000000
+++ /dev/null
@@ -1,62 +0,0 @@
-
-
-include ../config/Makefile.cnf
-
-INCLUDES=-I ../camlp4 -I ../lib -I ../meta -I $(OTOP)/lex -I $(OTOP)/parsing
-OBJS=q_phony.cmo pa_o.cmo pa_op.cmo pa_oop.cmo pa_ru.cmo pa_extfun.cmo pa_fstream.cmo pa_ifdef.cmo pr_r.cmo pr_rp.cmo pr_o.cmo pr_op.cmo pr_extend.cmo pr_extfun.cmo pr_null.cmo pr_depend.cmo genTraversal.cmo fi_exc_tracer.cmo
-INTF=pa_o.cmi
-CAMLP4OM=pa_o.cmo pa_op.cmo ../meta/pr_dump.cmo
-CAMLP4OMX=$(CAMLP4OM:.cmo=.cmx)
-EXECUTABLES=camlp4o
-
-include ../config/Makefile.base
-
-all-local: mkcamlp4.sh
-
-pr_rp.cmo: parserify.cmo pr_rp_main.cmo
-       $(OCAMLC) parserify.cmo pr_rp_main.cmo -a -o $@
-
-pr_op.cmo: parserify.cmo pr_op_main.cmo
-       $(OCAMLC) parserify.cmo pr_op_main.cmo -a -o $@
-
-pr_rp.cmx: parserify.cmx pr_rp_main.cmx
-       $(OCAMLOPT) parserify.cmx pr_rp_main.cmx -a -o pr_rp.cmxa
-       mv pr_rp.cmxa pr_rp.cmx
-       mv pr_rp.$(A) pr_rp.$(O)
-
-pr_op.cmx: parserify.cmx pr_op_main.cmx
-       $(OCAMLOPT) parserify.cmx pr_op_main.cmx -a -o pr_op.cmxa
-       mv pr_op.cmxa pr_op.cmx
-       mv pr_op.$(A) pr_op.$(O)
-
-camlp4o$(EXE): ../camlp4/camlp4$(EXE) $(CAMLP4OM)
-       rm -f camlp4o$(EXE)
-       cd ../camlp4; $(MAKE) CAMLP4=../etc/camlp4o$(EXE) CAMLP4M="-I ../etc $(CAMLP4OM)"
-
-camlp4o.opt: $(CAMLP4OMX)
-       rm -f camlp4o.opt
-       cd ../camlp4; $(MAKE) ../etc/camlp4o.opt CAMLP4OPT=../etc/camlp4o.opt CAMLP4M="-I ../etc $(CAMLP4OMX)"
-
-mkcamlp4.sh: mkcamlp4.sh.tpl version.sh
-       sed -e "s!LIBDIR!$(LIBDIR)!g" -e "/define VERSION/r version.sh" \
-           mkcamlp4.sh.tpl > mkcamlp4.sh
-
-version.sh : $(OTOP)/VERSION
-       echo "VERSION=\"`sed -e 1q ../VERSION`\"" >version.sh
-
-install-local:
-       -$(MKDIR) "$(LIBDIR)/camlp4" "$(BINDIR)"
-       cp $(OBJS) "$(LIBDIR)/camlp4/."
-       cp $(INTF) "$(LIBDIR)/camlp4/."
-       cp camlp4o$(EXE) "$(BINDIR)/."
-       if test -f camlp4o.opt; then \
-         cp camlp4o.opt "$(BINDIR)/camlp4o.opt$(EXE)"; \
-         cp $(OBJSX) "$(LIBDIR)/camlp4/."; \
-         for file in $(OBJSX); do \
-           cp "`echo $$file | sed -e 's/\.cmx$$/.$(O)/'`" "$(LIBDIR)/camlp4/."; \
-         done ; \
-       fi
-       cp mkcamlp4.sh "$(BINDIR)/mkcamlp4"
-       chmod a+x "$(BINDIR)/mkcamlp4"
-
-include .depend
diff --git a/camlp4/unmaintained/etc/pa_fstream.ml b/camlp4/unmaintained/etc/pa_fstream.ml
deleted file mode 100644 (file)
index e5027b5..0000000
+++ /dev/null
@@ -1,163 +0,0 @@
-(* camlp4r pa_extend.cmo q_MLast.cmo *)
-
-
-open Pcaml;
-
-type spat_comp =
-  [ SpTrm of Loc.t and MLast.patt and option MLast.expr
-  | SpNtr of Loc.t and MLast.patt and MLast.expr
-  | SpStr of Loc.t and MLast.patt ]
-;
-type sexp_comp =
-  [ SeTrm of Loc.t and MLast.expr
-  | SeNtr of Loc.t and MLast.expr ]
-;
-
-(* parsers *)
-
-value strm_n = "__strm";
-value next_fun _loc = <:expr< Fstream.next >>;
-
-value rec pattern_eq_expression p e =
-  match (p, e) with
-  [ (<:patt< $lid:a$ >>, <:expr< $lid:b$ >>) -> a = b
-  | (<:patt< $uid:a$ >>, <:expr< $uid:b$ >>) -> a = b
-  | (<:patt< $p1$ $p2$ >>, <:expr< $e1$ $e2$ >>) ->
-      pattern_eq_expression p1 e1 && pattern_eq_expression p2 e2
-  | (<:patt< ($list:pl$) >>, <:expr< ($list:el$) >>) ->
-      loop pl el where rec loop pl el =
-        match (pl, el) with
-        [ ([p :: pl], [e :: el]) ->
-            pattern_eq_expression p e && loop pl el
-        | ([], []) -> True
-        | _ -> False ]
-  | _ -> False ]
-;
-
-value stream_pattern_component skont =
-  fun
-  [ SpTrm _loc p wo ->
-      let p = <:patt< Some ($p$, $lid:strm_n$) >> in
-      if wo = None && pattern_eq_expression p skont then
-        <:expr< $next_fun _loc$ $lid:strm_n$ >>
-      else
-        <:expr< match $next_fun _loc$ $lid:strm_n$ with
-                [ $p$ $when:wo$ -> $skont$
-                | _ -> None ] >>
-  | SpNtr _loc p e ->
-      let p = <:patt< Some ($p$, $lid:strm_n$) >> in
-      if pattern_eq_expression p skont then <:expr< $e$ $lid:strm_n$ >>
-      else
-        <:expr< match $e$ $lid:strm_n$ with
-                [ $p$ -> $skont$
-                | _ -> None ] >>
-  | SpStr _loc p ->
-      <:expr< let $p$ = $lid:strm_n$ in $skont$ >> ]
-;
-
-value rec stream_pattern _loc epo e =
-  fun
-  [ [] ->
-      let e =
-        match epo with
-        [ Some ep -> <:expr< let $ep$ = Fstream.count $lid:strm_n$ in $e$ >>
-        | None -> e ]
-      in
-      <:expr< Some ($e$, $lid:strm_n$) >>
-  | [spc :: spcl] ->
-      let skont = stream_pattern _loc epo e spcl in
-      stream_pattern_component skont spc ]
-;
-
-value rec parser_cases _loc =
-  fun
-  [ [] -> <:expr< None >>
-  | [(spcl, epo, e) :: spel] ->
-      match parser_cases _loc spel with
-      [ <:expr< None >> -> stream_pattern _loc epo e spcl
-      | pc ->
-          <:expr< match $stream_pattern _loc epo e spcl$ with
-                  [ Some _ as x -> x
-                  | None -> $pc$ ] >> ] ]
-;
-
-value cparser_match _loc me bpo pc =
-  let pc = parser_cases _loc pc in
-  let e =
-    match bpo with
-    [ Some bp -> <:expr< let $bp$ = Stream.count $lid:strm_n$ in $pc$ >>
-    | None -> pc ]
-  in
-  <:expr< let ($lid:strm_n$ : Stream.t _) = $me$ in $e$ >>
-;
-
-value cparser _loc bpo pc =
-  let e = parser_cases _loc pc in
-  let e =
-    match bpo with
-    [ Some bp -> <:expr< let $bp$ = Fstream.count $lid:strm_n$ in $e$ >>
-    | None -> e ]
-  in
-  let p = <:patt< ($lid:strm_n$ : Fstream.t _) >> in <:expr< fun $p$ -> $e$ >>
-;
-
-(* streams *)
-
-value slazy _loc x = <:expr< fun () -> $x$ >>;
-
-value rec cstream _loc =
-  fun
-  [ [] -> <:expr< Fstream.nil >>
-  | [SeTrm _loc e :: sel] ->
-      let e2 = cstream _loc sel in
-      let x = <:expr< Fstream.cons $e$ $e2$ >> in
-      <:expr< Fstream.flazy $slazy _loc x$ >>
-  | [SeNtr _loc e] ->
-      e
-  | [SeNtr _loc e :: sel] ->
-      let e2 = cstream _loc sel in
-      let x = <:expr< Fstream.app $e$ $e2$ >> in
-      <:expr< Fstream.flazy $slazy _loc x$ >> ]
-;
-
-EXTEND
-  GLOBAL: expr;
-  expr: LEVEL "top"
-    [ [ "fparser"; po = OPT ipatt; "["; pcl = LIST0 parser_case SEP "|"; "]" ->
-          <:expr< $cparser _loc po pcl$ >>
-      | "fparser"; po = OPT ipatt; pc = parser_case ->
-          <:expr< $cparser _loc po [pc]$ >>
-      | "match"; e = SELF; "with"; "parser"; po = OPT ipatt; "[";
-        pcl = LIST0 parser_case SEP "|"; "]" ->
-          <:expr< $cparser_match _loc e po pcl$ >>
-      | "match"; e = SELF; "with"; "parser"; po = OPT ipatt;
-        pc = parser_case ->
-          <:expr< $cparser_match _loc e po [pc]$ >> ] ]
-  ;
-  parser_case:
-    [ [ "[:"; sp = stream_patt; ":]"; po = OPT ipatt; "->"; e = expr ->
-          (sp, po, e) ] ]
-  ;
-  stream_patt:
-    [ [ spc = stream_patt_comp -> [spc]
-      | spc = stream_patt_comp; ";"; sp = LIST1 stream_patt_comp SEP ";" ->
-          [spc :: sp]
-      | -> [] ] ]
-  ;
-  stream_patt_comp:
-    [ [ "`"; p = patt; eo = OPT [ "when"; e = expr -> e ] -> SpTrm _loc p eo
-      | p = patt; "="; e = expr -> SpNtr _loc p e
-      | p = patt -> SpStr _loc p ] ]
-  ;
-  ipatt:
-    [ [ i = LIDENT -> <:patt< $lid:i$ >> ] ]
-  ;
-  expr: LEVEL "simple"
-    [ [ "fstream"; "[:"; se = LIST0 stream_expr_comp SEP ";"; ":]" ->
-          <:expr< $cstream _loc se$ >> ] ]
-  ;
-  stream_expr_comp:
-    [ [ "`"; e = expr -> SeTrm _loc e
-      | e = expr -> SeNtr _loc e ] ]
-  ;
-END;
diff --git a/camlp4/unmaintained/etc/pa_ifdef.ml b/camlp4/unmaintained/etc/pa_ifdef.ml
deleted file mode 100644 (file)
index 0665263..0000000
+++ /dev/null
@@ -1,91 +0,0 @@
-(* camlp4r pa_extend.cmo q_MLast.cmo *)
-
-
-(* This module is deprecated since version 3.07; use pa_macro.ml instead *)
-
-value _ =
-  prerr_endline "Warning: pa_ifdef is deprecated since OCaml 3.07. Use pa_macro instead."
-;
-
-type item_or_def 'a =
-  [ SdStr of 'a | SdDef of string | SdUnd of string | SdNop ]
-;
-
-value list_remove x l =
-  List.fold_right (fun e l -> if e = x then l else [e :: l]) l []
-;
-
-value defined = ref ["OCAML_308"; "OCAML_307"; "OCAML_305"; "CAMLP4_300"; "NEWSEQ"];
-value define x = defined.val := [x :: defined.val];
-value undef x = defined.val := list_remove x defined.val;
-
-EXTEND
-  GLOBAL: Pcaml.expr Pcaml.str_item Pcaml.sig_item;
-  Pcaml.expr: LEVEL "top"
-    [ [ "ifdef"; c = UIDENT; "then"; e1 = Pcaml.expr; "else";
-         e2 = Pcaml.expr ->
-          if List.mem c defined.val then e1 else e2
-      | "ifndef"; c = UIDENT; "then"; e1 = Pcaml.expr; "else";
-         e2 = Pcaml.expr ->
-          if List.mem c defined.val then e2 else e1 ] ]
-  ;
-  Pcaml.str_item: FIRST
-    [ [ x = def_undef_str ->
-          match x with
-          [ SdStr si -> si
-          | SdDef x -> do { define x; <:str_item< declare end >> }
-          | SdUnd x -> do { undef x; <:str_item< declare end >> }
-          | SdNop -> <:str_item< declare end >> ] ] ]
-  ;
-  def_undef_str:
-    [ [ "ifdef"; c = UIDENT; "then"; e1 = str_item_def_undef;
-        "else"; e2 = str_item_def_undef ->
-          if List.mem c defined.val then e1 else e2
-      | "ifdef"; c = UIDENT; "then"; e1 = str_item_def_undef ->
-          if List.mem c defined.val then e1 else SdNop
-      | "ifndef"; c = UIDENT; "then"; e1 = str_item_def_undef;
-        "else"; e2 = str_item_def_undef ->
-          if List.mem c defined.val then e2 else e1
-      | "ifndef"; c = UIDENT; "then"; e1 = str_item_def_undef ->
-          if List.mem c defined.val then SdNop else e1
-      | "define"; c = UIDENT -> SdDef c
-      | "undef"; c = UIDENT -> SdUnd c ] ]
-  ;
-  str_item_def_undef:
-    [ [ d = def_undef_str -> d
-      | si = Pcaml.str_item -> SdStr si ] ]
-  ;
-  Pcaml.sig_item: FIRST
-    [ [ x = def_undef_sig ->
-          match x with
-          [ SdStr si -> si
-          | SdDef x -> do { define x; <:sig_item< declare end >> }
-          | SdUnd x -> do { undef x; <:sig_item< declare end >> }
-          | SdNop -> <:sig_item< declare end >> ] ] ]
-  ;
-  def_undef_sig:
-    [ [ "ifdef"; c = UIDENT; "then"; e1 = sig_item_def_undef;
-        "else"; e2 = sig_item_def_undef ->
-          if List.mem c defined.val then e1 else e2
-      | "ifdef"; c = UIDENT; "then"; e1 = sig_item_def_undef ->
-          if List.mem c defined.val then e1 else SdNop
-      | "ifndef"; c = UIDENT; "then"; e1 = sig_item_def_undef;
-        "else"; e2 = sig_item_def_undef ->
-          if List.mem c defined.val then e2 else e1
-      | "ifndef"; c = UIDENT; "then"; e1 = sig_item_def_undef ->
-          if List.mem c defined.val then SdNop else e1
-      | "define"; c = UIDENT -> SdDef c
-      | "undef"; c = UIDENT -> SdUnd c ] ]
-  ;
-  sig_item_def_undef:
-    [ [ d = def_undef_sig -> d
-      | si = Pcaml.sig_item -> SdStr si ] ]
-  ;
-END;
-
-Pcaml.add_option "-D" (Arg.String define)
-  "<string> Define for ifdef instruction."
-;
-Pcaml.add_option "-U" (Arg.String undef)
-  "<string> Undefine for ifdef instruction."
-;
diff --git a/camlp4/unmaintained/etc/pa_oop.ml b/camlp4/unmaintained/etc/pa_oop.ml
deleted file mode 100644 (file)
index 62302e3..0000000
+++ /dev/null
@@ -1,155 +0,0 @@
-(* camlp4r pa_extend.cmo q_MLast.cmo *)
-(***********************************************************************)
-(*                                                                     *)
-(*                             Camlp4                                  *)
-(*                                                                     *)
-(*        Daniel de Rauglaudre, projet Cristal, INRIA Rocquencourt     *)
-(*                                                                     *)
-(*  Copyright 1998 Institut National de Recherche en Informatique et   *)
-(*  Automatique.  Distributed only by permission.                      *)
-(*                                                                     *)
-(***********************************************************************)
-
-
-
-open Pcaml;
-
-type spat_comp =
-  [ SpTrm of Loc.t and MLast.patt and option MLast.expr
-  | SpNtr of Loc.t and MLast.patt and MLast.expr
-  | SpStr of Loc.t and MLast.patt ]
-;
-type sexp_comp =
-  [ SeTrm of Loc.t and MLast.expr | SeNtr of Loc.t and MLast.expr ]
-;
-
-value strm_n = "__strm";
-value peek_fun _loc = <:expr< Stream.peek >>;
-value junk_fun _loc = <:expr< Stream.junk >>;
-
-(* Parsers. *)
-
-value stream_pattern_component skont =
-  fun
-  [ SpTrm _loc p wo ->
-      (<:expr< $peek_fun _loc$ $lid:strm_n$ >>, p, wo,
-       <:expr< do { $junk_fun _loc$ $lid:strm_n$; $skont$ } >>)
-  | SpNtr _loc p e ->
-      (<:expr< try Some ($e$ $lid:strm_n$) with
-               [ Stream.Failure -> None ] >>,
-       p, None, skont)
-  | SpStr _loc p ->
-      (<:expr< Some $lid:strm_n$ >>, p, None, skont) ]
-;
-
-value rec stream_pattern _loc epo e ekont =
-  fun
-  [ [] ->
-      match epo with
-      [ Some ep -> <:expr< let $ep$ = Stream.count $lid:strm_n$ in $e$ >>
-      | _ -> e ]
-  | [(spc, err) :: spcl] ->
-      let skont =
-        let ekont err =
-          let str =
-            match err with
-            [ Some estr -> estr
-            | _ -> <:expr< "" >> ]
-          in
-          <:expr< raise (Stream.Error $str$) >>
-        in
-        stream_pattern _loc epo e ekont spcl
-      in
-      let (tst, p, wo, e) = stream_pattern_component skont spc in
-      let ckont = ekont err in
-      <:expr< match $tst$ with
-              [ Some $p$ $when:wo$ -> $e$ | _ -> $ckont$ ] >> ]
-;
-
-value rec parser_cases _loc =
-  fun
-  [ [] -> <:expr< raise Stream.Failure >>
-  | [(spcl, epo, e) :: spel] ->
-      stream_pattern _loc epo e (fun _ -> parser_cases _loc spel) spcl ]
-;
-
-value cparser _loc bpo pc =
-  let e = parser_cases _loc pc in
-  let e =
-    match bpo with
-    [ Some bp -> <:expr< let $bp$ = Stream.count $lid:strm_n$ in $e$ >>
-    | None -> e ]
-  in
-  let p = <:patt< ($lid:strm_n$ : Stream.t _) >> in
-  <:expr< fun $p$ -> $e$ >>
-;
-
-value cparser_match _loc me bpo pc =
-  let pc = parser_cases _loc pc in
-  let e =
-    match bpo with
-    [ Some bp -> <:expr< let $bp$ = Stream.count $lid:strm_n$ in $pc$ >>
-    | None -> pc ]
-  in
-  <:expr< let $lid:strm_n$ = $me$ in $e$ >>
-;
-
-(* streams *)
-
-value slazy _loc e = <:expr< fun _ -> $e$ >>;
-
-value rec cstream gloc =
-  fun
-  [ [] -> let _loc = gloc in <:expr< Stream.sempty >>
-  | [SeTrm _loc e :: secl] ->
-      <:expr< Stream.lcons $slazy _loc e$ $cstream gloc secl$ >>
-  | [SeNtr _loc e :: secl] ->
-      <:expr< Stream.lapp $slazy _loc e$ $cstream gloc secl$ >> ]
-;
-
-(* Syntax extensions in OCaml grammar *)
-
-
-EXTEND
-  GLOBAL: expr;
-  expr: LEVEL "expr1"
-    [ [ "parser"; po = OPT ipatt; OPT "|"; pcl = LIST1 parser_case SEP "|" ->
-          <:expr< $cparser _loc po pcl$ >>
-      | "match"; e = expr; "with"; "parser"; po = OPT ipatt; OPT "|";
-        pcl = LIST1 parser_case SEP "|" ->
-          <:expr< $cparser_match _loc e po pcl$ >> ] ]
-  ;
-  parser_case:
-    [ [ "[<"; sp = stream_patt; ">]"; po = OPT ipatt; "->"; e = expr ->
-          (sp, po, e) ] ]
-  ;
-  stream_patt:
-    [ [ spc = stream_patt_comp -> [(spc, None)]
-      | spc = stream_patt_comp; ";"; sp = LIST1 stream_patt_comp_err SEP ";" ->
-          [(spc, None) :: sp]
-      | (* empty *) -> [] ] ]
-  ;
-  stream_patt_comp_err:
-    [ [ spc = stream_patt_comp;
-        eo = OPT [ "??"; e = expr LEVEL "expr1" -> e ] ->
-          (spc, eo) ] ]
-  ;
-  stream_patt_comp:
-    [ [ "'"; p = patt; eo = OPT [ "when"; e = (expr LEVEL "expr1") -> e ] ->
-         SpTrm _loc p eo
-     | p = patt; "="; e = (expr LEVEL "expr1") -> SpNtr _loc p e
-     | p = patt -> SpStr _loc p ] ]
-  ;
-  ipatt:
-    [ [ i = LIDENT -> <:patt< $lid:i$ >> ] ]
-  ;
-
-  expr: LEVEL "simple"
-    [ [ "[<"; se = LIST0 stream_expr_comp SEP ";"; ">]" ->
-          <:expr< $cstream _loc se$ >> ] ]
-  ;
-  stream_expr_comp:
-    [ [ "'"; e = expr LEVEL "expr1" -> SeTrm _loc e
-      | e = expr LEVEL "expr1" -> SeNtr _loc e ] ]
-  ;
-END;
diff --git a/camlp4/unmaintained/etc/pa_ru.ml b/camlp4/unmaintained/etc/pa_ru.ml
deleted file mode 100644 (file)
index 1761c5e..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-(* camlp4r pa_extend.cmo q_MLast.cmo *)
-(***********************************************************************)
-(*                                                                     *)
-(*                             Camlp4                                  *)
-(*                                                                     *)
-(*        Daniel de Rauglaudre, projet Cristal, INRIA Rocquencourt     *)
-(*                                                                     *)
-(*  Copyright 1998 Institut National de Recherche en Informatique et   *)
-(*  Automatique.  Distributed only by permission.                      *)
-(*                                                                     *)
-(***********************************************************************)
-
-
-
-open Pcaml;
-
-value o2b =
-  fun
-  [ Some _ -> True
-  | None -> False ]
-;
-
-EXTEND
-  GLOBAL: expr;
-  expr: LEVEL "top"
-    [ [ "do"; "{"; seq = sequence; "}" ->
-          match seq with
-          [ [e] -> e
-          | _ -> <:expr< do { $list:seq$ } >> ] ] ]
-  ;
-  sequence:
-    [ [ "let"; o = OPT "rec"; l = LIST1 let_binding SEP "and"; [ "in" | ";" ];
-        el = SELF ->
-          let e =
-            match el with
-            [ [e] -> e
-            | _ -> <:expr< do { $list:el$ } >> ]
-          in
-          [ <:expr< let $opt:o2b o$ $list:l$ in $e$ >> ]
-      | e = expr; ";"; el = SELF ->
-          let e = let _loc = MLast.loc_of_expr e in <:expr< ($e$ : unit) >> in
-          [e :: el]
-      | e = expr; ";" -> [e]
-      | e = expr -> [e] ] ]
-  ;
-END;
diff --git a/camlp4/unmaintained/etc/parserify.ml b/camlp4/unmaintained/etc/parserify.ml
deleted file mode 100644 (file)
index f0a3be8..0000000
+++ /dev/null
@@ -1,305 +0,0 @@
-(* camlp4r q_MLast.cmo *)
-
-
-(* FIXME FIXME *)
-value _loc = Loc.mk "FIXME parserify.ml";
-
-type spc =
-  [ SPCterm of (MLast.patt * option MLast.expr)
-  | SPCnterm of MLast.patt and MLast.expr
-  | SPCsterm of MLast.patt ]
-;
-
-exception NotImpl;
-
-value rec subst v =
-  MLast.Map.Expr.expr (fun [ <:expr@_loc< __strm >> -> <:expr< $lid:v$ >>
-                           | e -> e ])
-(* FIXME FIXME *)
-  (* match e with
-  [ <:expr< $lid:x$ >> -> if x = "__strm" then <:expr< $lid:v$ >> else e
-  | <:expr< $uid:_$ >> -> e
-  | <:expr< $int:_$ >> -> e
-  | <:expr< $chr:_$ >> -> e
-  | <:expr< $str:_$ >> -> e
-  | <:expr@_loc< $e1$ . $lab$ >> -> <:expr< $subst v e1$ . $lab$ >>
-  | <:expr@_loc< $x$ $y$ >> -> <:expr< $subst v x$ $subst v y$ >>
-  | <:expr@_loc< let $lid:s1$ = $e1$ in $e2$ >> ->
-      if s1 = v then <:expr< let $lid:s1$ = $subst v e1$ in $e2$ >>
-      else <:expr< let $lid:s1$ = $subst v e1$ in $subst v e2$ >>
-  | <:expr@_loc< let _ = $e1$ in $e2$ >> ->
-      <:expr< let _ = $subst v e1$ in $subst v e2$ >>
-  | <:expr@_loc< ($list:el$) >> -> <:expr< ($list:List.map (subst v) el$) >>
-  | _ -> raise NotImpl ]                                                        *)
-;
-
-value rec is_free v =
-  fun
-  [ <:expr< $lid:x$ >> -> x <> v
-  | <:expr< $uid:_$ >> -> True
-  | <:expr< $int:_$ >> -> True
-  | <:expr< $chr:_$ >> -> True
-  | <:expr< $str:_$ >> -> True
-  | <:expr< $e$ . $_$ >> -> is_free v e
-  | <:expr< $x$ $y$ >> -> is_free v x && is_free v y
-  | <:expr< let $lid:s1$ = $e1$ in $e2$ >> ->
-      is_free v e1 && (s1 = v || is_free v e2)
-  | <:expr< let _ = $e1$ in $e2$ >> -> is_free v e1 && is_free v e2
-  | <:expr< ($list:el$) >> -> List.for_all (is_free v) el
-  | _ -> raise NotImpl ]
-;
-
-value gensym =
-  let cnt = ref 0 in
-  fun () ->
-    do { incr cnt; "pr_rp_symb_" ^ string_of_int cnt.val }
-;
-
-value free_var_in_expr c e =
-  let rec loop_alpha v =
-    let x = String.make 1 v in
-    if is_free x e then Some x
-    else if v = 'z' then None
-    else loop_alpha (Char.chr (Char.code v + 1))
-  in
-  let rec loop_count cnt =
-    let x = String.make 1 c ^ string_of_int cnt in
-    if is_free x e then x else loop_count (succ cnt)
-  in
-  try
-    match loop_alpha c with
-    [ Some v -> v
-    | None -> loop_count 1 ]
-  with
-  [ NotImpl -> gensym () ]
-;
-
-value parserify _loc =
-  fun
-  [ <:expr< $e$ __strm >> -> e
-  | e -> <:expr< fun __strm -> $e$ >> ]
-;
-
-value is_raise_failure =
-  fun
-  [ <:expr< raise Stream.Failure >> -> True
-  | _ -> False ]
-;
-
-value is_raise_error =
-  fun
-  [ <:expr< raise (Stream.Error $_$) >> -> True
-  | _ -> False ]
-;
-
-value semantic _loc e =
-  try
-    if is_free "__strm" e then e
-    else
-      let v = free_var_in_expr 's' e in
-      <:expr< let $lid:v$ = __strm in $subst v e$ >>
-  with
-  [ NotImpl -> e ]
-;
-
-value rewrite_parser =
-  rewrite True where rec rewrite top ge =
-    match ge with
-    [ <:expr@_loc< let $p$ = try $e$ with [ Stream.Failure -> raise $exc$ ] in
-               $sp_kont$ >> ->
-        let f = parserify _loc e in
-        <:expr<
-          match try Some ($f$ __strm) with [ Stream.Failure -> None ] with
-          [ Some $p$ -> $rewrite False sp_kont$
-          | _ -> raise $exc$ ]
-        >>
-    | <:expr@_loc< let $p$ = Stream.count __strm in $f$ >> ->
-        try
-          if is_free "__strm" f then ge
-          else
-            let v = free_var_in_expr 's' f in
-            <:expr<
-              let $lid:v$ = __strm in
-              let $p$ = Stream.count __strm in $subst v f$
-            >>
-        with
-        [ NotImpl -> ge ]
-    | <:expr@_loc< let $p$ = __strm in $e$ >> ->
-        <:expr< let $p$ = __strm in $rewrite False e$ >>
-    | <:expr@_loc< let $p$ = $f$ __strm in $sp_kont$ >> when top ->
-        <:expr<
-          match try Some ($f$ __strm) with [ Stream.Failure -> None ] with
-          [ Some $p$ -> $rewrite False sp_kont$
-          | _ -> raise Stream.Failure ]
-        >>
-    | <:expr@_loc< let $p$ = $e$ in $sp_kont$ >> ->
-        if match e with
-           [ <:expr< match try Some $_$ with [ Stream.Failure -> None ] with
-                      [ $list:_$ ] >>
-           | <:expr< match Stream.peek __strm with [ $list:_$ ] >>
-           | <:expr< try $_$ with [ Stream.Failure -> $_$ ] >>
-           | <:expr< let $_$ = Stream.count __strm in $_$ >> -> True
-           | _ -> False ]
-        then
-          let f = rewrite True <:expr< fun __strm -> $e$ >> in
-          let exc =
-            if top then <:expr< Stream.Failure >>
-            else <:expr< Stream.Error "" >>
-          in
-          <:expr<
-            match try Some ($f$ __strm) with [ Stream.Failure -> None ] with
-            [ Some $p$ -> $rewrite False sp_kont$
-            | _ -> raise $exc$ ]
-          >>
-        else semantic _loc ge
-    | <:expr@_loc< match try Some $e$ with [ Stream.Failure -> None ] with
-                  [ Some $p$ -> $sp_kont$
-                  | _ -> $p_kont$ ] >> ->
-        let f = parserify _loc e in
-        if not top && is_raise_failure p_kont then semantic _loc ge
-        else
-          let (p, f, sp_kont, p_kont) =
-            if top || is_raise_error p_kont then
-              (p, f, rewrite False sp_kont, rewrite top p_kont)
-            else
-              let f =
-                <:expr<
-                  fun __strm ->
-                    match
-                      try Some ($f$ __strm) with [ Stream.Failure -> None ]
-                    with
-                    [ Some $p$ -> $rewrite False sp_kont$
-                    | _ -> $rewrite top p_kont$ ]
-                >>
-              in
-              (<:patt< a >>, f, <:expr< a >>,
-               <:expr< raise (Stream.Error "") >>)
-          in
-          <:expr<
-            match try Some ($f$ __strm) with [ Stream.Failure -> None ] with
-            [ Some $p$ -> $sp_kont$
-            | _ -> $p_kont$ ]
-          >>
-    | <:expr< match Stream.peek __strm with [ $list:pel$ ] >> ->
-        let rec iter pel =
-          match pel with
-          [ [(<:patt< Some $p$ >>, eo,
-              <:expr< do { Stream.junk __strm; $sp_kont$ } >>);
-             (<:patt< _ >>, None, p_kont) :: _] ->
-               <:expr<
-                 match Stream.peek __strm with
-                 [ Some $p$ $when:eo$ ->
-                     do { Stream.junk __strm; $rewrite False sp_kont$ }
-                 | _ -> $rewrite top p_kont$ ]
-               >>
-          | [(<:patt< Some $p$ >>, eo,
-              <:expr< do { Stream.junk __strm; $sp_kont$ } >>) :: pel] ->
-               let p_kont = iter pel in
-               <:expr<
-                 match Stream.peek __strm with
-                 [ Some $p$ $when:eo$ ->
-                     do { Stream.junk __strm; $rewrite False sp_kont$ }
-                 | _ -> $p_kont$ ]
-               >>
-          | _ ->
-              <:expr< match Stream.peek __strm with [ $list:pel$ ] >> ]
-        in
-        iter pel
-    | <:expr@_loc< try Some $e$ with [ Stream.Failure -> $p_kont$ ] >> ->
-        let f = parserify _loc e in
-        let e =
-          <:expr<
-            match try Some ($f$ __strm) with [ Stream.Failure -> None ] with
-            [ Some a -> Some a
-            | _ -> $p_kont$ ]
-          >>
-        in
-        rewrite top e
-    | <:expr@_loc< try $e$ with [ Stream.Failure -> $p_kont$ ] >> ->
-        let f = parserify _loc e in
-        let e =
-          <:expr<
-            match try Some ($f$ __strm) with [ Stream.Failure -> None ] with
-            [ Some a -> a
-            | _ -> $rewrite top p_kont$ ]
-          >>
-        in
-        rewrite top e
-    | <:expr< $f$ __strm >> ->
-        if top then
-          <:expr<
-            match try Some ($f$ __strm) with [ Stream.Failure -> None ] with
-            [ Some a -> a
-            | _  -> raise Stream.Failure ]
-          >>
-        else
-          let v = free_var_in_expr 's' f in
-          <:expr< let $lid:v$ = __strm in $subst v f$ $lid:v$ >>
-    | e -> let loc = MLast.loc_of_expr e in semantic loc e ]
-;
-
-value spc_of_parser =
-  let rec parser_cases e =
-    match e with
-    [ <:expr<
-        match try Some ($f$ __strm) with [ Stream.Failure -> None ] with
-        [ Some $p$ -> $sp_kont$
-        | _ -> $p_kont$ ]
-      >> ->
-        let spc = (SPCnterm p f, None) in
-        let (sp, epo, e) = kont sp_kont in
-        [([spc :: sp], epo, e) :: parser_cases p_kont]
-    | <:expr<
-        match Stream.peek __strm with
-        [ Some $p$ $when:wo$ -> do { Stream.junk __strm; $sp_kont$ }
-        | _ -> $p_kont$ ]
-      >> ->
-        let spc = (SPCterm (p, wo), None) in
-        let (sp, epo, e) = kont sp_kont in
-        [([spc :: sp], epo, e) :: parser_cases p_kont]
-    | <:expr< let $p$ = __strm in $sp_kont$ >> ->
-        let spc = (SPCsterm p, None) in
-        let (sp, epo, e) = kont sp_kont in
-        [([spc :: sp], epo, e)]
-    | <:expr< let $p$ = Stream.count __strm in $e$ >> -> [([], Some p, e)]
-    | <:expr< raise Stream.Failure >> -> []
-    | _ -> [([], None, e)] ]
-  and kont e =
-    match e with
-    [ <:expr<
-        match try Some ($f$ __strm) with [ Stream.Failure -> None ] with
-        [ Some $p$ -> $sp_kont$
-        | _ -> raise (Stream.Error $err$) ]
-      >> ->
-        let err =
-          match err with
-          [ <:expr< "" >> -> None
-          | _ -> Some err ]
-        in
-        let spc = (SPCnterm p f, err) in
-        let (sp, epo, e) = kont sp_kont in
-        ([spc :: sp], epo, e)
-    | <:expr<
-        match Stream.peek __strm with
-        [ Some $p$ $when:wo$ -> do { Stream.junk __strm; $sp_kont$ }
-        | _ -> raise (Stream.Error $err$) ]
-      >> ->
-        let err =
-          match err with
-          [ <:expr< "" >> -> None
-          | _ -> Some err ]
-        in
-        let spc = (SPCterm (p, wo), err) in
-        let (sp, epo, e) = kont sp_kont in
-        ([spc :: sp], epo, e)
-    | <:expr< let $p$ = __strm in $sp_kont$ >> ->
-        let spc = (SPCsterm p, None) in
-        let (sp, epo, e) = kont sp_kont in
-        ([spc :: sp], epo, e)
-    | <:expr< let $p$ = Stream.count __strm in $e$ >> -> ([], Some p, e)
-    | _ -> ([], None, e) ]
-  in
-  parser_cases
-;
-
-value parser_of_expr e = spc_of_parser (rewrite_parser e);
diff --git a/camlp4/unmaintained/etc/parserify.mli b/camlp4/unmaintained/etc/parserify.mli
deleted file mode 100644 (file)
index c1affdb..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-(* camlp4r *)
-
-
-type spc =
-  [ SPCterm of (MLast.patt * option MLast.expr)
-  | SPCnterm of MLast.patt and MLast.expr
-  | SPCsterm of MLast.patt ]
-;
-
-value parser_of_expr :
-  MLast.expr ->
-    list (list (spc * option MLast.expr) * option MLast.patt * MLast.expr);
diff --git a/camlp4/unmaintained/etc/pr_depend.ml b/camlp4/unmaintained/etc/pr_depend.ml
deleted file mode 100644 (file)
index 53224da..0000000
+++ /dev/null
@@ -1,321 +0,0 @@
-(* camlp4r *)
-
-
-open MLast;
-
-value not_impl name x =
-  Format.eprintf "pr_depend: not impl: %s; %a@." name ObjTools.print (Obj.repr x)
-;
-
-module StrSet =
-  Set.Make (struct type t = string; value compare = compare; end)
-;
-
-value fset = ref StrSet.empty;
-value addmodule s = fset.val := StrSet.add s fset.val;
-
-value list = List.iter;
-
-value option f =
-  fun
-  [ Some x -> f x
-  | None -> () ]
-;
-
-value longident =
-  fun
-  [ [s; _ :: _] -> addmodule s
-  | _ -> () ]
-;
-
-value rec ctyp =
-  fun
-  [ TyAcc _ t _ -> ctyp_module t
-  | TyAli _ t1 t2 -> do { ctyp t1; ctyp t2; }
-  | TyApp _ t1 t2 -> do { ctyp t1; ctyp t2; }
-  | TyAny _ -> ()
-  | TyArr _ t1 t2 -> do { ctyp t1; ctyp t2; }
-  | TyCls _ li -> longident li
-  | TyLab _ _ t -> ctyp t
-  | TyLid _ _ -> ()
-  | TyMan _ t1 t2 -> do { ctyp t1; ctyp t2; }
-  | TyOlb _ _ t -> ctyp t
-  | TyQuo _ _ -> ()
-  | TyRec _ ldl -> list label_decl ldl
-  | TySum _ cdl -> list constr_decl cdl
-  | TyPrv _ t -> ctyp t
-  | TyTup _ tl -> list ctyp tl
-  | TyVrn _ sbtll _ -> list variant sbtll
-  | x -> not_impl "ctyp" x ]
-and constr_decl (_, _, tl) = list ctyp tl
-and label_decl (_, _, _, t) = ctyp t
-and variant =
-  fun
-  [ RfTag _ _ tl -> list ctyp tl
-  | RfInh t -> ctyp t ]
-and ctyp_module =
-  fun
-  [ TyAcc _ t _ -> ctyp_module t
-  | TyApp _ t1 t2 -> do { ctyp t1; ctyp t2; }
-  | TyUid _ m -> addmodule m
-  | x -> not_impl "ctyp_module" x ]
-;
-
-value rec patt =
-  fun
-  [ PaAcc _ p _ -> patt_module p
-  | PaAli _ p1 p2 -> do { patt p1; patt p2; }
-  | PaAny _ -> ()
-  | PaApp _ p1 p2 -> do { patt p1; patt p2; }
-  | PaArr _ pl -> list patt pl
-  | PaChr _ _ -> ()
-  | PaInt _ _ -> ()
-  | PaLab _ _ po -> option patt po
-  | PaLid _ _ -> ()
-  | PaOlb _ _ peoo ->
-      option (fun (p, eo) -> do { patt p; option expr eo }) peoo
-  | PaOrp _ p1 p2 -> do { patt p1; patt p2; }
-  | PaRec _ lpl -> list label_patt lpl
-  | PaRng _ p1 p2 -> do { patt p1; patt p2; }
-  | PaStr _ _ -> ()
-  | PaTup _ pl -> list patt pl
-  | PaTyc _ p t -> do { patt p; ctyp t; }
-  | PaUid _ _ -> ()
-  | PaVrn _ _ -> ()
-  | x -> not_impl "patt" x ]
-and patt_module =
-  fun
-  [ PaUid _ m -> addmodule m
-  | PaAcc _ p _ -> patt_module p
-  | x -> not_impl "patt_module" x ]
-and label_patt (p1, p2) = do { patt p1; patt p2; }
-and expr =
-  fun
-  [ ExAcc _ e1 e2 -> do { expr_module e1; expr e2; }
-  | ExApp _ e1 e2 -> do { expr e1; expr e2; }
-  | ExAre _ e1 e2 -> do { expr e1; expr e2; }
-  | ExArr _ el -> list expr el
-  | ExAsf _ -> ()
-  | ExAsr _ e -> do { expr e; }
-  | ExAss _ e1 e2 -> do { expr e1; expr e2; }
-  | ExChr _ _ -> ()
-  | ExCoe _ e t1 t2 -> do { expr e; option ctyp t1; ctyp t2 }
-  | ExFor _ _ e1 e2 _ el -> do { expr e1; expr e2; list expr el; }
-  | ExFun _ pwel -> list match_case pwel
-  | ExIfe _ e1 e2 e3 -> do { expr e1; expr e2; expr e3; }
-  | ExInt _ _ -> ()
-  | ExInt32 _ _ -> ()
-  | ExInt64 _ _ -> ()
-  | ExNativeInt _ _ -> ()
-  | ExFlo _ _ -> ()
-  | ExLab _ _ eo -> option expr eo
-  | ExLaz _ e -> expr e
-  | ExLet _ _ pel e -> do { list let_binding pel; expr e; }
-  | ExLid _ _ -> ()
-  | ExLmd _ _ me e -> do { module_expr me; expr e; }
-  | ExMat _ e pwel -> do { expr e; list match_case pwel; }
-  | ExNew _ li -> longident li
-  | ExOlb _ _ eo -> option expr eo
-  | ExRec _ lel w -> do { list label_expr lel; option expr w; }
-  | ExSeq _ el -> list expr el
-  | ExSnd _ e _ -> expr e
-  | ExSte _ e1 e2 -> do { expr e1; expr e2; }
-  | ExStr _ _ -> ()
-  | ExTry _ e pwel -> do { expr e; list match_case pwel; }
-  | ExTup _ el -> list expr el
-  | ExTyc _ e t -> do { expr e; ctyp t; }
-  | ExUid _ _ -> ()
-  | ExVrn _ _ -> ()
-  | ExWhi _ e el -> do { expr e; list expr el; }
-  | x -> not_impl "expr" x ]
-and expr_module =
-  fun
-  [ ExUid _ m -> addmodule m
-  | e -> expr e ]
-and let_binding (p, e) = do { patt p; expr e }
-and label_expr (p, e) = do { patt p; expr e }
-and match_case (p, w, e) = do { patt p; option expr w; expr e; }
-and module_type =
-  fun
-  [ MtAcc _ (MtUid _ m) _ -> addmodule m
-  | MtFun _ _ mt1 mt2 -> do { module_type mt1; module_type mt2; }
-  | MtSig _ sil -> list sig_item sil
-  | MtUid _ _ -> ()
-  | MtWit _ mt wc -> do { module_type mt; list with_constr wc; }
-  | x -> not_impl "module_type" x ]
-and with_constr =
-  fun
-  [ WcTyp _ _ _ t -> ctyp t
-  | x -> not_impl "with_constr" x ]
-and sig_item =
-  fun
-  [ SgDcl _ sil -> list sig_item sil
-  | SgExc _ _ tl -> list ctyp tl
-  | SgExt _ _ t _ -> ctyp t
-  | SgMod _ _ mt -> module_type mt
-  | SgRecMod _ mts -> list (fun (_, mt) -> module_type mt) mts
-  | SgMty _ _ mt -> module_type mt
-  | SgOpn _ [s :: _] -> addmodule s
-  | SgTyp _ tdl -> list type_decl tdl
-  | SgVal _ _ t -> ctyp t
-  | x -> not_impl "sig_item" x ]
-and module_expr =
-  fun
-  [ MeAcc _ (MeUid _ m) _ -> addmodule m
-  | MeApp _ me1 me2 -> do { module_expr me1; module_expr me2; }
-  | MeFun _ _ mt me -> do { module_type mt; module_expr me; }
-  | MeStr _ sil -> list str_item sil
-  | MeTyc _ me mt -> do { module_expr me; module_type mt; }
-  | MeUid _ _ -> ()
-  | x -> not_impl "module_expr" x ]
-and str_item =
-  fun
-  [ StCls _ cil -> list (fun ci -> class_expr ci.ciExp) cil
-  | StDcl _ sil -> list str_item sil
-  | StDir _ _ _ -> ()
-  | StExc _ _ tl _ -> list ctyp tl
-  | StExp _ e -> expr e
-  | StExt _ _ t _ -> ctyp t
-  | StMod _ _ me -> module_expr me
-  | StRecMod _ nmtmes -> list (fun (_, mt, me) -> do { module_expr me; module_type mt; }) nmtmes
-  | StMty _ _ mt -> module_type mt
-  | StOpn _ [s :: _] -> addmodule s
-  | StTyp _ tdl -> list type_decl tdl
-  | StVal _ _ pel -> list let_binding pel
-  | x -> not_impl "str_item" x ]
-and type_decl (_, _, t, _) = ctyp t
-and class_expr =
-  fun
-  [ CeApp _ ce e -> do { class_expr ce; expr e; }
-  | CeCon _ li tl -> do { longident li; list ctyp tl; }
-  | CeFun _ p ce -> do { patt p; class_expr ce; }
-  | CeLet _ _ pel ce -> do { list let_binding pel; class_expr ce; }
-  | CeStr _ po csil -> do { option patt po; list class_str_item csil; }
-  | x -> not_impl "class_expr" x ]
-and class_str_item =
-  fun
-  [ CrInh _ ce _ -> class_expr ce
-  | CrIni _ e -> expr e
-  | CrMth _ _ _ e None -> expr e
-  | CrMth _ _ _ e (Some t) -> do { expr e; ctyp t }
-  | CrVal _ _ _ e -> expr e
-  | CrVir _ _ _ t -> ctyp t
-  | x -> not_impl "class_str_item" x ]
-;
-
-(* Print dependencies *)
-
-value load_path = ref [""];
-
-value find_in_path path name =
-  if not (Filename.is_implicit name) then
-    if Sys.file_exists name then name else raise Not_found
-  else
-    let rec try_dir =
-      fun
-      [ [] -> raise Not_found
-      | [dir :: rem] ->
-          let fullname = Filename.concat dir name in
-          if Sys.file_exists fullname then fullname else try_dir rem ]
-    in
-    try_dir path
-;
-
-value find_depend modname (byt_deps, opt_deps) =
-  let name = String.uncapitalize modname in
-  try
-    let filename = find_in_path load_path.val (name ^ ".mli") in
-    let basename = Filename.chop_suffix filename ".mli" in
-    let byt_dep = basename ^ ".cmi" in
-    let opt_dep =
-      if Sys.file_exists (basename ^ ".ml") then basename ^ ".cmx"
-      else basename ^ ".cmi"
-    in
-    ([byt_dep :: byt_deps], [opt_dep :: opt_deps])
-  with
-  [ Not_found ->
-      try
-        let filename = find_in_path load_path.val (name ^ ".ml") in
-        let basename = Filename.chop_suffix filename ".ml" in
-        ([basename ^ ".cmo" :: byt_deps], [basename ^ ".cmx" :: opt_deps])
-      with
-      [ Not_found -> (byt_deps, opt_deps) ] ]
-;
-
-value (depends_on, escaped_eol) =
-  match Sys.os_type with
-  [ "Unix" | "Win32" | "Cygwin" -> (": ", "\\\n    ")
-  | "MacOS" -> ("\196 ", "\182\n    ")
-  | _ -> assert False ]
-;
-
-value print_depend target_file deps =
-  match deps with
-  [ [] -> ()
-  | _ ->
-      do {
-        print_string target_file;
-        print_string depends_on;
-        let rec print_items pos =
-          fun
-          [ [] -> print_string "\n"
-          | [dep :: rem] ->
-              if pos + String.length dep <= 77 then do {
-                print_string dep;
-                print_string " ";
-                print_items (pos + String.length dep + 1) rem
-              }
-              else do {
-                print_string escaped_eol;
-                print_string dep;
-                print_string " ";
-                print_items (String.length dep + 5) rem
-              } ]
-        in
-        print_items (String.length target_file + 2) deps
-      } ]
-;
-
-(* Main *)
-
-value depend_sig ast =
-  do {
-    fset.val := StrSet.empty;
-    List.iter (fun (si, _) -> sig_item si) ast;
-    let basename = Filename.chop_suffix Pcaml.input_file.val ".mli" in
-    let (byt_deps, _) = StrSet.fold find_depend fset.val ([], []) in
-    print_depend (basename ^ ".cmi") byt_deps;
-  }
-;
-
-value depend_str ast =
-  do {
-    fset.val := StrSet.empty;
-    List.iter (fun (si, _) -> str_item si) ast;
-    let basename =
-      if Filename.check_suffix Pcaml.input_file.val ".ml" then
-        Filename.chop_suffix Pcaml.input_file.val ".ml"
-      else
-        try
-          let len = String.rindex Pcaml.input_file.val '.' in
-          String.sub Pcaml.input_file.val 0 len
-        with
-        [ Failure _ | Not_found -> Pcaml.input_file.val ]
-    in
-    let init_deps =
-      if Sys.file_exists (basename ^ ".mli") then
-        let cmi_name = basename ^ ".cmi" in ([cmi_name], [cmi_name])
-      else ([], [])
-    in
-    let (byt_deps, opt_deps) = StrSet.fold find_depend fset.val init_deps in
-    print_depend (basename ^ ".cmo") byt_deps;
-    print_depend (basename ^ ".cmx") opt_deps;
-  }
-;
-
-Pcaml.print_interf.val := depend_sig;
-Pcaml.print_implem.val := depend_str;
-
-Pcaml.add_option "-I"
-  (Arg.String (fun dir -> load_path.val := load_path.val @ [dir]))
-  "<dir> Add <dir> to the list of include directories.";
diff --git a/camlp4/unmaintained/etc/pr_extend.ml b/camlp4/unmaintained/etc/pr_extend.ml
deleted file mode 100644 (file)
index 5f8b693..0000000
+++ /dev/null
@@ -1,518 +0,0 @@
-(* camlp4r q_MLast.cmo ./pa_extfun.cmo *)
-(***********************************************************************)
-(*                                                                     *)
-(*                             Camlp4                                  *)
-(*                                                                     *)
-(*        Daniel de Rauglaudre, projet Cristal, INRIA Rocquencourt     *)
-(*                                                                     *)
-(*  Copyright 2002 Institut National de Recherche en Informatique et   *)
-(*  Automatique.  Distributed only by permission.                      *)
-(*                                                                     *)
-(***********************************************************************)
-
-
-
-open Pcaml;
-open Spretty;
-
-value no_slist = ref False;
-
-value expr e dg k = pr_expr.pr_fun "top" e dg k;
-value patt e dg k = pr_patt.pr_fun "top" e dg k;
-
-(* Utilities *)
-
-value rec list elem el k =
-  match el with
-  [ [] -> k
-  | [x] -> [: `elem x k :]
-  | [x :: l] -> [: `elem x [: :]; list elem l k :] ]
-;
-
-value rec listws elem sep el k =
-  match el with
-  [ [] -> k
-  | [x] -> [: `elem x k :]
-  | [x :: l] -> [: `elem x [: `sep :]; listws elem sep l k :] ]
-;
-
-value rec listwbws elem b sep el dg k =
-  match el with
-  [ [] -> [: b; k :]
-  | [x] -> [: `elem b x dg k :]
-  | [x :: l] ->
-      let sdg =
-        match sep with
-        [ S _ x -> x
-        | _ -> "" ]
-      in
-      [: `elem b x sdg [: :]; listwbws elem [: `sep :] sep l dg k :] ]
-;
-
-(* Extracting *)
-
-value rec get_globals =
-  fun
-  [ [(<:patt< _ >>, <:expr< ($e$ : $uid:gmod1$.Entry.e '$_$) >>) :: pel] ->
-      let (gmod, gl) = get_globals pel in
-      if gmod = "" || gmod = gmod1 then (gmod1, [e :: gl])
-      else raise Not_found
-  | [] -> ("", [])
-  | _ -> raise Not_found ]
-;
-
-value rec get_locals =
-  fun
-  [ [(<:patt< $_$ >>,
-      <:expr< (grammar_entry_create $_$ : $_$) >>) :: pel] ->
-        get_locals pel
-  | [] -> ()
-  | _ -> raise Not_found ]
-;
-
-value unposition =
-  fun
-  [ <:expr< None >> -> None
-  | <:expr< Some Gramext.First >> -> Some Gramext.First
-  | <:expr< Some Gramext.Last >> -> Some Gramext.Last
-  | <:expr< Some (Gramext.Before $str:s$) >> -> Some (Gramext.Before s)
-  | <:expr< Some (Gramext.After $str:s$) >> -> Some (Gramext.After s)
-  | <:expr< Some (Gramext.Level $str:s$) >> -> Some (Gramext.Level s)
-  | _ -> raise Not_found ]
-;
-
-value unlabel =
-  fun
-  [ <:expr< None >> -> None
-  | <:expr< Some $str:s$ >> -> Some s
-  | _ -> raise Not_found ]
-;
-
-value unassoc =
-  fun
-  [ <:expr< None >> -> None
-  | <:expr< Some Gramext.NonA >> -> Some Gramext.NonA
-  | <:expr< Some Gramext.LeftA >> -> Some Gramext.LeftA
-  | <:expr< Some Gramext.RightA >> -> Some Gramext.RightA
-  | _ -> raise Not_found ]
-;
-
-value rec unaction =
-  fun
-  [ <:expr< fun ($lid:locp$ : Loc.t) -> ($a$ : $_$) >>
-    when locp = Stdpp.loc_name.val ->
-      let ao =
-        match a with
-        [ <:expr< () >> -> None
-        | _ -> Some a ]
-      in
-      ([], ao)
-  | <:expr< fun ($p$ : $_$) -> $e$ >> ->
-      let (pl, a) = unaction e in ([p :: pl], a)
-  | <:expr@_loc< fun _ -> $e$ >> ->
-      let (pl, a) = unaction e in ([ <:patt< _ >> :: pl ], a)
-  | _ -> raise Not_found ]
-;
-
-value untoken =
-  fun
-  [ <:expr< ($str:x$, $str:y$) >> -> (x, y)
-  | _ -> raise Not_found ]
-;
-
-type symbol =
-  [ Snterm of MLast.expr
-  | Snterml of MLast.expr and string
-  | Slist0 of symbol
-  | Slist0sep of symbol and symbol
-  | Slist1 of symbol
-  | Slist1sep of symbol and symbol
-  | Sopt of symbol
-  | Sself
-  | Snext
-  | Stoken of Token.pattern
-  | Srules of list (list (option MLast.patt * symbol) * option MLast.expr) ]
-;
-
-value rec unsymbol =
-  fun
-  [ <:expr< Gramext.Snterm ($uid:_$.Entry.obj ($e$ : $_$)) >> -> Snterm e
-  | <:expr< Gramext.Snterml ($uid:_$.Entry.obj ($e$ : $_$)) $str:s$ >> ->
-      Snterml e s
-  | <:expr< Gramext.Snterml ($uid:_$.Entry.obj ($e$ : $_$), $str:s$) >> ->
-      Snterml e s
-  | <:expr< Gramext.Slist0 $e$ >> -> Slist0 (unsymbol e)
-  | <:expr< Gramext.Slist0sep $e1$ $e2$ >> ->
-      Slist0sep (unsymbol e1) (unsymbol e2)
-  | <:expr< Gramext.Slist0sep ($e1$, $e2$) >> ->
-      Slist0sep (unsymbol e1) (unsymbol e2)
-  | <:expr< Gramext.Slist1 $e$ >> -> Slist1 (unsymbol e)
-  | <:expr< Gramext.Slist1sep $e1$ $e2$ >> ->
-      Slist1sep (unsymbol e1) (unsymbol e2)
-  | <:expr< Gramext.Slist1sep ($e1$, $e2$) >> ->
-      Slist1sep (unsymbol e1) (unsymbol e2)
-  | <:expr< Gramext.Sopt $e$ >> -> Sopt (unsymbol e)
-  | <:expr< Gramext.Sself >> -> Sself
-  | <:expr< Gramext.Snext >> -> Snext
-  | <:expr< Gramext.Stoken $e$ >> -> Stoken (untoken e)
-  | <:expr< Gramext.srules $e$ >> -> Srules (unrule_list [] e)
-  | _ -> raise Not_found ]
-and unpsymbol_list pl e =
-  match (pl, e) with
-  [ ([], <:expr< [] >>) -> []
-  | ([p :: pl], <:expr< [$e$ :: $el$] >>) ->
-      let op =
-        match p with
-        [ <:patt< _ >> -> None
-        | _ -> Some p ]
-      in
-      [(op, unsymbol e) :: unpsymbol_list pl el]
-  | _ -> raise Not_found ]
-and unrule =
-  fun
-  [ <:expr@_loc< ($e1$, Gramext.action $e2$) >> ->
-      let (pl, a) =
-        match unaction e2 with
-        [ ([], None) -> ([], Some <:expr< () >>)
-        | x -> x ]
-      in
-      let sl = unpsymbol_list (List.rev pl) e1 in
-      (sl, a)
-  | _ -> raise Not_found ]
-and unrule_list rl =
-  fun
-  [ <:expr< [$e$ :: $el$] >> -> unrule_list [unrule e :: rl] el
-  | <:expr< [] >> -> rl
-  | _ -> raise Not_found ]
-;
-
-value unlevel =
-  fun
-  [ <:expr< ($e1$, $e2$, $e3$) >> ->
-      (unlabel e1, unassoc e2, unrule_list [] e3)
-  | _ -> raise Not_found ]
-;
-
-value rec unlevel_list =
-  fun
-  [ <:expr< [$e$ :: $el$] >> -> [unlevel e :: unlevel_list el]
-  | <:expr< [] >> -> []
-  | _ -> raise Not_found ]
-;
-
-value unentry =
-  fun
-  [ <:expr< (Grammar.Entry.obj ($e$ : Grammar.Entry.e '$_$), $pos$, $ll$) >> ->
-      (e, unposition pos, unlevel_list ll)
-  | _ -> raise Not_found ]
-;
-
-value rec unentry_list =
-  fun
-  [ <:expr< [$e$ :: $el$] >> -> [unentry e :: unentry_list el]
-  | <:expr< [] >> -> []
-  | _ -> raise Not_found ]
-;
-
-value unextend_body e =
-  let ((_, globals), e) =
-    match e with
-    [ <:expr< let $list:pel$ in $e1$ >> ->
-        try (get_globals pel, e1) with
-        [ Not_found -> (("", []), e) ]
-    | _ -> (("", []), e) ]
-  in
-  let e =
-    match e with
-    [ <:expr<
-        let grammar_entry_create s =
-          Grammar.Entry.create (Grammar.of_entry $_$) s
-        in
-        $e$ >> ->
-       let e =
-         match e with
-         [ <:expr< let $list:pel$ in $e1$ >> ->
-             try let _ = get_locals pel in e1 with
-             [ Not_found -> e ]
-         | _ -> e ]
-       in
-       e
-    | _ -> e ]
-  in
-  let el = unentry_list e in
-  (globals, el)
-;
-
-value ungextend_body e =
-  let e =
-    match e with
-    [ <:expr<
-        let grammar_entry_create = Gram.Entry.create in
-        let $list:ll$ in $e$
-      >> ->
-        let _ = get_locals ll in e
-    | _ -> e ]
-  in
-  match e with
-  [ <:expr< do { $list:el$ } >> ->
-      List.map
-        (fun
-         [ <:expr< $uid:_$.extend ($e$ : $uid:_$.Entry.e '$_$) $pos$ $ll$ >> ->
-             (e, unposition pos, unlevel_list ll)
-         | _ -> raise Not_found ])
-        el
-  | _ -> raise Not_found ]
-;
-
-(* Printing *)
-
-value ident s k = HVbox [: `S LR s; k :];
-value string s k = HVbox [: `S LR ("\"" ^ s ^ "\""); k :];
-
-value position =
-  fun
-  [ None -> [: :]
-  | Some Gramext.First -> [: `S LR "FIRST" :]
-  | Some Gramext.Last -> [: `S LR "LAST" :]
-  | Some (Gramext.Before s) -> [: `S LR "BEFORE"; `string s [: :] :]
-  | Some (Gramext.After s) -> [: `S LR "AFTER"; `string s [: :] :]
-  | Some (Gramext.Level s) -> [: `S LR "LEVEL"; `string s [: :] :] ]
-;
-
-value action expr a dg k =
-  expr a dg k
-;
-
-value token (con, prm) k =
-  if con = "" then string prm k
-  else if prm = "" then HVbox [: `S LR con; k :]
-  else HVbox [: `S LR con; `string prm k :]
-;
-
-value simplify_rules rl =
-  try
-    List.map
-      (fun
-       [ ([(Some <:patt< $lid:x$ >>, s)], Some <:expr< $lid:y$ >>) ->
-           if x = y then ([(None, s)], None) else raise Exit
-       | ([], _) as r -> r
-       | _ -> raise Exit ])
-      rl
-  with
-  [ Exit -> rl ]
-;
-
-value rec symbol s k =
-  match s with
-  [ Snterm e -> expr e "" k
-  | Snterml e s -> HVbox [: `expr e "" [: :]; `S LR "LEVEL"; `string s k :]
-  | Slist0 s -> HVbox [: `S LR "LIST0"; `symbol s k :]
-  | Slist0sep s sep ->
-      HVbox
-        [: `S LR "LIST0"; `symbol s [: :]; `S LR "SEP";
-           `symbol sep k :]
-  | Slist1 s -> HVbox [: `S LR "LIST1"; `symbol s k :]
-  | Slist1sep s sep ->
-      HVbox
-        [: `S LR "LIST1"; `symbol  s [: :]; `S LR "SEP";
-           `symbol  sep k :]
-  | Sopt s -> HVbox [: `S LR "OPT"; `symbol  s k :]
-  | Sself -> HVbox [: `S LR "SELF"; k :]
-  | Snext -> HVbox [: `S LR "NEXT"; k :]
-  | Stoken tok -> token tok k
-  | Srules
-      [([(Some <:patt< a >>, Snterm <:expr< a_list >>)], Some <:expr< a >>);
-       ([(Some <:patt< a >>,
-          ((Slist0 _ | Slist1 _ | Slist0sep _ _ | Slist1sep _ _) as s))],
-          Some <:expr< Qast.List a >>)]
-    when not no_slist.val
-    ->
-      match s with
-      [ Slist0 s -> HVbox [: `S LR "SLIST0"; `simple_symbol s k :]
-      | Slist1 s -> HVbox [: `S LR "SLIST1"; `simple_symbol s k :]
-      | Slist0sep s sep ->
-          HVbox
-            [: `S LR "SLIST0"; `simple_symbol s [: :]; `S LR "SEP";
-               `symbol sep k :]
-      | Slist1sep s sep ->
-          HVbox
-            [: `S LR "SLIST1"; `simple_symbol s [: :]; `S LR "SEP";
-               `simple_symbol sep k :]
-      | _ -> assert False ]
-  | Srules
-      [([(Some <:patt< a >>, Snterm <:expr< a_opt >>)], Some <:expr< a >>);
-       ([(Some <:patt< a >>, Sopt s)], Some <:expr< Qast.Option a >>)]
-    when not no_slist.val
-    ->
-      let s =
-        match s with
-        [ Srules
-            [([(Some <:patt< x >>, Stoken ("", str))],
-              Some <:expr< Qast.Str x >>)] ->
-            Stoken ("", str)
-        | s -> s ]
-      in
-      HVbox [: `S LR "SOPT"; `simple_symbol s k :]
-  | Srules rl ->
-      let rl = simplify_rules rl in
-      HVbox [: `HVbox [: :]; rule_list  rl k :] ]
-and simple_symbol s k =
-  match s with
-  [ Snterml _ _ -> HVbox [: `S LO "("; `symbol s [: `S RO ")"; k :] :]
-  | s -> symbol s k ]
-and psymbol (p, s) k =
-  match p with
-  [ None -> symbol s k
-  | Some p -> HVbox [: `patt p "" [: `S LR "=" :]; `symbol  s k :] ]
-and psymbol_list sl k =
-  listws psymbol (S RO ";") sl k
-and rule  b (sl, a) dg k =
-  match a with
-  [ None -> HVbox [: b; `HOVbox [: psymbol_list sl k :] :]
-  | Some a ->
-      HVbox
-        [: b;
-           `HOVbox
-              [: `HOVbox
-                   [: `HVbox [: :];
-                      psymbol_list  sl [: `S LR "->" :] :];
-                 `action expr a dg k :] :] ]
-and rule_list ll k =
-  listwbws rule [: `S LR "[" :] (S LR "|") ll ""
-    [: `S LR "]"; k :]
-;
-
-value label =
-  fun
-  [ Some s -> [: `S LR ("\"" ^ s ^ "\"") :]
-  | None -> [: :] ]
-;
-
-value intloc loc = ((Loc.start_off loc), (Loc.stop_off loc));
-
-value intloc2 (bp, ep) = (bp.Lexing.pos_cnum, ep.Lexing.pos_cnum);
-
-
-value assoc =
-  fun
-  [ Some Gramext.NonA -> [: `S LR "NONA" :]
-  | Some Gramext.LeftA -> [: `S LR "LEFTA" :]
-  | Some Gramext.RightA -> [: `S LR "RIGHTA" :]
-  | None -> [: :] ]
-;
-
-value level b (lab, ass, rl) _ k =
-  let s =
-    if rl = [] then [: `S LR "[ ]"; k :]
-    else [: `Vbox [: `HVbox [: :]; rule_list rl k :] :]
-  in
-  match (lab, ass) with
-  [ (None, None) -> HVbox [: b; s :]
-  | _ ->
-      Vbox
-        [: `HVbox [: b; label lab; assoc ass :];
-           `HVbox [: `HVbox [: :]; s :] :] ]
-;
-
-value level_list ll k =
-  Vbox
-    [: `HVbox [: :];
-       listwbws level [: `S LR "[" :] (S LR "|") ll ""
-         [: `S LR "]"; k :] :]
-;
-
-value entry (e, pos, ll) k =
-  BEbox
-    [: `LocInfo (intloc(MLast.loc_of_expr e))
-          (HVbox [: `expr e "" [: `S RO ":" :]; position pos :]);
-       `level_list  ll [: :];
-       `HVbox [: `S RO ";"; k :] :]
-;
-
-value entry_list el k =
-  Vbox [: `HVbox [: :]; list entry el k :]
-;
-
-value extend_body (globals, e) k =
-  let s = entry_list e k in
-  match globals with
-  [ [] -> s
-  | sl ->
-      HVbox
-        [: `HVbox [: :];
-           `HOVbox
-             [: `S LR "GLOBAL"; `S RO ":";
-                list (fun e k -> HVbox [: `expr e "" k :]) sl
-                  [: `S RO ";" :] :];
-           `s :] ]
-;
-
-value extend e _ k =
-  match e with
-  [ <:expr< Grammar.extend $e$ >> ->
-      try
-        let ex = unextend_body e in
-        BEbox
-          [: `S LR "EXTEND"; `extend_body ex [: :];
-             `HVbox [: `S LR "END"; k :] :]
-      with
-      [ Not_found ->
-          HVbox
-            [: `S LR "Grammar.extend";
-               `HOVbox
-                  [: `S LO "(";
-                     `expr e "" [: `HVbox [: `S RO ")"; k :] :] :] :] ]
-  | _ -> expr e "" k ]
-;
-
-value get_gextend =
-  fun
-  [ <:expr< let $list:gl$ in $e$ >> ->
-      try
-        let (gmod, gl) = get_globals gl in
-        let el = ungextend_body e in
-        Some (gmod, gl, el)
-      with
-      [ Not_found -> None ]
-  | _ -> None ]
-;
-
-value gextend e _ k =
-  match get_gextend e with
-  [ Some (gmod, gl, el) ->
-      BEbox
-        [: `HVbox [: `S LR "GEXTEND"; `S LR gmod :];
-           `extend_body (gl, el) [: :];
-           `HVbox [: `S LR "END"; k :] :]
-  | None -> expr e "" k ]
-;
-
-value is_gextend e = get_gextend e <> None;
-
-(* Printer extensions *)
-
-let lev =
-  try find_pr_level "expr1" pr_expr.pr_levels with
-  [ Failure _ -> find_pr_level "top" pr_expr.pr_levels ]
-in
-lev.pr_rules :=
-  extfun lev.pr_rules with
-  [ <:expr< let $list:_$ in $_$ >> as e when is_gextend e ->
-      fun _ next _ k -> [: `next e "" k :] ];
-
-let lev = find_pr_level "apply" pr_expr.pr_levels in
-lev.pr_rules :=
-  extfun lev.pr_rules with
-  [ <:expr< Grammar.extend $_$ >> as e ->
-      fun _ next _ k -> [: `next e "" k :] ];
-
-let lev = find_pr_level "simple" pr_expr.pr_levels in
-lev.pr_rules :=
-  extfun lev.pr_rules with
-  [ <:expr< Grammar.extend $_$ >> as e ->
-      fun _ _ _ k -> [: `extend e "" k :]
-  | <:expr< let $list:_$ in $_$ >> as e when is_gextend e ->
-      fun _ _ _ k -> [: `gextend e "" k :] ];
-
-Pcaml.add_option "-no_slist" (Arg.Set no_slist)
-  "Don't reconstruct SLIST and SOPT";
diff --git a/camlp4/unmaintained/etc/pr_extfun.ml b/camlp4/unmaintained/etc/pr_extfun.ml
deleted file mode 100644 (file)
index 4479bb4..0000000
+++ /dev/null
@@ -1,92 +0,0 @@
-(* camlp4r q_MLast.cmo ./pa_extfun.cmo *)
-
-
-open Pcaml;
-open Spretty;
-
-value _loc = Loc.mk "FIXME pr_extfun.ml";
-
-value expr e dg k = pr_expr.pr_fun "top" e dg k;
-value patt e dg k = pr_patt.pr_fun "top" e dg k;
-
-value rec un_extfun rpel =
-  fun
-  [ <:expr< [ ($_$, $_$, fun [ $list:pel$ ]) :: $el$ ] >> ->
-      let (p, wo, e) =
-        match pel with
-        [ [(p, wo, <:expr< Some $e$ >>);
-           (<:patt< _ >>, None, <:expr< None >>)] ->
-            (p, wo, e)
-        | [(p, wo, <:expr< Some $e$ >>)] -> (p, wo, e)
-        | _ -> raise Not_found ]
-      in
-      let rpel =
-        match rpel with
-        [ [(p1, wo1, e1) :: pel] ->
-            if wo1 = wo && e1 = e then
-              let p =
-                match (p1, p) with
-                [ (<:patt< ($x1$ as $x2$) >>, <:patt< ($y1$ as $y2$) >>) ->
-                    if x2 = y2 then <:patt< ($x1$ | $y1$ as $x2$) >>
-                    else <:patt< $p1$ | $p$ >>
-                | _ -> <:patt< $p1$ | $p$ >> ]
-              in
-              [(p, wo, e) :: pel]
-            else [(p, wo, e) :: rpel]
-        | [] -> [(p, wo, e)] ]
-      in
-      un_extfun rpel el
-  | <:expr< [] >> -> List.rev rpel
-  | _ -> raise Not_found ]
-;
-
-value rec listwbws elem b sep el k =
-  match el with
-  [ [] -> [: b; k :]
-  | [x] -> [: `elem b x k :]
-  | [x :: l] -> [: `elem b x [: :]; listwbws elem [: `sep :] sep l k :] ]
-;
-
-value rec match_assoc_list pwel k =
-  match pwel with
-  [ [pwe] -> match_assoc [: `S LR "[" :] pwe [: `S LR "]"; k :]
-  | pel ->
-      Vbox
-        [: `HVbox [: :];
-           listwbws match_assoc [: `S LR "[" :] (S LR "|") pel
-             [: `S LR "]"; k :] :] ]
-and match_assoc b (p, w, e) k =
-  let s =
-    let (p, k) =
-      match p with
-      [ <:patt< ($p$ as $p2$) >> -> (p, [: `S LR "as"; `patt p2 "" [: :] :])
-      | _ -> (p, [: :]) ]
-    in
-    match w with
-    [ Some e1 ->
-        [: `HVbox
-              [: `HVbox [: :]; `patt p "" k;
-                 `HVbox [: `S LR "when"; `expr e1 "" [: `S LR "->" :] :] :] :]
-    | _ -> [: `patt p "" [: k; `S LR "->" :] :] ]
-  in
-  HVbox [: b; `HVbox [: `HVbox s; `expr e "" k :] :]
-;
-
-let lev = find_pr_level "top" pr_expr.pr_levels in
-lev.pr_rules :=
-  extfun lev.pr_rules with
-  [ <:expr< Extfun.extend $e$ $list$ >> as ge ->
-      fun _ next dg k ->
-        try
-          let pel = un_extfun [] list in
-          [: `HVbox [: :];
-             `BEbox [: `S LR "extfun"; `expr e "" [: :]; `S LR "with" :];
-             `match_assoc_list pel k :]
-        with
-        [ Not_found -> [: `next ge dg k :] ] ];
-
-let lev = find_pr_level "apply" pr_expr.pr_levels in
-lev.pr_rules :=
-  extfun lev.pr_rules with
-  [ <:expr< Extfun.extend $_$ $_$ >> as ge ->
-      fun _ next dg k -> [: `next ge dg k :] ];
diff --git a/camlp4/unmaintained/etc/pr_null.ml b/camlp4/unmaintained/etc/pr_null.ml
deleted file mode 100644 (file)
index 22f3cb7..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-(* camlp4r *)
-(***********************************************************************)
-(*                                                                     *)
-(*                             Camlp4                                  *)
-(*                                                                     *)
-(*        Daniel de Rauglaudre, projet Cristal, INRIA Rocquencourt     *)
-(*                                                                     *)
-(*  Copyright 1998 Institut National de Recherche en Informatique et   *)
-(*  Automatique.  Distributed only by permission.                      *)
-(*                                                                     *)
-(***********************************************************************)
-
-
-
-Pcaml.print_interf.val := fun _ -> ();
-Pcaml.print_implem.val := fun _ -> ();
diff --git a/camlp4/unmaintained/etc/pr_op.ml b/camlp4/unmaintained/etc/pr_op.ml
deleted file mode 100644 (file)
index 9b2aebc..0000000
+++ /dev/null
@@ -1,210 +0,0 @@
-(* camlp4r q_MLast.cmo ./pa_extfun.cmo *)
-(***********************************************************************)
-(*                                                                     *)
-(*                             Camlp4                                  *)
-(*                                                                     *)
-(*        Daniel de Rauglaudre, projet Cristal, INRIA Rocquencourt     *)
-(*                                                                     *)
-(*  Copyright 1998 Institut National de Recherche en Informatique et   *)
-(*  Automatique.  Distributed only by permission.                      *)
-(*                                                                     *)
-(***********************************************************************)
-
-
-
-open Pcaml;
-open Spretty;
-
-value expr e dg k = pr_expr.pr_fun "top" e dg k;
-value patt e dg k = pr_patt.pr_fun "top" e dg k;
-
-value spatt p dg k =
-  match p with
-  [ <:patt< $lid:s$ >> ->
-      if String.length s >= 2 && s.[1] == ''' then
-        HVbox [: `S LR (" " ^ s); k :]
-      else patt p dg k
-  | _ -> patt p dg k ]
-;
-
-(* Streams *)
-
-value stream e _ k =
-  let rec get =
-    fun
-    [ <:expr< Stream.iapp $x$ $y$ >> -> [(False, x) :: get y]
-    | <:expr< Stream.icons $x$ $y$ >> -> [(True, x) :: get y]
-    | <:expr< Stream.ising $x$ >> -> [(True, x)]
-    | <:expr< Stream.lapp (fun _ -> $x$) $y$ >> -> [(False, x) :: get y]
-    | <:expr< Stream.lcons (fun _ -> $x$) $y$ >> -> [(True, x) :: get y]
-    | <:expr< Stream.lsing (fun _ -> $x$) >> -> [(True, x)]
-    | <:expr< Stream.sempty >> -> []
-    | <:expr< Stream.slazy (fun _ -> $x$) >> -> [(False, x)]
-    | <:expr< Stream.slazy $x$ >> -> [(False, <:expr< $x$ () >>)]
-    | e -> [(False, e)] ]
-  in
-  let elem e dg k =
-    match e with
-    [ (True, e) -> [: `HOVbox [: `S LO "'"; `expr e dg k :] :]
-    | (False, e) -> [: `expr e dg k :] ]
-  in
-  let rec glop e k =
-    match e with
-    [ [] -> k
-    | [e] -> [: elem e "" k :]
-    | [e :: el] -> [: elem e ";" [: `S RO ";" :]; glop el k :] ]
-  in
-  HOVbox [: `S LR "[<"; glop (get e) [: `S LR ">]"; k :] :]
-;
-
-(* Parsers *)
-
-value parser_cases b spel dg k =
-  let rec parser_cases b spel dg k =
-    match spel with
-    [ [] -> [: `HVbox [: b; k :] :]
-    | [(sp, epo, e)] -> [: `parser_case b sp epo e dg k :]
-    | [(sp, epo, e) :: spel] ->
-        [: `parser_case b sp epo e "|" [: :];
-           parser_cases [: `S LR "|" :] spel dg k :] ]
-  and parser_case b sp epo e dg k =
-    let epo =
-      match epo with
-      [ Some p -> [: `patt p "" [: `S LR "->" :] :]
-      | _ -> [: `S LR "->" :] ]
-    in
-    HVbox
-      [: b;
-         `HOVbox
-            [: `HOVbox
-                 [: `S LR "[<";
-                    stream_patt [: :] sp [: `S LR ">]"; epo :] :];
-               `expr e dg k :] :]
-  and stream_patt b sp k =
-    match sp with
-    [ [] -> [: `HVbox [: b; k :] :]
-    | [(spc, None)] -> [: `stream_patt_comp b spc "" k :]
-    | [(spc, Some e)] ->
-        [: `HVbox
-              [: `stream_patt_comp b spc "" [: :];
-                 `HVbox [: `S LR "??"; `expr e "" k :] :] :]
-    | [(spc, None) :: spcl] ->
-        [: `stream_patt_comp b spc ";" [: `S RO ";" :];
-           stream_patt [: :] spcl k :]
-    | [(spc, Some e) :: spcl] ->
-        [: `HVbox
-              [: `stream_patt_comp b spc "" [: :];
-                 `HVbox [: `S LR "??"; `expr e ";" [: `S RO ";" :] :] :];
-           stream_patt [: :] spcl k :] ]
-  and stream_patt_comp b spc dg k =
-    match spc with
-    [ SPCterm (p, w) ->
-        HVbox [: b; `S LO "'"; `spatt p "" (when_opt w k) :]
-    | SPCnterm p e ->
-        HVbox [: b; `HVbox [: `patt p "" [: `S LR "=" :]; `expr e dg k :] :]
-    | SPCsterm p -> HVbox [: b; `patt p "" k :] ]
-  and when_opt wo k =
-    match wo with
-    [ Some e -> [: `S LR "when"; `expr e "" k :]
-    | _ -> k ]
-  in
-  parser_cases b spel dg k
-;
-
-value parser_body e dg k =
-  let (bp, e) =
-    match e with
-    [ <:expr< let $bp$ = Stream.count __strm in $e$ >> -> (Some bp, e)
-    | e -> (None, e) ]
-  in
-  match Parserify.parser_of_expr e with
-  [ [] ->
-      let spe = ([], None, <:expr< raise Stream.Failure >>) in
-      HVbox
-        [: `HVbox
-              [: `S LR "parser";
-                 match bp with
-                 [ Some p -> [: `patt p "" [: :] :]
-                 | _ -> [: :] ] :];
-           parser_cases [: :] [spe] dg k :]
-  | spel ->
-      BEVbox
-        [: `HVbox
-              [: `S LR "parser";
-                 match bp with
-                 [ Some p -> [: `patt p "" [: :] :]
-                 | _ -> [: :] ] :];
-           parser_cases [: :] spel dg k :] ]
-;
-
-value pmatch e dg k =
-  let (me, e) =
-    match e with
-    [ <:expr< let (__strm : Stream.t _) = $me$ in $e$ >> -> (me, e)
-    | _ -> failwith "Pr_op.pmatch" ]
-  in
-  let (bp, e) =
-    match e with
-    [ <:expr< let $bp$ = Stream.count __strm in $e$ >> -> (Some bp, e)
-    | e -> (None, e) ]
-  in
-  let spel = Parser_of_expr.parser_of_expr e in
-  Vbox
-    [: `HVbox [: :];
-       `HVbox
-          [: `S LR "match"; `expr me "" [: `S LR "with" :]; `S LR "parser";
-             match bp with
-             [ Some p -> [: `patt p "" [: :] :]
-             | _ -> [: :] ] :];
-       `BEbox [: `HVbox [: :]; parser_cases [: :] spel dg k :] :]
-;
-
-(* Printer extensions *)
-
-pr_expr_fun_args.val :=
-  extfun pr_expr_fun_args.val with
-  [ <:expr< fun __strm -> $_$ >> as ge -> ([], ge)
-  | <:expr< fun [(__strm : $_$) -> $_$] >> as ge -> ([], ge) ];
-
-let lev = find_pr_level "expr1" pr_expr.pr_levels in
-lev.pr_rules :=
-  extfun lev.pr_rules with
-  [ <:expr< let (__strm : Stream.t _) = $_$ in $_$ >> as e ->
-      fun curr next dg k ->
-        if not (List.mem dg ["|"; ";"]) then [: `pmatch e dg k :]
-        else [: `S LO "("; `pmatch e "" [: `S RO ")"; k :] :]
-  | <:expr< fun __strm -> $x$ >> ->
-      fun curr next dg k ->
-        if not (List.mem dg ["|"; ";"]) then [: `parser_body x dg k :]
-        else [: `S LO "("; `parser_body x "" [: `S RO ")"; k :] :]
-  | <:expr< fun [ (__strm : $_$) -> $x$ ] >> ->
-      fun curr next dg k ->
-        if not (List.mem dg ["|"; ";"]) then [: `parser_body x dg k :]
-        else [: `S LO "("; `parser_body x "" [: `S RO ")"; k :] :] ];
-
-let lev = find_pr_level "apply" pr_expr.pr_levels in
-lev.pr_rules :=
-  extfun lev.pr_rules with
-  [ <:expr< Stream.iapp $_$ $_$ >> | <:expr< Stream.icons $_$ $_$ >> |
-    <:expr< Stream.ising $_$ >> | <:expr< Stream.lapp (fun _ -> $_$) $_$ >> |
-    <:expr< Stream.lcons (fun _ -> $_$) $_$ >> |
-    <:expr< Stream.lsing (fun _ -> $_$) >> | <:expr< Stream.sempty >> |
-    <:expr< Stream.slazy $_$ >> as e ->
-      fun curr next dg k -> [: `next e "" k :] ];
-
-let lev = find_pr_level "dot" pr_expr.pr_levels in
-lev.pr_rules :=
-  extfun lev.pr_rules with
-  [ <:expr< Stream.sempty >> as e ->
-      fun curr next dg k -> [: `next e "" k :] ];
-
-let lev = find_pr_level "simple" pr_expr.pr_levels in
-lev.pr_rules :=
-  extfun lev.pr_rules with
-  [ <:expr< Stream.iapp $_$ $_$ >> | <:expr< Stream.icons $_$ $_$ >> |
-    <:expr< Stream.ising $_$ >> | <:expr< Stream.lapp (fun _ -> $_$) $_$ >> |
-    <:expr< Stream.lcons (fun _ -> $_$) $_$ >> |
-    <:expr< Stream.lsing (fun _ -> $_$) >> | <:expr< Stream.sempty >> |
-    <:expr< Stream.slazy $_$ >> as e ->
-      fun curr next dg k ->
-        [: `stream e "" k :] ];
diff --git a/camlp4/unmaintained/etc/pr_op_main.ml b/camlp4/unmaintained/etc/pr_op_main.ml
deleted file mode 100644 (file)
index 3ea53ba..0000000
+++ /dev/null
@@ -1,214 +0,0 @@
-(* camlp4r q_MLast.cmo ./pa_extfun.cmo *)
-(***********************************************************************)
-(*                                                                     *)
-(*                             Camlp4                                  *)
-(*                                                                     *)
-(*        Daniel de Rauglaudre, projet Cristal, INRIA Rocquencourt     *)
-(*                                                                     *)
-(*  Copyright 1998 Institut National de Recherche en Informatique et   *)
-(*  Automatique.  Distributed only by permission.                      *)
-(*                                                                     *)
-(***********************************************************************)
-
-
-
-open Pcaml;
-open Spretty;
-
-value _loc = Loc.mk "FIXME pr_op_main.ml";
-
-value expr e dg k = pr_expr.pr_fun "top" e dg k;
-value patt e dg k = pr_patt.pr_fun "top" e dg k;
-
-value spatt p dg k =
-  match p with
-  [ <:patt< $lid:s$ >> ->
-      if String.length s >= 2 && s.[1] == ''' then
-        HVbox [: `S LR (" " ^ s); k :]
-      else patt p dg k
-  | _ -> patt p dg k ]
-;
-
-(* Streams *)
-
-value stream e _ k =
-  let rec get =
-    fun
-    [ <:expr< Stream.iapp $x$ $y$ >> -> [(False, x) :: get y]
-    | <:expr< Stream.icons $x$ $y$ >> -> [(True, x) :: get y]
-    | <:expr< Stream.ising $x$ >> -> [(True, x)]
-    | <:expr< Stream.lapp (fun _ -> $x$) $y$ >> -> [(False, x) :: get y]
-    | <:expr< Stream.lcons (fun _ -> $x$) $y$ >> -> [(True, x) :: get y]
-    | <:expr< Stream.lsing (fun _ -> $x$) >> -> [(True, x)]
-    | <:expr< Stream.sempty >> -> []
-    | <:expr< Stream.slazy (fun _ -> $x$) >> -> [(False, x)]
-    | <:expr< Stream.slazy $x$ >> -> [(False, <:expr< $x$ () >>)]
-    | e -> [(False, e)] ]
-  in
-  let elem e dg k =
-    match e with
-    [ (True, e) -> [: `HOVbox [: `S LO "'"; `expr e dg k :] :]
-    | (False, e) -> [: `expr e dg k :] ]
-  in
-  let rec glop e k =
-    match e with
-    [ [] -> k
-    | [e] -> [: elem e "" k :]
-    | [e :: el] -> [: elem e ";" [: `S RO ";" :]; glop el k :] ]
-  in
-  HOVbox [: `S LR "[<"; glop (get e) [: `S LR ">]"; k :] :]
-;
-
-(* Parsers *)
-
-open Parserify;
-
-value parser_cases b spel dg k =
-  let rec parser_cases b spel dg k =
-    match spel with
-    [ [] -> [: `HVbox [: b; k :] :]
-    | [(sp, epo, e)] -> [: `parser_case b sp epo e dg k :]
-    | [(sp, epo, e) :: spel] ->
-        [: `parser_case b sp epo e "|" [: :];
-           parser_cases [: `S LR "|" :] spel dg k :] ]
-  and parser_case b sp epo e dg k =
-    let epo =
-      match epo with
-      [ Some p -> [: `patt p "" [: `S LR "->" :] :]
-      | _ -> [: `S LR "->" :] ]
-    in
-    HVbox
-      [: b;
-         `HOVbox
-            [: `HOVbox
-                 [: `S LR "[<";
-                    stream_patt [: :] sp [: `S LR ">]"; epo :] :];
-               `expr e dg k :] :]
-  and stream_patt b sp k =
-    match sp with
-    [ [] -> [: `HVbox [: b; k :] :]
-    | [(spc, None)] -> [: `stream_patt_comp b spc "" k :]
-    | [(spc, Some e)] ->
-        [: `HVbox
-              [: `stream_patt_comp b spc "" [: :];
-                 `HVbox [: `S LR "??"; `expr e "" k :] :] :]
-    | [(spc, None) :: spcl] ->
-        [: `stream_patt_comp b spc ";" [: `S RO ";" :];
-           stream_patt [: :] spcl k :]
-    | [(spc, Some e) :: spcl] ->
-        [: `HVbox
-              [: `stream_patt_comp b spc "" [: :];
-                 `HVbox [: `S LR "??"; `expr e ";" [: `S RO ";" :] :] :];
-           stream_patt [: :] spcl k :] ]
-  and stream_patt_comp b spc dg k =
-    match spc with
-    [ SPCterm (p, w) ->
-        HVbox [: b; `S LO "'"; `spatt p "" (when_opt w k) :]
-    | SPCnterm p e ->
-        HVbox [: b; `HVbox [: `patt p "" [: `S LR "=" :]; `expr e dg k :] :]
-    | SPCsterm p -> HVbox [: b; `patt p "" k :] ]
-  and when_opt wo k =
-    match wo with
-    [ Some e -> [: `S LR "when"; `expr e "" k :]
-    | _ -> k ]
-  in
-  parser_cases b spel dg k
-;
-
-value parser_body e dg k =
-  let (bp, e) =
-    match e with
-    [ <:expr< let $bp$ = Stream.count __strm in $e$ >> -> (Some bp, e)
-    | e -> (None, e) ]
-  in
-  match parser_of_expr e with
-  [ [] ->
-      let spe = ([], None, <:expr< raise Stream.Failure >>) in
-      HVbox
-        [: `HVbox
-              [: `S LR "parser";
-                 match bp with
-                 [ Some p -> [: `patt p "" [: :] :]
-                 | _ -> [: :] ] :];
-           parser_cases [: :] [spe] dg k :]
-  | spel ->
-      BEVbox
-        [: `HVbox
-              [: `S LR "parser";
-                 match bp with
-                 [ Some p -> [: `patt p "" [: :] :]
-                 | _ -> [: :] ] :];
-           parser_cases [: :] spel dg k :] ]
-;
-
-value pmatch e dg k =
-  let (me, e) =
-    match e with
-    [ <:expr< let (__strm : Stream.t _) = $me$ in $e$ >> -> (me, e)
-    | _ -> failwith "Pr_op.pmatch" ]
-  in
-  let (bp, e) =
-    match e with
-    [ <:expr< let $bp$ = Stream.count __strm in $e$ >> -> (Some bp, e)
-    | e -> (None, e) ]
-  in
-  let spel = parser_of_expr e in
-  Vbox
-    [: `HVbox [: :];
-       `HVbox
-          [: `S LR "match"; `expr me "" [: `S LR "with" :]; `S LR "parser";
-             match bp with
-             [ Some p -> [: `patt p "" [: :] :]
-             | _ -> [: :] ] :];
-       `BEbox [: `HVbox [: :]; parser_cases [: :] spel dg k :] :]
-;
-
-(* Printer extensions *)
-
-pr_expr_fun_args.val :=
-  extfun pr_expr_fun_args.val with
-  [ <:expr< fun __strm -> $_$ >> as ge -> ([], ge)
-  | <:expr< fun [(__strm : $_$) -> $_$] >> as ge -> ([], ge) ];
-
-let lev = find_pr_level "expr1" pr_expr.pr_levels in
-lev.pr_rules :=
-  extfun lev.pr_rules with
-  [ <:expr< let (__strm : Stream.t _) = $_$ in $_$ >> as e ->
-      fun _ _ dg k ->
-        if not (List.mem dg ["|"; ";"]) then [: `pmatch e dg k :]
-        else [: `S LO "("; `pmatch e "" [: `S RO ")"; k :] :]
-  | <:expr< fun __strm -> $x$ >> ->
-      fun _ _ dg k ->
-        if not (List.mem dg ["|"; ";"]) then [: `parser_body x dg k :]
-        else [: `S LO "("; `parser_body x "" [: `S RO ")"; k :] :]
-  | <:expr< fun [ (__strm : $_$) -> $x$ ] >> ->
-      fun _ _ dg k ->
-        if not (List.mem dg ["|"; ";"]) then [: `parser_body x dg k :]
-        else [: `S LO "("; `parser_body x "" [: `S RO ")"; k :] :] ];
-
-let lev = find_pr_level "apply" pr_expr.pr_levels in
-lev.pr_rules :=
-  extfun lev.pr_rules with
-  [ <:expr< Stream.iapp $_$ $_$ >> | <:expr< Stream.icons $_$ $_$ >> |
-    <:expr< Stream.ising $_$ >> | <:expr< Stream.lapp (fun _ -> $_$) $_$ >> |
-    <:expr< Stream.lcons (fun _ -> $_$) $_$ >> |
-    <:expr< Stream.lsing (fun _ -> $_$) >> | <:expr< Stream.sempty >> |
-    <:expr< Stream.slazy $_$ >> as e ->
-      fun _ next _ k -> [: `next e "" k :] ];
-
-let lev = find_pr_level "dot" pr_expr.pr_levels in
-lev.pr_rules :=
-  extfun lev.pr_rules with
-  [ <:expr< Stream.sempty >> as e ->
-      fun _ next _ k -> [: `next e "" k :] ];
-
-let lev = find_pr_level "simple" pr_expr.pr_levels in
-lev.pr_rules :=
-  extfun lev.pr_rules with
-  [ <:expr< Stream.iapp $_$ $_$ >> | <:expr< Stream.icons $_$ $_$ >> |
-    <:expr< Stream.ising $_$ >> | <:expr< Stream.lapp (fun _ -> $_$) $_$ >> |
-    <:expr< Stream.lcons (fun _ -> $_$) $_$ >> |
-    <:expr< Stream.lsing (fun _ -> $_$) >> | <:expr< Stream.sempty >> |
-    <:expr< Stream.slazy $_$ >> as e ->
-      fun _ _ _ k ->
-        [: `stream e "" k :] ];
diff --git a/camlp4/unmaintained/etc/pr_rp.ml b/camlp4/unmaintained/etc/pr_rp.ml
deleted file mode 100644 (file)
index 0604b46..0000000
+++ /dev/null
@@ -1,207 +0,0 @@
-(* camlp4r q_MLast.cmo ./pa_extfun.cmo *)
-(***********************************************************************)
-(*                                                                     *)
-(*                             Camlp4                                  *)
-(*                                                                     *)
-(*        Daniel de Rauglaudre, projet Cristal, INRIA Rocquencourt     *)
-(*                                                                     *)
-(*  Copyright 1998 Institut National de Recherche en Informatique et   *)
-(*  Automatique.  Distributed only by permission.                      *)
-(*                                                                     *)
-(***********************************************************************)
-
-
-
-open Pcaml;
-open Spretty;
-
-value _loc = (Token.nowhere, Token.nowhere);
-
-value expr e dg k = pr_expr.pr_fun "top" e dg k;
-value patt e dg k = pr_patt.pr_fun "top" e dg k;
-
-(* Streams *)
-
-value stream e dg k =
-  let rec get =
-    fun
-    [ <:expr< Stream.iapp $x$ $y$ >> -> [(False, x) :: get y]
-    | <:expr< Stream.icons $x$ $y$ >> -> [(True, x) :: get y]
-    | <:expr< Stream.ising $x$ >> -> [(True, x)]
-    | <:expr< Stream.lapp (fun _ -> $x$) $y$ >> -> [(False, x) :: get y]
-    | <:expr< Stream.lcons (fun _ -> $x$) $y$ >> -> [(True, x) :: get y]
-    | <:expr< Stream.lsing (fun _ -> $x$) >> -> [(True, x)]
-    | <:expr< Stream.sempty >> -> []
-    | <:expr< Stream.slazy (fun _ -> $x$) >> -> [(False, x)]
-    | <:expr< Stream.slazy $x$ >> -> [(False, <:expr< $x$ () >>)]
-    | e -> [(False, e)] ]
-  in
-  let elem e k =
-    match e with
-    [ (True, e) -> [: `HOVbox [: `S LO "`"; `expr e "" k :] :]
-    | (False, e) -> [: `expr e "" k :] ]
-  in
-  let rec glop e k =
-    match e with
-    [ [] -> k
-    | [e] -> [: elem e k :]
-    | [e :: el] -> [: elem e [: `S RO ";" :]; glop el k :] ]
-  in
-  HOVbox [: `S LR "[:"; glop (get e) [: `S LR ":]"; k :] :]
-;
-
-(* Parsers *)
-
-value parser_cases b spel k =
-  let rec parser_cases b spel k =
-    match spel with
-    [ [] -> [: `HVbox [: b; k :] :]
-    | [(sp, epo, e)] -> [: `parser_case b sp epo e k :]
-    | [(sp, epo, e) :: spel] ->
-        [: `parser_case b sp epo e [: :];
-           parser_cases [: `S LR "|" :] spel k :] ]
-  and parser_case b sp epo e k =
-    let epo =
-      match epo with
-      [ Some p -> [: `patt p "" [: `S LR "->" :] :]
-      | _ -> [: `S LR "->" :] ]
-    in
-    HVbox
-      [: b;
-         `HOVbox
-            [: `HOVbox
-                  [: `S LR "[:";
-                     stream_patt [: :] sp [: `S LR ":]"; epo :] :];
-               `expr e "" k :] :]
-  and stream_patt b sp k =
-    match sp with
-    [ [] -> [: `HVbox [: b; k :] :]
-    | [(spc, None)] -> [: `stream_patt_comp b spc k :]
-    | [(spc, Some e)] ->
-        [: `HVbox
-              [: `stream_patt_comp b spc [: :];
-                 `HVbox [: `S LR "?"; `expr e "" k :] :] :]
-    | [(spc, None) :: spcl] ->
-        [: `stream_patt_comp b spc [: `S RO ";" :];
-           stream_patt [: :] spcl k :]
-    | [(spc, Some e) :: spcl] ->
-        [: `HVbox
-              [: `stream_patt_comp b spc [: :];
-                 `HVbox [: `S LR "?"; `expr e "" [: `S RO ";" :] :] :];
-           stream_patt [: :] spcl k :] ]
-  and stream_patt_comp b spc k =
-    match spc with
-    [ SPCterm (p, w) ->
-        HVbox [: b; `S LO "`"; `patt p "" [: :]; `HVbox [: when_opt w k :] :]
-    | SPCnterm p e ->
-        HVbox [: b; `HVbox [: `patt p "" [: `S LR "=" :]; `expr e "" k :] :]
-    | SPCsterm p -> HVbox [: b; `patt p "" k :] ]
-  and when_opt wo k =
-    match wo with
-    [ Some e -> [: `S LR "when"; `expr e "" k :]
-    | _ -> k ]
-  in
-  parser_cases b spel k
-;
-
-value parser_body e dg k =
-  let (bp, e) =
-    match e with
-    [ <:expr< let $bp$ = Stream.count __strm in $e$ >> -> (Some bp, e)
-    | e -> (None, e) ]
-  in
-  match Parserify.parser_of_expr e with
-  [ [] ->
-      HVbox
-        [: `HVbox
-              [: `S LR "parser";
-                 match bp with
-                 [ Some p -> [: `patt p "" [: :] :]
-                 | _ -> [: :] ] :];
-           `HVbox [: `S LR "[]"; k :] :]
-  | [spe] ->
-      HVbox
-        [: `HVbox
-              [: `S LR "parser";
-                 match bp with
-                 [ Some p -> [: `patt p "" [: :] :]
-                 | _ -> [: :] ] :];
-           parser_cases [: :] [spe] k :]
-  | spel ->
-      Vbox
-        [: `HVbox [: :];
-           `HVbox
-              [: `S LR "parser";
-                 match bp with
-                 [ Some p -> [: `patt p "" [: :] :]
-                 | _ -> [: :] ] :];
-           parser_cases [: `S LR "[" :] spel [: `S LR "]"; k :] :] ]
-;
-
-value pmatch e dg k =
-  let (me, e) =
-    match e with
-    [ <:expr< let (__strm : Stream.t _) = $me$ in $e$ >> -> (me, e)
-    | <:expr< match $_$ __strm with [ $list:_$ ] >> -> (<:expr< __strm >>, e)
-    | _ -> failwith "Pr_rp.pmatch" ]
-  in
-  let (bp, e) =
-    match e with
-    [ <:expr< let $bp$ = Stream.count __strm in $e$ >> -> (Some bp, e)
-    | e -> (None, e) ]
-  in
-  let spel = Parserify.parser_of_expr e in
-  Vbox
-    [: `HVbox [: :];
-       `HVbox
-          [: `S LR "match"; `expr me "" [: `S LR "with" :]; `S LR "parser";
-             match bp with
-             [ Some p -> [: `patt p "" [: :] :]
-             | _ -> [: :] ] :];
-       parser_cases [: `S LR "[" :] spel [: `S LR "]"; k :] :]
-;
-
-(* Printer extensions *)
-
-pr_expr_fun_args.val :=
-  extfun pr_expr_fun_args.val with
-  [ <:expr< fun __strm -> $_$ >> as ge -> ([], ge)
-  | <:expr< fun [(__strm : $_$) -> $_$] >> as ge -> ([], ge) ];
-
-let lev = find_pr_level "top" pr_expr.pr_levels in
-lev.pr_rules :=
-  extfun lev.pr_rules with
-  [ <:expr< let (__strm : Stream.t _) = $_$ in $_$ >> as e ->
-      fun curr next _ k -> [: `pmatch e "" k :]
-  | <:expr< match $_$ __strm with [ $list:_$ ] >> as e ->
-      fun curr next _ k -> [: `pmatch e "" k :]
-  | <:expr< fun __strm -> $x$ >> ->
-      fun curr next _ k -> [: `parser_body x "" k :]
-  | <:expr< fun (__strm : $_$) -> $x$ >> ->
-      fun curr next _ k -> [: `parser_body x "" k :] ];
-
-let lev = find_pr_level "apply" pr_expr.pr_levels in
-lev.pr_rules :=
-  extfun lev.pr_rules with
-  [ <:expr< Stream.iapp $_$ $_$ >> | <:expr< Stream.icons $_$ $_$ >> |
-    <:expr< Stream.ising $_$ >> | <:expr< Stream.lapp (fun _ -> $_$) $_$ >> |
-    <:expr< Stream.lcons (fun _ -> $_$) $_$ >> |
-    <:expr< Stream.lsing (fun _ -> $_$) >> | <:expr< Stream.sempty >> |
-    <:expr< Stream.slazy $_$ >> as e ->
-      fun curr next _ k -> [: `next e "" k :] ];
-
-let lev = find_pr_level "dot" pr_expr.pr_levels in
-lev.pr_rules :=
-  extfun lev.pr_rules with
-  [ <:expr< Stream.sempty >> as e ->
-      fun curr next _ k -> [: `next e "" k :] ];
-
-let lev = find_pr_level "simple" pr_expr.pr_levels in
-lev.pr_rules :=
-  extfun lev.pr_rules with
-  [ <:expr< Stream.iapp $_$ $_$ >> | <:expr< Stream.icons $_$ $_$ >> |
-    <:expr< Stream.ising $_$ >> | <:expr< Stream.lapp (fun _ -> $_$) $_$ >> |
-    <:expr< Stream.lcons (fun _ -> $_$) $_$ >> |
-    <:expr< Stream.lsing (fun _ -> $_$) >> | <:expr< Stream.sempty >> |
-    <:expr< Stream.slazy $_$ >> as e ->
-      fun curr next _ k -> [: `stream e "" k :] ];
diff --git a/camlp4/unmaintained/etc/pr_rp_main.ml b/camlp4/unmaintained/etc/pr_rp_main.ml
deleted file mode 100644 (file)
index 534d407..0000000
+++ /dev/null
@@ -1,206 +0,0 @@
-(* camlp4r q_MLast.cmo ./pa_extfun.cmo *)
-(***********************************************************************)
-(*                                                                     *)
-(*                             Camlp4                                  *)
-(*                                                                     *)
-(*        Daniel de Rauglaudre, projet Cristal, INRIA Rocquencourt     *)
-(*                                                                     *)
-(*  Copyright 1998 Institut National de Recherche en Informatique et   *)
-(*  Automatique.  Distributed only by permission.                      *)
-(*                                                                     *)
-(***********************************************************************)
-
-
-
-open Pcaml;
-open Spretty;
-
-value _loc = Loc.mk "FIXME pr_rp_main.ml";
-
-value expr e dg k = pr_expr.pr_fun "top" e dg k;
-value patt e dg k = pr_patt.pr_fun "top" e dg k;
-
-(* Streams *)
-
-value stream e _ k =
-  let rec get =
-    fun
-    [ <:expr< Stream.iapp $x$ $y$ >> -> [(False, x) :: get y]
-    | <:expr< Stream.icons $x$ $y$ >> -> [(True, x) :: get y]
-    | <:expr< Stream.ising $x$ >> -> [(True, x)]
-    | <:expr< Stream.lapp (fun _ -> $x$) $y$ >> -> [(False, x) :: get y]
-    | <:expr< Stream.lcons (fun _ -> $x$) $y$ >> -> [(True, x) :: get y]
-    | <:expr< Stream.lsing (fun _ -> $x$) >> -> [(True, x)]
-    | <:expr< Stream.sempty >> -> []
-    | <:expr< Stream.slazy (fun _ -> $x$) >> -> [(False, x)]
-    | <:expr< Stream.slazy $x$ >> -> [(False, <:expr< $x$ () >>)]
-    | e -> [(False, e)] ]
-  in
-  let elem e k =
-    match e with
-    [ (True, e) -> [: `HOVbox [: `S LO "`"; `expr e "" k :] :]
-    | (False, e) -> [: `expr e "" k :] ]
-  in
-  let rec glop e k =
-    match e with
-    [ [] -> k
-    | [e] -> [: elem e k :]
-    | [e :: el] -> [: elem e [: `S RO ";" :]; glop el k :] ]
-  in
-  HOVbox [: `S LR "[:"; glop (get e) [: `S LR ":]"; k :] :]
-;
-
-(* Parsers *)
-
-open Parserify;
-
-value parser_cases b spel k =
-  let rec parser_cases b spel k =
-    match spel with
-    [ [] -> [: `HVbox [: b; k :] :]
-    | [(sp, epo, e)] -> [: `parser_case b sp epo e k :]
-    | [(sp, epo, e) :: spel] ->
-        [: `parser_case b sp epo e [: :];
-           parser_cases [: `S LR "|" :] spel k :] ]
-  and parser_case b sp epo e k =
-    let epo =
-      match epo with
-      [ Some p -> [: `patt p "" [: `S LR "->" :] :]
-      | _ -> [: `S LR "->" :] ]
-    in
-    HVbox
-      [: b;
-         `HOVbox
-            [: `HOVbox
-                  [: `S LR "[:";
-                     stream_patt [: :] sp [: `S LR ":]"; epo :] :];
-               `expr e "" k :] :]
-  and stream_patt b sp k =
-    match sp with
-    [ [] -> [: `HVbox [: b; k :] :]
-    | [(spc, None)] -> [: `stream_patt_comp b spc k :]
-    | [(spc, Some e)] ->
-        [: `HVbox
-              [: `stream_patt_comp b spc [: :];
-                 `HVbox [: `S LR "?"; `expr e "" k :] :] :]
-    | [(spc, None) :: spcl] ->
-        [: `stream_patt_comp b spc [: `S RO ";" :];
-           stream_patt [: :] spcl k :]
-    | [(spc, Some e) :: spcl] ->
-        [: `HVbox
-              [: `stream_patt_comp b spc [: :];
-                 `HVbox [: `S LR "?"; `expr e "" [: `S RO ";" :] :] :];
-           stream_patt [: :] spcl k :] ]
-  and stream_patt_comp b spc k =
-    match spc with
-    [ SPCterm (p, w) ->
-        HVbox [: b; `S LO "`"; `patt p "" [: :]; `HVbox [: when_opt w k :] :]
-    | SPCnterm p e ->
-        HVbox [: b; `HVbox [: `patt p "" [: `S LR "=" :]; `expr e "" k :] :]
-    | SPCsterm p -> HVbox [: b; `patt p "" k :] ]
-  and when_opt wo k =
-    match wo with
-    [ Some e -> [: `S LR "when"; `expr e "" k :]
-    | _ -> k ]
-  in
-  parser_cases b spel k
-;
-
-value parser_body e _ k =
-  let (bp, e) =
-    match e with
-    [ <:expr< let $bp$ = Stream.count __strm in $e$ >> -> (Some bp, e)
-    | e -> (None, e) ]
-  in
-  match parser_of_expr e with
-  [ [] ->
-      HVbox
-        [: `HVbox
-              [: `S LR "parser";
-                 match bp with
-                 [ Some p -> [: `patt p "" [: :] :]
-                 | _ -> [: :] ] :];
-           `HVbox [: `S LR "[]"; k :] :]
-  | [spe] ->
-      HVbox
-        [: `HVbox
-              [: `S LR "parser";
-                 match bp with
-                 [ Some p -> [: `patt p "" [: :] :]
-                 | _ -> [: :] ] :];
-           parser_cases [: :] [spe] k :]
-  | spel ->
-      Vbox
-        [: `HVbox [: :];
-           `HVbox
-              [: `S LR "parser";
-                 match bp with
-                 [ Some p -> [: `patt p "" [: :] :]
-                 | _ -> [: :] ] :];
-           parser_cases [: `S LR "[" :] spel [: `S LR "]"; k :] :] ]
-;
-
-value pmatch e _ k =
-  let (me, e) =
-    match e with
-    [ <:expr< let (__strm : Stream.t _) = $me$ in $e$ >> -> (me, e)
-    | _ -> failwith "Pr_rp.pmatch" ]
-  in
-  let (bp, e) =
-    match e with
-    [ <:expr< let $bp$ = Stream.count __strm in $e$ >> -> (Some bp, e)
-    | e -> (None, e) ]
-  in
-  let spel = parser_of_expr e in
-  Vbox
-    [: `HVbox [: :];
-       `HVbox
-          [: `S LR "match"; `expr me "" [: `S LR "with" :]; `S LR "parser";
-             match bp with
-             [ Some p -> [: `patt p "" [: :] :]
-             | _ -> [: :] ] :];
-       parser_cases [: `S LR "[" :] spel [: `S LR "]"; k :] :]
-;
-
-(* Printer extensions *)
-
-pr_expr_fun_args.val :=
-  extfun pr_expr_fun_args.val with
-  [ <:expr< fun __strm -> $_$ >> as ge -> ([], ge)
-  | <:expr< fun [(__strm : $_$) -> $_$] >> as ge -> ([], ge) ];
-
-let lev = find_pr_level "top" pr_expr.pr_levels in
-lev.pr_rules :=
-  extfun lev.pr_rules with
-  [ <:expr< let (__strm : Stream.t _) = $_$ in $_$ >> as e ->
-      fun _ _ _ k -> [: `pmatch e "" k :]
-  | <:expr< fun __strm -> $x$ >> ->
-      fun _ _ _ k -> [: `parser_body x "" k :]
-  | <:expr< fun (__strm : $_$) -> $x$ >> ->
-      fun _ _ _ k -> [: `parser_body x "" k :] ];
-
-let lev = find_pr_level "apply" pr_expr.pr_levels in
-lev.pr_rules :=
-  extfun lev.pr_rules with
-  [ <:expr< Stream.iapp $_$ $_$ >> | <:expr< Stream.icons $_$ $_$ >> |
-    <:expr< Stream.ising $_$ >> | <:expr< Stream.lapp (fun _ -> $_$) $_$ >> |
-    <:expr< Stream.lcons (fun _ -> $_$) $_$ >> |
-    <:expr< Stream.lsing (fun _ -> $_$) >> | <:expr< Stream.sempty >> |
-    <:expr< Stream.slazy $_$ >> as e ->
-      fun _ next _ k -> [: `next e "" k :] ];
-
-let lev = find_pr_level "dot" pr_expr.pr_levels in
-lev.pr_rules :=
-  extfun lev.pr_rules with
-  [ <:expr< Stream.sempty >> as e ->
-      fun _ next _ k -> [: `next e "" k :] ];
-
-let lev = find_pr_level "simple" pr_expr.pr_levels in
-lev.pr_rules :=
-  extfun lev.pr_rules with
-  [ <:expr< Stream.iapp $_$ $_$ >> | <:expr< Stream.icons $_$ $_$ >> |
-    <:expr< Stream.ising $_$ >> | <:expr< Stream.lapp (fun _ -> $_$) $_$ >> |
-    <:expr< Stream.lcons (fun _ -> $_$) $_$ >> |
-    <:expr< Stream.lsing (fun _ -> $_$) >> | <:expr< Stream.sempty >> |
-    <:expr< Stream.slazy $_$ >> as e ->
-      fun _ _ _ k -> [: `stream e "" k :] ];
diff --git a/camlp4/unmaintained/etc/q_phony.ml b/camlp4/unmaintained/etc/q_phony.ml
deleted file mode 100644 (file)
index e490808..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-(* camlp4r pa_extend.cmo q_MLast.cmo *)
-(***********************************************************************)
-(*                                                                     *)
-(*                             Camlp4                                  *)
-(*                                                                     *)
-(*        Daniel de Rauglaudre, projet Cristal, INRIA Rocquencourt     *)
-(*                                                                     *)
-(*  Copyright 2001 Institut National de Recherche en Informatique et   *)
-(*  Automatique.  Distributed only by permission.                      *)
-(*                                                                     *)
-(***********************************************************************)
-
-
-
-open Pcaml;
-
-value t = ref "";
-
-Quotation.add ""
-  (Quotation.ExAst
-     (fun c s ->
-        let _loc = c.Quotation.loc in
-        let t =
-          if t.val = "" then "<<" ^ s ^ ">>"
-          else "<:" ^ t.val ^ "<" ^ s ^ ">>"
-        in
-        <:expr< $uid:t$ >>,
-      fun c s ->
-        let _loc = c.Quotation.loc in
-        let t =
-          if t.val = "" then "<<" ^ s ^ ">>"
-          else "<:" ^ t.val ^ "<" ^ s ^ ">>"
-        in
-        <:patt< $uid:t$ >>))
-;
-
-Quotation.default.val := "";
-Quotation.translate.val := fun s -> do { t.val := s; "" };
diff --git a/camlp4/unmaintained/extfold/README b/camlp4/unmaintained/extfold/README
deleted file mode 100644 (file)
index dce3da1..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-This is an application of or an extension for Camlp4. Although it is
-currently distributed with OCaml/Camlp4, it may or may not be
-actively maintained.
-
-It probably won't be part of future OCaml/Camlp4 distributions but be
-accessible from the Camlp4 hump. If you are interested in developing
-this package further and/or actively maintain it, please let us know
-(caml@inria.fr)
-
-This package is distributed under the same license as the OCaml
-Library (that is, LGPL with a special exception allowing both
-static and dynamic link).
-
--- Michel Mauny
-   Nicolas Pouillard
diff --git a/camlp4/unmaintained/extfold/pa_extfold.ml b/camlp4/unmaintained/extfold/pa_extfold.ml
deleted file mode 100644 (file)
index aa8e922..0000000
+++ /dev/null
@@ -1,42 +0,0 @@
-(* camlp4r pa_extend.cmo q_MLast.cmo *)
-
-
-open Pcaml;
-open Pa_extend;
-
-value sfold _loc n foldfun f e s =
-  let styp = STquo _loc (new_type_var ()) in
-  let e = <:expr< Extfold.$lid:foldfun$ $f$ $e$ >> in
-  let t = STapp _loc (STapp _loc (STtyp <:ctyp< Extfold.t _ >>) s.styp) styp in
-  {used = s.used; text = TXmeta _loc n [s.text] e t; styp = styp}
-;
-
-value sfoldsep _loc n foldfun f e s sep =
-  let styp = STquo _loc (new_type_var ()) in
-  let e = <:expr< Extfold.$lid:foldfun$ $f$ $e$ >> in
-  let t =
-    STapp _loc (STapp _loc (STtyp <:ctyp< Extfold.tsep _ >>) s.styp) styp
-  in
-  {used = s.used @ sep.used; text = TXmeta _loc n [s.text; sep.text] e t;
-   styp = styp}
-;
-
-EXTEND
-  GLOBAL: symbol;
-  symbol: LEVEL "top"
-    [ [ UIDENT "FOLD0"; f = simple_expr; e = simple_expr; s = SELF ->
-          sfold _loc "FOLD0" "sfold0" f e s
-      | UIDENT "FOLD1"; f = simple_expr; e = simple_expr; s = SELF ->
-          sfold _loc "FOLD1" "sfold1" f e s
-      | UIDENT "FOLD0"; f = simple_expr; e = simple_expr; s = SELF;
-        UIDENT "SEP"; sep = symbol ->
-          sfoldsep _loc "FOLD0 SEP" "sfold0sep" f e s sep
-      | UIDENT "FOLD1"; f = simple_expr; e = simple_expr; s = SELF;
-        UIDENT "SEP"; sep = symbol ->
-          sfoldsep _loc "FOLD1 SEP" "sfold1sep" f e s sep ] ]
-  ;
-  simple_expr:
-    [ [ i = LIDENT -> <:expr< $lid:i$ >>
-      | "("; e = expr; ")" -> e ] ]
-  ;
-END;
diff --git a/camlp4/unmaintained/format/.depend b/camlp4/unmaintained/format/.depend
deleted file mode 100644 (file)
index e69de29..0000000
diff --git a/camlp4/unmaintained/format/Makefile b/camlp4/unmaintained/format/Makefile
deleted file mode 100644 (file)
index 1211a79..0000000
+++ /dev/null
@@ -1,62 +0,0 @@
-#########################################################################
-#                                                                       #
-#                                 OCaml                                 #
-#                                                                       #
-#                                Camlp4                                 #
-#                                                                       #
-#   Copyright 2004 Institut National de Recherche en Informatique et    #
-#   en Automatique.  All rights reserved.  This file is distributed     #
-#   under the terms of the GNU Library General Public License, with     #
-#   the special exception on linking described in file ../../../LICENSE.#
-#                                                                       #
-#########################################################################
-#
-# Makefile for pa_format
-# M.Mauny
-#
-
-include ../../config/Makefile.cnf
-
-OCAMLTOP=../../..
-CAMLP4=../../camlp4/camlp4$(EXE)
-
-OCAMLC=$(OCAMLTOP)/ocamlc$(EXE)
-OCAMLOPT=$(OCAMLTOP)/ocamlopt$(EXE)
-
-P4INCLUDES= -nolib -I ../../lib -I ../../meta -I ../../etc
-OCAMLINCLUDES= -nostdlib -I $(OCAMLTOP)/stdlib -I ../../lib -I ../../camlp4
-OCAMLCFLAGS=-warn-error A $(OCAMLINCLUDES)
-
-SRC=pa_format.ml
-OBJS=$(SRC:.ml=.cmo)
-OBJSX=$(SRC:.ml=.cmx)
-
-all: $(OBJS)
-
-opt: $(OBJSX)
-
-depend:
-       cp .depend .depend.bak
-       > .depend
-       for file in $(SRC); do \
-         $(CAMLP4) $(P4INCLUDES) `awk 'NR == 1 { ORS=" "; for (i=2; i < NF; i++) print $$i; } ' $$file` pr_depend.cmo $$i | \
-         sed -e 's| \.\./\.\./\.\.| $$(OCAMLTOP)|g' >> .depend; \
-       done
-
-clean:
-       rm -f *.cm* *.$(O) *.bak .*.bak
-
-
-.SUFFIXES: .cmx .cmo .cmi .ml .mli
-
-.mli.cmi:
-       $(OCAMLC) $(OCAMLCFLAGS) -c $<
-
-
-.ml.cmo:
-       $(OCAMLC) $(OCAMLCFLAGS) -pp "$(CAMLP4) $(P4INCLUDES) `awk 'NR == 1 { ORS=" "; for (i=2; i < NF; i++) print $$i; } ' $<`" -c $<
-
-.ml.cmx:
-       $(OCAMLOPT) $(OCAMLCFLAGS) -pp "$(CAMLP4) $(P4INCLUDES) `awk 'NR == 1 { ORS=" "; for (i=2; i < NF; i++) print $$i; } ' $<`" -c $<
-
-include .depend
diff --git a/camlp4/unmaintained/format/README b/camlp4/unmaintained/format/README
deleted file mode 100644 (file)
index 830402b..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-This is an application of or an extension for Camlp4. Although it is
-currently distributed with OCaml/Camlp4, it may or may not be
-actively maintained.
-
-It probably won't be part of future OCaml/Camlp4 distributions but be
-accessible from the Camlp4 hump. If you are interested in developing
-this package further and/or actively maintain it, please let us know
-(caml@inria.fr)
-
-This package is distributed under the same license as the OCaml
-Library (that is, LGPL with a special exception allowing both
-static and dynamic link).
-
--- Michel Mauny
-
diff --git a/camlp4/unmaintained/format/pa_format.ml b/camlp4/unmaintained/format/pa_format.ml
deleted file mode 100644 (file)
index 640a750..0000000
+++ /dev/null
@@ -1,52 +0,0 @@
-(* pa_r.cmo pa_extend.cmo q_MLast.cmo pr_dump.cmo *)
-(***********************************************************************)
-(*                                                                     *)
-(*                               Camlp4                                *)
-(*                                                                     *)
-(*    Daniel de Rauglaudre, projet Cristal, INRIA Rocquencourt         *)
-(*                                                                     *)
-(*  Copyright 2002 Institut National de Recherche en Informatique et   *)
-(*  en Automatique.  All rights reserved.  This file is distributed    *)
-(*  under the terms of the GNU Library General Public License, with    *)
-(*  the special exception on linking described in file                 *)
-(*   ../../../LICENSE.                                                 *)
-(*                                                                     *)
-(***********************************************************************)
-
-
-open Pcaml;
-
-EXTEND
-  GLOBAL: expr;
-  expr: LEVEL "top"
-    [ [ n = box_type; d = SELF; "begin";
-        el = LIST0 [ e = box_expr; ";" -> e ]; "end" ->
-          let el = [<:expr< Format.$lid:"open_" ^ n$ $d$ >> :: el] in
-          let el = el @ [<:expr< Format.close_box () >>] in
-          <:expr< do { $list:el$ } >>
-      | "hbox"; "begin"; el = LIST0 [ e = box_expr; ";" -> e ]; "end" ->
-          let el = [<:expr< Format.open_hbox () >> :: el] in
-          let el = el @ [<:expr< Format.close_box () >>] in
-          <:expr< do { $list:el$ } >>
-      | "nobox"; "begin"; el = LIST0 [ e = box_expr; ";" -> e ]; "end" ->
-          match el with
-          [ [e] -> e
-          | _ -> <:expr< do { $list:el$ } >> ] ] ]
-  ;
-  box_type:
-    [ [ n = "hovbox" -> n
-      | n = "hvbox" -> n
-      | n = "vbox" -> n
-      | n = "box" -> n ] ]
-  ;
-  box_expr:
-    [ [ s = STRING -> <:expr< Format.print_string $str:s$ >>
-      | UIDENT "STRING"; e = expr -> <:expr< Format.print_string $e$ >>
-      | UIDENT "INT"; e = expr -> <:expr< Format.print_int $e$ >>
-      | "/-" -> <:expr< Format.print_space () >>
-      | "//" -> <:expr< Format.print_cut () >>
-      | "!/" -> <:expr< Format.force_newline () >>
-      | "?/" -> <:expr< Format.print_if_newline () >>
-      | e = expr -> e ] ]
-  ;
-END;
diff --git a/camlp4/unmaintained/lefteval/.depend b/camlp4/unmaintained/lefteval/.depend
deleted file mode 100644 (file)
index e69de29..0000000
diff --git a/camlp4/unmaintained/lefteval/Makefile b/camlp4/unmaintained/lefteval/Makefile
deleted file mode 100644 (file)
index 5d47776..0000000
+++ /dev/null
@@ -1,62 +0,0 @@
-#########################################################################
-#                                                                       #
-#                                 OCaml                                 #
-#                                                                       #
-#                                Camlp4                                 #
-#                                                                       #
-#   Copyright 2004 Institut National de Recherche en Informatique et    #
-#   en Automatique.  All rights reserved.  This file is distributed     #
-#   under the terms of the GNU Library General Public License, with     #
-#   the special exception on linking described in file ../../../LICENSE.#
-#                                                                       #
-#########################################################################
-#
-# Makefile for pa_lefteval
-# M.Mauny
-#
-
-include ../../config/Makefile.cnf
-
-OCAMLTOP=../../..
-CAMLP4=../../camlp4/camlp4$(EXE)
-
-OCAMLC=$(OCAMLTOP)/ocamlc$(EXE)
-OCAMLOPT=$(OCAMLTOP)/ocamlopt$(EXE)
-
-P4INCLUDES= -nolib -I ../../meta -I ../../etc
-OCAMLINCLUDES= -nostdlib -I $(OCAMLTOP)/stdlib -I ../../camlp4
-OCAMLCFLAGS=-warn-error A $(OCAMLINCLUDES)
-
-SRC=pa_lefteval.ml
-OBJS=$(SRC:.ml=.cmo)
-OBJSX=$(SRC:.ml=.cmx)
-
-all: $(OBJS)
-
-opt: $(OBJSX)
-
-depend:
-       cp .depend .depend.bak
-       > .depend
-       for file in $(SRC); do \
-         $(CAMLP4) $(P4INCLUDES) `awk 'NR == 1 { ORS=" "; for (i=2; i < NF; i++) print $$i; } ' $$file` pr_depend.cmo $$i | \
-         sed -e 's| \.\./\.\./\.\.| $$(OCAMLTOP)|g' >> .depend; \
-       done
-
-clean:
-       rm -f *.cm* *.$(O) *.bak .*.bak
-
-
-.SUFFIXES: .cmx .cmo .cmi .ml .mli
-
-.mli.cmi:
-       $(OCAMLC) $(OCAMLCFLAGS) -c $<
-
-
-.ml.cmo:
-       $(OCAMLC) $(OCAMLCFLAGS) -pp "$(CAMLP4) $(P4INCLUDES) `awk 'NR == 1 { ORS=" "; for (i=2; i < NF; i++) print $$i; } ' $<`" -c $<
-
-.ml.cmx:
-       $(OCAMLOPT) $(OCAMLCFLAGS) -pp "$(CAMLP4) $(P4INCLUDES) `awk 'NR == 1 { ORS=" "; for (i=2; i < NF; i++) print $$i; } ' $<`" -c $<
-
-include .depend
diff --git a/camlp4/unmaintained/lefteval/README b/camlp4/unmaintained/lefteval/README
deleted file mode 100644 (file)
index 830402b..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-This is an application of or an extension for Camlp4. Although it is
-currently distributed with OCaml/Camlp4, it may or may not be
-actively maintained.
-
-It probably won't be part of future OCaml/Camlp4 distributions but be
-accessible from the Camlp4 hump. If you are interested in developing
-this package further and/or actively maintain it, please let us know
-(caml@inria.fr)
-
-This package is distributed under the same license as the OCaml
-Library (that is, LGPL with a special exception allowing both
-static and dynamic link).
-
--- Michel Mauny
-
diff --git a/camlp4/unmaintained/lefteval/pa_lefteval.ml b/camlp4/unmaintained/lefteval/pa_lefteval.ml
deleted file mode 100644 (file)
index 56ad297..0000000
+++ /dev/null
@@ -1,241 +0,0 @@
-(* pa_r.cmo q_MLast.cmo pr_dump.cmo *)
-(***********************************************************************)
-(*                                                                     *)
-(*                               Camlp4                                *)
-(*                                                                     *)
-(*    Daniel de Rauglaudre, projet Cristal, INRIA Rocquencourt         *)
-(*                                                                     *)
-(*  Copyright 2002 Institut National de Recherche en Informatique et   *)
-(*  en Automatique.  All rights reserved.  This file is distributed    *)
-(*  under the terms of the GNU Library General Public License, with    *)
-(*  the special exception on linking described in file                 *)
-(*   ../../../LICENSE.                                                 *)
-(*                                                                     *)
-(***********************************************************************)
-
-
-value not_impl name x =
-  let desc =
-    if Obj.is_block (Obj.repr x) then
-      "tag = " ^ string_of_int (Obj.tag (Obj.repr x))
-    else "int_val = " ^ string_of_int (Obj.magic x)
-  in
-  failwith ("pa_lefteval: not impl: " ^ name ^ "; " ^ desc ^ ">")
-;
-
-value rec expr_fa al =
-  fun
-  [ <:expr< $f$ $a$ >> -> expr_fa [a :: al] f
-  | f -> (f, al) ]
-;
-
-(* generating let..in before functions calls which evaluates
-   several (more than one) of their arguments *)
-
-value no_side_effects_ht =
-  let ht = Hashtbl.create 73 in
-  do {
-    List.iter (fun s -> Hashtbl.add ht s True)
-      ["<"; "="; "@"; "^"; "+"; "-"; "ref"];
-    ht
-  }
-;
-
-value no_side_effects =
-  fun
-  [ <:expr< $uid:_$ >> -> True
-  | <:expr< $uid:_$ . $uid:_$ >> -> True
-  | <:expr< $lid:s$ >> ->
-      try Hashtbl.find no_side_effects_ht s with [ Not_found -> False ]
-  | _ -> False ]
-;
-
-value rec may_side_effect =
-  fun
-  [ <:expr< $lid:_$ >> | <:expr< $uid:_$ >> | <:expr< $str:_$ >> |
-    <:expr< $chr:_$ >> | <:expr< $int:_$ >> | <:expr< $flo:_$ >> |
-    <:expr< $_$ . $_$ >> | <:expr< fun [ $list:_$ ] >> ->
-      False
-  | <:expr< ($list:el$) >> -> List.exists may_side_effect el
-  | <:expr< $_$ $_$ >> as e ->
-      let (f, el) = expr_fa [] e in
-      not (no_side_effects f) || List.exists may_side_effect el
-  | _ -> True ]
-;
-
-value rec may_be_side_effect_victim =
-  fun
-  [ <:expr< $lid:_$ . $_$ >> -> True
-  | <:expr< $uid:_$ . $e$ >> -> may_be_side_effect_victim e
-  | _ -> False ]
-;
-
-value rec may_depend_on_order el =
-  loop False False el where rec loop
-    side_effect_found side_effect_victim_found =
-    fun
-    [ [e :: el] ->
-        if may_side_effect e then
-          if side_effect_found || side_effect_victim_found then True
-          else loop True True el
-        else if may_be_side_effect_victim e then
-          if side_effect_found then True else loop False True el
-        else loop side_effect_found side_effect_victim_found el
-    | [] -> False ]
-;
-
-value gen_let_in loc expr el =
-  let (pel, el) =
-    loop 0 (List.rev el) where rec loop n =
-      fun
-      [ [e :: el] ->
-          if may_side_effect e || may_be_side_effect_victim e then
-            if n = 0 then
-              let (pel, el) = loop 1 el in
-              (pel, [expr e :: el])
-            else
-              let id = "xxx" ^ string_of_int n in
-              let (pel, el) = loop (n + 1) el in
-              ([(<:patt< $lid:id$ >>, expr e) :: pel],
-               [<:expr< $lid:id$ >> :: el])
-          else
-            let (pel, el) = loop n el in
-            (pel, [expr e :: el])
-      | [] -> ([], []) ]
-  in
-  match List.rev el with
-  [ [e :: el] -> (pel, e, el)
-  | _ -> assert False ]
-;
-
-value left_eval_apply loc expr e1 e2 =
-  let (f, el) = expr_fa [] <:expr< $e1$ $e2$ >> in
-  if not (may_depend_on_order [f :: el]) then <:expr< $expr e1$ $expr e2$ >>
-  else
-    let (pel, e, el) = gen_let_in loc expr [f :: el] in
-    let e = List.fold_left (fun e e1 -> <:expr< $e$ $e1$ >>) e el in
-    List.fold_left (fun e (p1, e1) -> <:expr< let $p1$ = $e1$ in $e$ >>) e pel
-;
-
-value left_eval_tuple loc expr el =
-  if not (may_depend_on_order el) then <:expr< ($list:List.map expr el$) >>
-  else
-    let (pel, e, el) = gen_let_in loc expr el in
-    List.fold_left (fun e (p1, e1) -> <:expr< let $p1$ = $e1$ in $e$ >>)
-      <:expr< ($list:[e :: el]$) >> pel
-;
-
-value left_eval_record loc expr lel =
-  let el = List.map snd lel in
-  if not (may_depend_on_order el) then
-    let lel = List.map (fun (p, e) -> (p, expr e)) lel in
-    <:expr< { $list:lel$ } >>
-  else
-    let (pel, e, el) = gen_let_in loc expr el in
-    let e =
-      let lel = List.combine (List.map fst lel) [e :: el] in
-      <:expr< { $list:lel$ } >>
-    in
-    List.fold_left (fun e (p1, e1) -> <:expr< let $p1$ = $e1$ in $e$ >>) e pel
-;
-
-value left_eval_assign loc expr e1 e2 = <:expr< $e1$ := $expr e2$ >>;
-
-(* scanning the input tree, calling "left_eval_*" functions if necessary *)
-
-value map_option f =
-  fun
-  [ Some x -> Some (f x)
-  | None -> None ]
-;
-
-value class_infos f ci =
-  {MLast.ciLoc = ci.MLast.ciLoc; MLast.ciVir = ci.MLast.ciVir;
-   MLast.ciPrm = ci.MLast.ciPrm; MLast.ciNam = ci.MLast.ciNam;
-   MLast.ciExp = f ci.MLast.ciExp}
-;
-
-value rec expr x =
-  let loc = MLast.loc_of_expr x in
-  match x with
-  [ <:expr< fun [ $list:pwel$ ] >> ->
-      <:expr< fun [ $list:List.map match_assoc pwel$ ] >>
-  | <:expr< match $e$ with [ $list:pwel$ ] >> ->
-      <:expr< match $expr e$ with [ $list:List.map match_assoc pwel$ ] >>
-  | <:expr< try $e$ with [ $list:pwel$ ] >> ->
-      <:expr< try $expr e$ with [ $list:List.map match_assoc pwel$ ] >>
-  | <:expr< let $opt:rf$ $list:pel$ in $e$ >> ->
-      <:expr< let $opt:rf$ $list:List.map let_binding pel$ in $expr e$ >>
-  | <:expr< let module $s$ = $me$ in $e$ >> ->
-      <:expr< let module $s$ = $module_expr me$ in $expr e$ >>
-  | <:expr< if $e1$ then $e2$ else $e3$ >> ->
-      <:expr< if $expr e1$ then $expr e2$ else $expr e3$ >>
-  | <:expr< while $e$ do { $list:el$ } >> ->
-      <:expr< while $expr e$ do { $list:List.map expr el$ } >>
-  | <:expr< do { $list:el$ } >> -> <:expr< do { $list:List.map expr el$ } >>
-  | <:expr< $e$ # $s$ >> -> <:expr< $expr e$ # $s$ >>
-  | <:expr< ($e$ : $t$) >> -> <:expr< ($expr e$ : $t$) >>
-  | <:expr< $e1$ || $e2$ >> -> <:expr< $expr e1$ || $expr e2$ >>
-  | <:expr< $e1$ && $e2$ >> -> <:expr< $expr e1$ && $expr e2$ >>
-  | <:expr< $e1$ $e2$ >> -> left_eval_apply loc expr e1 e2
-  | <:expr< ($list:el$) >> -> left_eval_tuple loc expr el
-  | <:expr< { $list:lel$ } >> -> left_eval_record loc expr lel
-  | <:expr< $e1$ := $e2$ >> -> left_eval_assign loc expr e1 e2
-  | <:expr< $_$ . $_$ >> | <:expr< $uid:_$ >> | <:expr< $lid:_$ >> |
-    <:expr< $str:_$ >> | <:expr< $chr:_$ >> | <:expr< $int:_$ >> |
-    <:expr< $flo:_$ >> | <:expr< new $list:_$ >> ->
-      x
-  | x -> not_impl "expr" x ]
-and let_binding (p, e) = (p, expr e)
-and match_assoc (p, eo, e) = (p, map_option expr eo, expr e)
-and module_expr x =
-  let loc = MLast.loc_of_module_expr x in
-  match x with
-  [ <:module_expr< functor ($s$ : $mt$) -> $me$ >> ->
-      <:module_expr< functor ($s$ : $mt$) -> $module_expr me$ >>
-  | <:module_expr< ($me$ : $mt$) >> ->
-      <:module_expr< ($module_expr me$ : $mt$) >>
-  | <:module_expr< struct $list:sil$ end >> ->
-      <:module_expr< struct $list:List.map str_item sil$ end >>
-  | <:module_expr< $_$ . $_$ >> | <:module_expr< $_$ $_$ >> |
-    <:module_expr< $uid:_$ >> ->
-      x ]
-and str_item x =
-  let loc = MLast.loc_of_str_item x in
-  match x with
-  [ <:str_item< module $s$ = $me$ >> ->
-      <:str_item< module $s$ = $module_expr me$ >>
-  | <:str_item< value $opt:rf$ $list:pel$ >> ->
-      <:str_item< value $opt:rf$ $list:List.map let_binding pel$ >>
-  | <:str_item< declare $list:sil$ end >> ->
-      <:str_item< declare $list:List.map str_item sil$ end >>
-  | <:str_item< class $list:ce$ >> ->
-      <:str_item< class $list:List.map (class_infos class_expr) ce$ >>
-  | <:str_item< $exp:e$ >> -> <:str_item< $exp:expr e$ >>
-  | <:str_item< open $_$ >> | <:str_item< type $list:_$ >> |
-    <:str_item< exception $_$ of $list:_$ = $_$ >> |
-    <:str_item< module type $_$ = $_$ >> | <:str_item< # $_$ $opt:_$ >> ->
-      x
-  | x -> not_impl "str_item" x ]
-and class_expr x =
-  let loc = MLast.loc_of_class_expr x in
-  match x with
-  [ <:class_expr< object $opt:p$ $list:csil$ end >> ->
-      <:class_expr< object $opt:p$ $list:List.map class_str_item csil$ end >>
-  | x -> not_impl "class_expr" x ]
-and class_str_item x =
-  let loc = MLast.loc_of_class_str_item x in
-  match x with
-  [ <:class_str_item< value $opt:mf$ $s$ = $e$ >> ->
-      <:class_str_item< value $opt:mf$ $s$ = $expr e$ >>
-  | <:class_str_item< method $s$ = $e$ >> ->
-      <:class_str_item< method $s$ = $expr e$ >>
-  | x -> not_impl "class_str_item" x ]
-;
-
-value parse_implem = Pcaml.parse_implem.val;
-value parse_implem_with_left_eval strm =
-  let (r, b) = parse_implem strm in
-  (List.map (fun (si, loc) -> (str_item si, loc)) r, b)
-;
-Pcaml.parse_implem.val := parse_implem_with_left_eval;
diff --git a/camlp4/unmaintained/lib/.cvsignore b/camlp4/unmaintained/lib/.cvsignore
deleted file mode 100644 (file)
index c77a681..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-*.cm[oiax]
-*.cmxa
-*.lib
diff --git a/camlp4/unmaintained/lib/.depend b/camlp4/unmaintained/lib/.depend
deleted file mode 100644 (file)
index a779396..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-debug.cmo: debug.cmi 
-debug.cmx: debug.cmi 
-extfun.cmo: extfun.cmi 
-extfun.cmx: extfun.cmi 
-fstream.cmo: fstream.cmi 
-fstream.cmx: fstream.cmi 
-grammar.cmo: token.cmi plexer.cmi loc.cmi 
-grammar.cmx: token.cmx plexer.cmi loc.cmx 
-loc.cmo: loc.cmi 
-loc.cmx: loc.cmi 
-token.cmo: loc.cmi token.cmi 
-token.cmx: loc.cmx token.cmi 
-plexer.cmi: token.cmi loc.cmi 
-token.cmi: loc.cmi 
diff --git a/camlp4/unmaintained/lib/Makefile b/camlp4/unmaintained/lib/Makefile
deleted file mode 100644 (file)
index 3d5be9b..0000000
+++ /dev/null
@@ -1,52 +0,0 @@
-
-
-include ../config/Makefile.cnf
-
-INCLUDES=-I $(OTOP)/parsing -I $(OTOP)/utils
-LIBRARIES=gramlib.cma
-OBJS=$(OTOP)/utils/misc.cmo $(OTOP)/parsing/linenum.cmo                \
-     $(OTOP)/utils/warnings.cmo $(OTOP)/parsing/location.cmo   \
-     $(OTOP)/utils/config.cmo debug.cmo loc.cmo                        \
-     token.cmo lexer_token.cmo lexer_error.cmo                 \
-     plexer.cmo grammar.cmo extfun.cmo                         \
-     fstream.cmo
-CLEANFILES=plexer.ml
-
-include ../config/Makefile.base
-
-debug.cmo: debug.cmi
-debug.cmo: debug.ml
-       $(OCAMLC) -pp '$(CAMLP4BOOT)' -rectypes $(OCAMLCFLAGS) $< -c -o $@
-
-plexer.cmo: plexer.ml plexer.cmi
-       $(OCAMLC) $(OCAMLCFLAGS) $< -c -o $@
-
-plexer.cmx: plexer.ml plexer.cmi
-       $(OCAMLOPT) $(OCAMLCFLAGS) $< -c -o $@
-
-$(LIBRARIES): $(OBJS)
-       $(OCAMLC) -linkall $(OBJS) -a -o $(LIBRARIES)
-
-$(LIBRARIESX): $(OBJSX)
-       $(OCAMLOPT) -linkall $(OBJSX) -a -o $(LIBRARIESX)
-
-$(LIBRARIESP): $(OBJSP)
-       $(OCAMLOPT) -linkall $(OBJSP) -a -o $(LIBRARIESP)
-
-install-local:
-       -$(MKDIR) "$(LIBDIR)/camlp4"
-       cp $(LIBRARIES) *.mli "$(LIBDIR)/camlp4/."
-       cp *.cmi "$(LIBDIR)/camlp4/."
-       test -f $(LIBRARIESX) && $(MAKE) installopt LIBDIR="$(LIBDIR)" || true
-
-installopt:
-       for f in $(LIBRARIESX) $(LIBRARIESP) *.cmx ; do \
-               test -f $$f && cp $$f "$(LIBDIR)/camlp4/." || true ; \
-       done
-       # Special treatment for this one: some versions of make don't like $(A) in $(TARGET:.cma=.$(A)) 
-       target="`echo $(LIBRARIES) | sed -e 's/\.cma$$/.$(A)/'`" ; \
-          if test -f $$target ; then \
-             cp $$target "$(LIBDIR)/camlp4/." && ( cd "$(LIBDIR)/camlp4/." && $(RANLIB) $$target ) \
-         fi
-
-include .depend
diff --git a/camlp4/unmaintained/lib/extfun.ml b/camlp4/unmaintained/lib/extfun.ml
deleted file mode 100644 (file)
index 4f4cbbd..0000000
+++ /dev/null
@@ -1,107 +0,0 @@
-(* camlp4r *)
-
-(* Copyright 2001 INRIA *)
-
-(* Extensible Functions *)
-
-type t 'a 'b = list (matching 'a 'b)
-and matching 'a 'b = { patt : patt; has_when : bool; expr : expr 'a 'b }
-and patt =
-  [ Eapp of list patt
-  | Eacc of list patt
-  | Econ of string
-  | Estr of string
-  | Eint of string
-  | Etup of list patt
-  | Evar of unit ]
-and expr 'a 'b = 'a -> option 'b
-;
-
-exception Failure;
-
-value empty = [];
-
-(*** Apply ***)
-
-value rec apply_matchings a =
-  fun
-  [ [m :: ml] ->
-      match m.expr a with
-      [ None -> apply_matchings a ml
-      | x -> x ]
-  | [] -> None ]
-;
-
-value apply ef a =
-  match apply_matchings a ef with
-  [ Some x -> x
-  | None -> raise Failure ]
-;
-
-(*** Trace ***)
-
-value rec list_iter_sep f s =
-  fun
-  [ [] -> ()
-  | [x] -> f x
-  | [x :: l] -> do { f x; s (); list_iter_sep f s l } ]
-;
-
-value rec print_patt =
-  fun
-  [ Eapp pl -> list_iter_sep print_patt2 (fun () -> print_string " ") pl
-  | p -> print_patt2 p ]
-and print_patt2 =
-  fun
-  [ Eacc pl -> list_iter_sep print_patt1 (fun () -> print_string ".") pl
-  | p -> print_patt1 p ]
-and print_patt1 =
-  fun
-  [ Econ s -> print_string s
-  | Estr s -> do { print_string "\""; print_string s; print_string "\"" }
-  | Eint s -> print_string s
-  | Evar () -> print_string "_"
-  | Etup pl ->
-      do {
-        print_string "(";
-        list_iter_sep print_patt (fun () -> print_string ", ") pl;
-        print_string ")"
-      }
-  | Eapp _ | Eacc _ as p ->
-      do { print_string "("; print_patt p; print_string ")" } ]
-;
-
-value print ef =
-  List.iter
-    (fun m ->
-       do {
-         print_patt m.patt;
-         if m.has_when then print_string " when ..." else ();
-         print_newline ()
-       })
-    ef
-;
-
-(*** Extension ***)
-
-value insert_matching matchings (patt, has_when, expr) =
-  let m1 = {patt = patt; has_when = has_when; expr = expr} in
-  let rec loop =
-    fun
-    [ [m :: ml] as gml ->
-        if m1.has_when && not m.has_when then [m1 :: gml] else
-        if not m1.has_when && m.has_when then [m :: loop ml] else
-        (* either both or none have a when clause *)
-        if compare m1.patt m.patt = 0 then 
-          if not m1.has_when then [m1 :: ml] else [m1 :: gml]
-        else [m :: loop ml]
-    | [] -> [m1] ]
-  in
-  loop matchings
-;
-
-(* available extension function *)
-
-value extend ef matchings_def =
-  List.fold_left insert_matching ef matchings_def
-;
diff --git a/camlp4/unmaintained/lib/extfun.mli b/camlp4/unmaintained/lib/extfun.mli
deleted file mode 100644 (file)
index 6d71fc1..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-(* camlp4r *)
-
-
-(** Extensible functions.
-
-   This module implements pattern matching extensible functions.
-   To extend, use syntax [pa_extfun.cmo]:
-
-      [extfun e with [ pattern_matching ]] *)
-
-type t 'a 'b = 'x;
-   (** The type of the extensible functions of type ['a -> 'b] *)
-value empty : t 'a 'b;
-   (** Empty extensible function *)
-value apply : t 'a 'b -> 'a -> 'b;
-   (** Apply an extensible function *)
-exception Failure;
-   (** Match failure while applying an extensible function *)
-value print : t 'a 'b -> unit;
-   (** Print patterns in the order they are recorded *)
-
-(**/**)
-
-type patt =
-  [ Eapp of list patt
-  | Eacc of list patt
-  | Econ of string
-  | Estr of string
-  | Eint of string
-  | Etup of list patt
-  | Evar of unit ]
-and expr 'a 'b = 'a -> option 'b
-;
-
-value extend : t 'a 'b -> list (patt * bool * expr 'a 'b) -> t 'a 'b;
diff --git a/camlp4/unmaintained/lib/fstream.ml b/camlp4/unmaintained/lib/fstream.ml
deleted file mode 100644 (file)
index 8c3171a..0000000
+++ /dev/null
@@ -1,77 +0,0 @@
-(* camlp4r *)
-
-(* Copyright 2001 INRIA *)
-
-type t 'a = { count : int; data : Lazy.t (data 'a) }
-and data 'a =
-  [ Nil
-  | Cons of 'a and t 'a
-  | App of t 'a and t 'a ]
-;
-
-value from f =
-  loop 0 where rec loop i =
-    {count = 0;
-     data =
-       lazy
-         (match f i with
-          [ Some x -> Cons x (loop (i + 1))
-          | None -> Nil ])}
-;
-
-value rec next s =
-  let count = s.count + 1 in
-  match Lazy.force s.data with
-  [ Nil -> None
-  | Cons a s -> Some (a, {count = count; data = s.data})
-  | App s1 s2 ->
-      match next s1 with
-      [ Some (a, s1) -> Some (a, {count = count; data = lazy (App s1 s2)})
-      | None ->
-          match next s2 with
-          [ Some (a, s2) -> Some (a, {count = count; data = s2.data})
-          | None -> None ] ] ]
-;
-
-value empty s =
-  match next s with
-  [ Some _ -> None
-  | None -> Some ((), s) ]
-;
-
-value nil = {count = 0; data = lazy Nil};
-value cons a s = Cons a s;
-value app s1 s2 = App s1 s2;
-value flazy f = {count = 0; data = Lazy.lazy_from_fun f};
-
-value of_list l =
-  List.fold_right (fun x s -> flazy (fun () -> cons x s)) l nil
-;
-
-value of_string s =
-  from (fun c -> if c < String.length s then Some s.[c] else None)
-;
-
-value of_channel ic =
-  from (fun _ -> try Some (input_char ic) with [ End_of_file -> None ])
-;
-
-value iter f =
-  do_rec where rec do_rec strm =
-    match next strm with
-    [ Some (a, strm) ->
-        let _ = f a in
-        do_rec strm
-    | None -> () ]
-;
-
-value count s = s.count;
-
-value count_unfrozen s =
-  loop 0 s where rec loop cnt s =
-    if Lazy.lazy_is_val s.data then
-      match Lazy.force s.data with
-      [ Cons _ s -> loop (cnt + 1) s
-      | _ -> cnt ]
-    else cnt
-;
diff --git a/camlp4/unmaintained/lib/fstream.mli b/camlp4/unmaintained/lib/fstream.mli
deleted file mode 100644 (file)
index 723389a..0000000
+++ /dev/null
@@ -1,60 +0,0 @@
-(* camlp4r *)
-
-
-(* Module [Fstream]: functional streams *)
-
-(* This module implement functional streams.
-   To be used with syntax [pa_fstream.cmo]. The syntax is:
--     stream: [fstream [: ... :]]
--     parser: [parser [ [: ... :] -> ... | ... ]]
-
-   Functional parsers are of type: [Fstream.t 'a -> option ('a * Fstream.t 'a)]
-
-   They have limited backtrack, i.e if a rule fails, the next rule is tested
-   with the initial stream; limited because when in case of a rule with two
-   consecutive symbols [a] and [b], if [b] fails, the rule fails: there is
-   no try with the next rule of [a].
-*)
-
-type t 'a = 'x;
-    (* The type of 'a functional streams *)
-value from : (int -> option 'a) -> t 'a;
-    (* [Fstream.from f] returns a stream built from the function [f].
-       To create a new stream element, the function [f] is called with
-       the current stream count. The user function [f] must return either
-       [Some <value>] for a value or [None] to specify the end of the
-       stream. *)
-
-value of_list : list 'a -> t 'a;
-    (* Return the stream holding the elements of the list in the same
-       order. *)
-value of_string : string -> t char;
-    (* Return the stream of the characters of the string parameter. *)
-value of_channel : in_channel -> t char;
-    (* Return the stream of the characters read from the input channel. *)
-
-value iter : ('a -> unit) -> t 'a -> unit;
-    (* [Fstream.iter f s] scans the whole stream s, applying function [f]
-       in turn to each stream element encountered. *)
-
-value next : t 'a -> option ('a * t 'a);
-    (* Return [Some (a, s)] where [a] is the first element of the stream
-       and [s] the remaining stream, or [None] if the stream is empty. *)
-value empty : t 'a -> option (unit * t 'a);
-    (* Return [Some ((), s)] if the stream is empty where [s] is itself,
-       else [None] *)
-value count : t 'a -> int;
-    (* Return the current count of the stream elements, i.e. the number
-       of the stream elements discarded. *)
-value count_unfrozen : t 'a -> int;
-    (* Return the number of unfrozen elements in the beginning of the
-       stream; useful to determine the position of a parsing error (longuest
-       path). *)
-
-(*--*)
-
-value nil : t 'a;
-type data 'a = 'x;
-value cons : 'a -> t 'a -> data 'a;
-value app : t 'a -> t 'a -> data 'a;
-value flazy : (unit -> data 'a) -> t 'a;
diff --git a/camlp4/unmaintained/ocamllex/Makefile b/camlp4/unmaintained/ocamllex/Makefile
deleted file mode 100644 (file)
index 1407c40..0000000
+++ /dev/null
@@ -1,60 +0,0 @@
-#########################################################################
-#                                                                       #
-#                                 OCaml                                 #
-#                                                                       #
-#                                Camlp4                                 #
-#                                                                       #
-#   Copyright 2004 Institut National de Recherche en Informatique et    #
-#   en Automatique.  All rights reserved.  This file is distributed     #
-#   under the terms of the GNU Library General Public License, with     #
-#   the special exception on linking described in file ../../../LICENSE.#
-#                                                                       #
-#########################################################################
-#
-# Makefile for pa_ocamllex
-# M.Mauny
-#
-
-include ../../config/Makefile.cnf
-
-OCAMLTOP=../../..
-
-CAMLP4=../../camlp4/camlp4$(EXE)
-
-OCAMLC=$(OCAMLTOP)/ocamlc$(EXE)
-OCAMLOPT=$(OCAMLTOP)/ocamlopt$(EXE)
-
-P4INCLUDES= -nolib -I ../../etc -I ../../meta
-OCAMLINCLUDES= -nostdlib -I $(OCAMLTOP)/stdlib -I ../../camlp4 -I ../../lib -I $(OCAMLTOP)/lex
-OCAMLCFLAGS=-warn-error A $(OCAMLINCLUDES)
-
-SRC=pa_ocamllex.ml
-OBJS=pa_ocamllex.cmo
-OBJSX=$(OBJS:.cmo=.cmx)
-
-all: $(OBJS) pa_ocamllex.cma
-
-opt: $(OBJSX) pa_ocamllex.cmxa
-
-pa_ocamllex.cma: pa_ocamllex.cmo
-       $(OCAMLC) $(OCAMLCFLAGS) cset.cmo syntax.cmo table.cmo lexgen.cmo compact.cmo pa_ocamllex.cmo -a -o pa_ocamllex.cma
-
-pa_ocamllex.cmxa: pa_ocamllex.cmo
-       $(OCAMLOPT) $(OCAMLCFLAGS) cset.cmx syntax.cmx table.cmx lexgen.cmx compact.cmx pa_ocamllex.cmx -a -o pa_ocamllex.cmxa
-
-clean:
-       rm -f *.cm* *.$(O) *.$(A) *.bak .*.bak
-
-depend:
-
-.SUFFIXES: .cmx .cmo .cmi .ml .mli
-
-.mli.cmi:
-       $(OCAMLC) $(OCAMLCFLAGS) -c $<
-
-
-.ml.cmo:
-       $(OCAMLC) $(OCAMLCFLAGS) -pp "$(CAMLP4) $(P4INCLUDES) `awk 'NR == 1 { ORS=" "; for (i=2; i < NF; i++) print $$i; } ' $<`" -c $<
-
-.ml.cmx:
-       $(OCAMLOPT) $(OCAMLCFLAGS) -pp "$(CAMLP4) $(P4INCLUDES) `awk 'NR == 1 { ORS=" "; for (i=2; i < NF; i++) print $$i; } ' $<`" -c $<
diff --git a/camlp4/unmaintained/ocamllex/README b/camlp4/unmaintained/ocamllex/README
deleted file mode 100644 (file)
index 830402b..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-This is an application of or an extension for Camlp4. Although it is
-currently distributed with OCaml/Camlp4, it may or may not be
-actively maintained.
-
-It probably won't be part of future OCaml/Camlp4 distributions but be
-accessible from the Camlp4 hump. If you are interested in developing
-this package further and/or actively maintain it, please let us know
-(caml@inria.fr)
-
-This package is distributed under the same license as the OCaml
-Library (that is, LGPL with a special exception allowing both
-static and dynamic link).
-
--- Michel Mauny
-
diff --git a/camlp4/unmaintained/ocamllex/pa_ocamllex.ml b/camlp4/unmaintained/ocamllex/pa_ocamllex.ml
deleted file mode 100644 (file)
index e1d4a8e..0000000
+++ /dev/null
@@ -1,356 +0,0 @@
-(* pa_o.cmo q_MLast.cmo pa_extend.cmo pr_dump.cmo *)
-(***********************************************************************)
-(*                                                                     *)
-(*                               Camlp4                                *)
-(*                                                                     *)
-(*     Alain Frisch, projet Cristal, INRIA Rocquencourt                *)
-(*                                                                     *)
-(*  Copyright 2002 Institut National de Recherche en Informatique et   *)
-(*  en Automatique.  All rights reserved.  This file is distributed    *)
-(*  under the terms of the GNU Library General Public License, with    *)
-(*  the special exception on linking described in file                 *)
-(*   ../../../LICENSE.                                                 *)
-(*                                                                     *)
-(***********************************************************************)
-
-
-open Syntax
-open Lexgen
-open Compact
-
-(* Adapted from output.ml *)
-(**************************)
-
-(* Output the DFA tables and its entry points *)
-
-(* To output an array of short ints, encoded as a string *)
-
-let output_byte buf b =
-  Buffer.add_char buf '\\';
-  Buffer.add_char buf (Char.chr(48 + b / 100));
-  Buffer.add_char buf (Char.chr(48 + (b / 10) mod 10));
-  Buffer.add_char buf (Char.chr(48 + b mod 10))
-
-let loc = (Lexing.dummy_pos,Lexing.dummy_pos)
-
-let output_array v =
-  let b = Buffer.create (Array.length v * 3) in
-  for i = 0 to Array.length v - 1 do
-    output_byte b (v.(i) land 0xFF);
-    output_byte b ((v.(i) asr 8) land 0xFF);
-    if i land 7 = 7 then Buffer.add_string b "\\\n    "
-  done;
-  let s = Buffer.contents b in
-  <:expr< $str:s$ >>
-
-let output_byte_array v =
-  let b = Buffer.create (Array.length v * 2) in
-  for i = 0 to Array.length v - 1 do
-    output_byte b (v.(i) land 0xFF);
-    if i land 15 = 15 then Buffer.add_string b "\\\n    "
-  done;
-  let s = Buffer.contents b in
-  <:expr< $str:s$ >>
-
-
-
-(* Output the tables *)
-
-let output_tables tbl =
-  <:str_item< value lex_tables = {
-    Lexing.lex_base = $output_array tbl.tbl_base$;
-    Lexing.lex_backtrk = $output_array tbl.tbl_backtrk$;
-    Lexing.lex_default = $output_array tbl.tbl_default$;
-    Lexing.lex_trans = $output_array tbl.tbl_trans$;
-    Lexing.lex_check = $output_array tbl.tbl_check$;
-    Lexing.lex_base_code = $output_array tbl.tbl_base_code$;
-    Lexing.lex_backtrk_code = $output_array tbl.tbl_backtrk_code$;
-    Lexing.lex_default_code = $output_array tbl.tbl_default_code$;
-    Lexing.lex_trans_code = $output_array tbl.tbl_trans_code$;
-    Lexing.lex_check_code = $output_array tbl.tbl_check_code$;
-    Lexing.lex_code = $output_byte_array tbl.tbl_code$
-  } >>
-
-(* Output the entries *)
-
-let rec make_alias n = function
-  | [] -> []
-  | h::t -> 
-      (h, "__ocaml_lex_arg_" ^ (string_of_int n)) :: (make_alias (succ n) t)
-
-let abstraction =
-  List.fold_right (fun (p,a) e -> <:expr< fun ($p$ as $lid:a$) -> $e$ >>)
-
-
-let application =
-  List.fold_left (fun f (_,a) -> <:expr< $f$ $lid:a$ >>)
-
-let int i = <:expr< $int:string_of_int i$ >>
-
-let output_memory_actions acts = 
-  let aux = function
-    | Copy (tgt, src) -> 
-       <:expr< lexbuf.Lexing.lex_mem.($int tgt$) := 
-      lexbuf.Lexing.lex_mem.($int src$) >>
-    | Set tgt ->
-        <:expr< lexbuf.Lexing.lex_mem.($int tgt$) := 
-      lexbuf.Lexing.lex_curr_pos >>
-  in
-  <:expr< do { $list:List.map aux acts$ } >>
-
-let output_base_mem = function
-  | Mem i -> <:expr< lexbuf.Lexing.lex_mem.($int i$) >>
-  | Start -> <:expr< lexbuf.Lexing.lex_start_pos >>
-  | End   -> <:expr< lexbuf.Lexing.lex_curr_pos >>
-
-let output_tag_access = function
-  | Sum (a,0) -> output_base_mem a
-  | Sum (a,i) -> <:expr< $output_base_mem a$ + $int i$ >>
-
-let rec output_env e = function
-  | [] -> e
-  | (x, Ident_string (o,nstart,nend)) :: rem ->
-      <:expr< 
-         let $lid:x$ = 
-           Lexing.$lid:if o then "sub_lexeme_opt" else "sub_lexeme"$
-           lexbuf $output_tag_access nstart$ $output_tag_access nend$
-          in $output_env e rem$
-      >>
-  | (x, Ident_char (o,nstart)) :: rem ->
-      <:expr< 
-         let $lid:x$ = 
-           Lexing.$lid: if o then "sub_lexeme_char_opt" else "sub_lexeme_char"$
-           lexbuf $output_tag_access nstart$
-          in $output_env e rem$
-      >>
-
-let output_entry e =
-  let init_num, init_moves = e.auto_initial_state in
-  let args = make_alias 0 (e.auto_args @ [ <:patt< lexbuf >> ]) in
-  let f = "__ocaml_lex_rec_" ^ e.auto_name ^ "_rec" in
-  let call_f = application <:expr< $lid:f$ >> args in
-  let body_wrapper = 
-    <:expr< 
-      do {
-       lexbuf.Lexing.lex_mem := Array.create $int e.auto_mem_size$ (-1) ;
-       $output_memory_actions init_moves$;
-        $call_f$ $int init_num$
-      } >> in
-  let cases = 
-    List.map
-      (fun (num, env, (loc,e)) ->
-         <:patt< $int:string_of_int num$ >>, 
-        None, 
-        output_env <:expr< $e$ >> env
-            (* Note: the <:expr<...>> above is there to set the location *)
-      ) e.auto_actions @
-    [ <:patt< __ocaml_lex_n >>,
-      None,
-      <:expr< do 
-        { lexbuf.Lexing.refill_buff lexbuf; $call_f$ __ocaml_lex_n  }>> ]
-  in
-  let engine = 
-    if e.auto_mem_size = 0 
-    then <:expr< Lexing.engine >>
-    else <:expr< Lexing.new_engine >> in
-  let body = 
-    <:expr< fun state ->
-      match $engine$ lex_tables state lexbuf with [ $list:cases$ ] >> in
-  [
-    <:patt< $lid:e.auto_name$ >>, (abstraction args body_wrapper);
-    <:patt< $lid:f$ >>, (abstraction args body) 
-  ]
-
-(* Main output function *)
-
-exception Table_overflow
-
-let output_lexdef tables entry_points =
-  Printf.eprintf 
-    "pa_ocamllex: lexer found; %d states, %d transitions, table size %d bytes\n"
-    (Array.length tables.tbl_base)
-    (Array.length tables.tbl_trans)
-    (2 * (Array.length tables.tbl_base + Array.length tables.tbl_backtrk +
-          Array.length tables.tbl_default + Array.length tables.tbl_trans +
-          Array.length tables.tbl_check));
-  let size_groups =
-    (2 * (Array.length tables.tbl_base_code +
-          Array.length tables.tbl_backtrk_code +
-          Array.length tables.tbl_default_code +
-          Array.length tables.tbl_trans_code +
-          Array.length tables.tbl_check_code) +
-    Array.length tables.tbl_code) in
-  if  size_groups > 0 then
-    Printf.eprintf "pa_ocamllex: %d additional bytes used for bindings\n" 
-      size_groups ;
-  flush stderr;
-  if Array.length tables.tbl_trans > 0x8000 then raise Table_overflow;
-
-  let entries = List.map output_entry entry_points in
-  [output_tables tables; <:str_item< value rec $list:List.flatten entries$ >> ]
-
-
-(* Adapted from parser.mly and main.ml *)
-(***************************************)
-
-(* Auxiliaries for the parser. *)
-
-let char s = Char.code (Token.eval_char s)
-
-let named_regexps =
-  (Hashtbl.create 13 : (string, regular_expression) Hashtbl.t)
-
-let regexp_for_string s =
-  let rec re_string n =
-    if n >= String.length s then Epsilon
-    else if succ n = String.length s then
-      Characters (Cset.singleton (Char.code s.[n]))
-    else
-      Sequence
-        (Characters(Cset.singleton (Char.code s.[n])),
-         re_string (succ n))
-  in re_string 0
-
-let char_class c1 c2 = Cset.interval c1 c2
-
-let all_chars = Cset.all_chars
-
-let rec remove_as = function
-  | Bind (e,_) -> remove_as e
-  | Epsilon|Eof|Characters _ as e -> e
-  | Sequence (e1, e2) -> Sequence (remove_as e1, remove_as e2)
-  | Alternative (e1, e2) -> Alternative (remove_as e1, remove_as e2)
-  | Repetition e -> Repetition (remove_as e)
-
-let () =
-  Hashtbl.add named_regexps "eof" (Characters Cset.eof)
-
-(* The parser *)
-
-let let_regexp = Grammar.Entry.create Pcaml.gram "pa_ocamllex let"
-let header = Grammar.Entry.create Pcaml.gram "pa_ocamllex header"
-let lexer_def = Grammar.Entry.create Pcaml.gram "pa_ocaml lexerdef"
-
-EXTEND
- GLOBAL: Pcaml.str_item let_regexp header lexer_def;
-
- let_regexp: [
-   [ x = LIDENT; "="; r = regexp ->
-       if Hashtbl.mem named_regexps x then
-         Printf.eprintf 
-           "pa_ocamllex (warning): multiple definition of named regexp '%s'\n"
-           x;
-       Hashtbl.add named_regexps x r;
-   ]
- ];
-
- lexer_def: [
-   [ def = LIST0 definition SEP "and" ->
-       (try
-          let (entries, transitions) = make_dfa def in
-          let tables = compact_tables transitions in
-          let output = output_lexdef tables entries in
-          <:str_item< declare $list: output$ end >> 
-        with 
-         |Table_overflow ->
-             failwith "Transition table overflow in lexer, automaton is too big"
-         | Lexgen.Memory_overflow ->
-              failwith "Position memory overflow in lexer, too many as variables")
-   ]
- ];
-
-
- Pcaml.str_item: [
-   [ "pa_ocamllex"; LIDENT "rule"; d = lexer_def -> d
-   | "pa_ocamllex"; "let"; let_regexp -> 
-       <:str_item< declare $list: []$ end >>
-   ]
- ];
- definition: [
-   [ x=LIDENT; pl = LIST0 Pcaml.patt LEVEL "simple"; "=";
-     short=[ LIDENT "parse" -> false | LIDENT "shortest" -> true ];
-     OPT "|"; l = LIST0 [ r=regexp; a=action -> (r,a) ] SEP "|" ->
-     { name=x ; shortest=short ; args=pl ; clauses = l } ]
- ];
-
- action: [
-   [ "{"; e = OPT Pcaml.expr; "}" -> 
-       let e = match e with
-         | Some e -> e
-         | None -> <:expr< () >>
-       in
-       (loc,e)
-   ]
- ];
-
- header:  [
-   [ "{"; e = LIST0 [ si = Pcaml.str_item; OPT ";;" -> si ]; "}" -> 
-       [<:str_item< declare $list:e$ end>>, loc] ]
-   | [ -> [] ]
- ];
-
- regexp: [
-   [ r = regexp; "as"; i = LIDENT -> Bind (r,i) ]
- | [ r1 = regexp; "|"; r2 = regexp -> Alternative(r1,r2) ]
- | [ r1 = regexp; r2 = regexp -> Sequence(r1,r2) ]
- | [ r = regexp; "*" -> Repetition r
-   | r = regexp; "+" -> Sequence(Repetition (remove_as r), r)
-   | r = regexp; "?" -> Alternative(Epsilon, r)
-   | "("; r = regexp; ")" -> r
-   | "_" -> Characters all_chars
-   | c = CHAR -> Characters (Cset.singleton (char c))
-   | s = STRING -> regexp_for_string (Token.eval_string loc s)
-   | "["; cc = ch_class; "]" ->  Characters cc
-   | x = LIDENT ->
-       try  Hashtbl.find named_regexps x
-       with Not_found ->
-         failwith 
-           ("pa_ocamllex (error): reference to unbound regexp name `"^x^"'")
-   ]
- ];
-
- ch_class: [
-   [ "^"; cc = ch_class -> Cset.complement cc]
- | [ c1 = CHAR; "-"; c2 = CHAR -> Cset.interval (char c1) (char c2)
-   | c = CHAR -> Cset.singleton (char c)
-   | cc1 = ch_class; cc2 = ch_class -> Cset.union cc1 cc2
-   ]
- ];
-END
-
-(* We have to be careful about "rule"; in standalone mode,
-   it is used as a keyword (otherwise, there is a conflict
-   with named regexp); in normal mode, it is used as LIDENT
-   (we do not want to reserve such an useful identifier).
-
-   Plexer does not like identifiers used as keyword _and_
-   as LIDENT ...
-*)
-
-let standalone =
-  let already = ref false in
-  fun () ->
-    if not (!already) then
-    begin
-      already := true;
-      Printf.eprintf "pa_ocamllex: stand-alone mode\n";
-
-      DELETE_RULE Pcaml.str_item: "pa_ocamllex"; LIDENT "rule";lexer_def END;
-      DELETE_RULE Pcaml.str_item: "pa_ocamllex"; "let"; let_regexp END;
-      let ocamllex = Grammar.Entry.create Pcaml.gram "pa_ocamllex" in
-      EXTEND GLOBAL: ocamllex let_regexp header lexer_def;
-      ocamllex: [
-        [ h = header;
-          l  = [LIST0 ["let"; let_regexp]; "rule"; d = lexer_def -> (d,loc)];
-          t = header; EOI -> h @ (l :: t) ,false
-        ]
-      ];
-      END;
-      Pcaml.parse_implem := Grammar.Entry.parse ocamllex
-    end
-
-let () =
-  Pcaml.add_option "-ocamllex" (Arg.Unit standalone)
-    "Activate (standalone) ocamllex emulation mode."
-
diff --git a/camlp4/unmaintained/ocpp/.depend b/camlp4/unmaintained/ocpp/.depend
deleted file mode 100644 (file)
index e69de29..0000000
diff --git a/camlp4/unmaintained/ocpp/.ignore b/camlp4/unmaintained/ocpp/.ignore
deleted file mode 100644 (file)
index f992267..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-ocpp
-crc.ml
diff --git a/camlp4/unmaintained/ocpp/Makefile b/camlp4/unmaintained/ocpp/Makefile
deleted file mode 100644 (file)
index b92fa3c..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-
-
-include ../config/Makefile.cnf
-
-EXECUTABLES=ocpp
-OBJS=ocpp.cmo
-INCLUDES=-I ../camlp4 -I ../lib -I ../odyl -I $(OTOP)/otherlibs/dynlink
-OCPPM=../lib/debug.cmo ../lib/loc.cmo ../lib/stdpp.cmo ../camlp4/quotation.cmo
-
-include ../config/Makefile.base
-
-ocpp$(EXE): $(OBJS)
-       $(OCAMLC) $(LINKFLAGS) $(OCPPM) ../odyl/odyl.cma $(OBJS) ../odyl/odyl.cmo -linkall -o $@
-
-ocpp.opt: $(OBJSX)
-       $(OCAMLOPT) $(LINKFLAGS) $(OCPPM:.cmo=.cmx) ../odyl/odyl.cmxa $(OBJSX) ../odyl/odyl.cmx -linkall -o $@
-
-install-local:
-       -$(MKDIR) "$(LIBDIR)/camlp4" "$(BINDIR)"
-       cp $(OBJS) "$(LIBDIR)/camlp4/."
-       cp ocpp$(EXE) "$(BINDIR)/."
-       if test -f ocpp.opt ; then \
-         cp ocpp.opt "$(LIBDIR)/camlp4/." ; \
-       fi
diff --git a/camlp4/unmaintained/ocpp/ocpp.ml b/camlp4/unmaintained/ocpp/ocpp.ml
deleted file mode 100644 (file)
index eb2ccdf..0000000
+++ /dev/null
@@ -1,129 +0,0 @@
-(* camlp4r *)
-(***********************************************************************)
-(*                                                                     *)
-(*                             Camlp4                                  *)
-(*                                                                     *)
-(*        Daniel de Rauglaudre, projet Cristal, INRIA Rocquencourt     *)
-(*                                                                     *)
-(*  Copyright 2002 Institut National de Recherche en Informatique et   *)
-(*  Automatique.  Distributed only by permission.                      *)
-(*                                                                     *)
-(***********************************************************************)
-
-
-
-
-value buff = ref (String.create 80);
-value store len x =
-  do {
-    if len >= String.length buff.val then
-      buff.val := buff.val ^ String.create (String.length buff.val)
-    else ();
-    buff.val.[len] := x;
-    succ len
-  }
-;
-value get_buff len = String.sub buff.val 0 len;
-
-value rec copy_strip_locate cs =
-  match cs with parser
-  [ [: `'$' :] -> maybe_locate cs
-  | [: `c :] -> do { print_char c; copy_strip_locate cs }
-  | [: :] -> () ]
-and maybe_locate cs =
-  match cs with parser
-  [ [: `'1'..'9' :] -> locate cs
-  | [: :] -> do { print_char '$'; copy_strip_locate cs } ]
-and locate cs =
-  match cs with parser
-  [ [: `'0'..'9' :] -> locate cs
-  | [: `':' :] -> inside_locate cs
-  | [: :] -> raise (Stream.Error "colon char expected") ]
-and inside_locate cs =
-  match cs with parser
-  [ [: `'$' :] -> copy_strip_locate cs
-  | [: `'\\'; `c :] -> do { print_char c; inside_locate cs }
-  | [: `c :] -> do { print_char c; inside_locate cs }
-  | [: :] -> raise (Stream.Error "end of file in locate directive") ]
-;
-
-value file = ref "";
-
-value quot name loc str =
-  let loc = Loc.move `stop (String.length str) loc in
-  let exp =
-    try
-      match Quotation.find name with
-      [ Quotation.ExStr f -> f
-      | _ -> raise Not_found ]
-    with
-    [ Not_found -> Stdpp.raise_with_loc loc Not_found ]
-  in
-  let new_str =
-    try exp True { Quotation.loc = Loc.mk file.val ; loc_name_opt = None } str with
-    [ Loc.Exc_located loc exc -> Stdpp.raise_with_loc loc exc
-    | exc -> Stdpp.raise_with_loc loc exc ]
-  in
-  let cs = Stream.of_string new_str in copy_strip_locate cs
-;
-
-value rec ident len =
-  parser
-  [ [: `('A'..'Z' | 'a'..'z' | '0'..'9' | '_' | ''' as c); s :] ->
-      ident (store len c) s
-  | [: :] -> get_buff len ]
-;
-
-value loc_of_ep ep =
-  Loc.set_all `start 1 0 ep (Loc.mk file.val);
-
-value rec copy cs =
-  match cs with parser
-  [ [: `'<' :] -> maybe_quot cs
-  | [: `'"' :] -> do { print_char '"'; inside_string cs }
-  | [: `c :] -> do { print_char c; copy cs }
-  | [: :] -> () ]
-and maybe_quot cs =
-  match cs with parser
-  [ [: `'<' :] ep -> inside_quot "" (loc_of_ep ep) 0 cs
-  | [: `':'; i = ident 0; `'<' ?? "less char expected" :] ep ->
-      inside_quot i (loc_of_ep ep) 0 cs
-  | [: :] -> do { print_char '<'; copy cs } ]
-and inside_quot name loc len cs =
-  match cs with parser
-  [ [: `'>' :] -> maybe_end_quot name loc len cs
-  | [: `c :] -> inside_quot name loc (store len c) cs
-  | [: :] -> raise (Stream.Error "end of file in quotation") ]
-and maybe_end_quot name loc len cs =
-  match cs with parser
-  [ [: `'>' :] -> do { quot name loc (get_buff len); copy cs }
-  | [: :] -> inside_quot name loc (store len '>') cs ]
-and inside_string cs =
-  match cs with parser
-  [ [: `'"' :] -> do { print_char '"'; copy cs }
-  | [: `c :] -> do { print_char c; inside_string cs }
-  | [: :] -> raise (Stream.Error "end of file in string") ]
-;
-
-value copy_quot cs = do { copy cs; flush stdout; };
-
-Arg.parse [] (fun x -> file.val := x) "ocpp <objects> <file>";
-
-value main () =
-  try
-    if file.val <> "" then
-      copy_quot (Stream.of_channel (open_in_bin file.val))
-    else ()
-  with exc ->
-    do {
-      Format.printf "@.";
-      raise
-        (match exc with
-         [ Loc.Exc_located loc exc ->
-           do { Format.eprintf "%a@." Loc.print loc; exc }
-         | exc -> exc ])
-    }
-;
-
-Odyl_main.name.val := "ocpp";
-Odyl_main.go.val := main;
diff --git a/camlp4/unmaintained/odyl/.depend b/camlp4/unmaintained/odyl/.depend
deleted file mode 100644 (file)
index a262944..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-odyl.cmo: odyl_main.cmi odyl_config.cmo 
-odyl.cmx: odyl_main.cmx odyl_config.cmx 
-odyl_main.cmo: odyl_config.cmo odyl_main.cmi 
-odyl_main.cmx: odyl_config.cmx odyl_main.cmi 
diff --git a/camlp4/unmaintained/odyl/.ignore b/camlp4/unmaintained/odyl/.ignore
deleted file mode 100644 (file)
index c270c79..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-odyl
-*.lib
-odyl_config.ml
diff --git a/camlp4/unmaintained/odyl/Makefile b/camlp4/unmaintained/odyl/Makefile
deleted file mode 100644 (file)
index f4f5d87..0000000
+++ /dev/null
@@ -1,61 +0,0 @@
-
-
-include ../config/Makefile.cnf
-
-EXECUTABLES=odyl
-INCLUDES=-I $(OTOP)/otherlibs/dynlink
-OBJS=odyl_config.cmo odyl_main.cmo
-OBJSX=odyl.cmx odyl.cmxa
-CLEANFILES=odyl_config.ml
-
-include ../config/Makefile.base
-
-odyl$(EXE): odyl.cma odyl.cmo
-       $(OCAMLC) odyl.cma odyl.cmo -o $@
-
-odyl.opt: odyl.cmxa odyl.cmx
-       $(OCAMLOPT) odyl.cmxa odyl.cmx -o $@
-
-odyl.cma: $(OBJS)
-       $(OCAMLC) $(LINKFLAGS) dynlink.cma $(OBJS) -a -o $@
-
-odyl.cmxa: $(OBJSX)
-       $(OCAMLOPT) $(LINKFLAGS) $(OBJSX) -a -o $@
-
-odyl.p.cmxa: $(OBJSP)
-       $(OCAMLOPT) $(LINKFLAGS) $(OBJSP) -a -o $@
-
-odyl_main.cmx: odyl_main.ml
-       $(CAMLP4BOOT) -nolib -DOPT -o odyl_main.ppo odyl_main.ml
-       $(OCAMLOPT) -c -impl odyl_main.ppo
-       rm -f odyl_main.ppo
-
-odyl_main.p.cmx: odyl_main.ml
-       $(CAMLP4BOOT) -nolib -DOPT -o odyl_main.ppo odyl_main.ml
-       $(OCAMLOPT) -p -c -o $@ -impl odyl_main.ppo
-       rm -f odyl_main.ppo
-
-odyl_config.ml:
-       (echo '(* camlp4r *)'; \
-        echo 'value standard_library ='; \
-        echo '  try Sys.getenv "CAMLP4LIB" with [ Not_found -> '; \
-        echo '  try Sys.getenv "OCAMLLIB" ^ "/camlp4" with [ Not_found -> '; \
-        echo '  try Sys.getenv "CAMLLIB" ^ "/camlp4" with [ Not_found -> '; \
-         echo '  "$(LIBDIR)/camlp4"]]];') \
-        | sed -e 's|\\|/|g' > odyl_config.ml
-
-install-local:
-       -$(MKDIR) "$(LIBDIR)/camlp4" "$(BINDIR)"
-       cp odyl.cmo odyl.cma odyl_main.cmi $(LIBDIR)/camlp4/.
-       for f in odyl.$(A) odyl.p.$(A)  ; do \
-          if test -f $$f ; then \
-               cp $$f "$(LIBDIR)/camlp4/."  && ( cd "$(LIBDIR)/camlp4/." && $(RANLIB) $$f ) ; \
-          fi ; \
-       done
-       for f in odyl.cmx odyl.o odyl.p.cmx odyl.p.o odyl.cmxa odyl.p.cmxa ; do \
-           if test -f $$f ; then \
-              cp $$f "$(LIBDIR)/camlp4/." ; \
-           fi ; \
-       done
-
-include .depend
diff --git a/camlp4/unmaintained/odyl/odyl.ml b/camlp4/unmaintained/odyl/odyl.ml
deleted file mode 100644 (file)
index 23b7136..0000000
+++ /dev/null
@@ -1,57 +0,0 @@
-(* camlp4r *)
-(***********************************************************************)
-(*                                                                     *)
-(*                             Camlp4                                  *)
-(*                                                                     *)
-(*        Daniel de Rauglaudre, projet Cristal, INRIA Rocquencourt     *)
-(*                                                                     *)
-(*  Copyright 2001 Institut National de Recherche en Informatique et   *)
-(*  Automatique.  Distributed only by permission.                      *)
-(*                                                                     *)
-(***********************************************************************)
-
-
-
-value apply_load () =
-  let i = ref 1 in
-  let stop = ref False in
-  while not stop.val && i.val < Array.length Sys.argv do {
-    let s = Sys.argv.(i.val) in
-    if s = "-I" && i.val + 1 < Array.length Sys.argv then do {
-      Odyl_main.directory Sys.argv.(i.val + 1);
-      i.val := i.val + 2
-    }
-    else if s = "-nolib" then do { Odyl_main.nolib.val := True; incr i }
-    else if s = "-where" then do {
-      print_string Odyl_config.standard_library;
-      print_newline ();
-      flush stdout;
-      exit 0
-    }
-    else if s = "-version" then do {
-      print_string Sys.ocaml_version;
-      print_newline ();
-      flush stdout;
-      exit 0
-    }
-    else if s = "--" then do { incr i; stop.val := True; () }
-    else if String.length s > 0 && s.[0] == '-' then stop.val := True
-    else if Filename.check_suffix s ".cmo" || Filename.check_suffix s ".cma"
-    then do { Odyl_main.loadfile s; incr i }
-    else stop.val := True
-  }
-;
-
-value main () =
-  try do { apply_load () ; Odyl_main.go.val () } with
-  [ Odyl_main.Error fname str ->
-      do {
-        flush stdout;
-        Printf.eprintf "Error while loading \"%s\": " fname;
-        Printf.eprintf "%s.\n" str;
-        flush stderr;
-        exit 2
-      } ]
-;
-
-Printexc.catch main ();
diff --git a/camlp4/unmaintained/odyl/odyl_main.mli b/camlp4/unmaintained/odyl/odyl_main.mli
deleted file mode 100644 (file)
index 122c933..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-(* camlp4r *)
-
-
-exception Error of string and string;
-
-value nolib : ref bool;
-value initialized : ref bool;
-value path : ref (list string);
-value loadfile : string -> unit;
-value directory : string -> unit;
-
-value go : ref (unit -> unit);
-value name : ref string;
diff --git a/camlp4/unmaintained/olabl/.depend b/camlp4/unmaintained/olabl/.depend
deleted file mode 100644 (file)
index e69de29..0000000
diff --git a/camlp4/unmaintained/olabl/Makefile b/camlp4/unmaintained/olabl/Makefile
deleted file mode 100644 (file)
index 2d9eb69..0000000
+++ /dev/null
@@ -1,62 +0,0 @@
-#########################################################################
-#                                                                       #
-#                                 OCaml                                 #
-#                                                                       #
-#                                Camlp4                                 #
-#                                                                       #
-#   Copyright 2004 Institut National de Recherche en Informatique et    #
-#   en Automatique.  All rights reserved.  This file is distributed     #
-#   under the terms of the GNU Library General Public License, with     #
-#   the special exception on linking described in file ../../../LICENSE.#
-#                                                                       #
-#########################################################################
-#
-# Makefile for pa_lefteval
-# M.Mauny
-#
-
-include ../../config/Makefile.cnf
-
-OCAMLTOP=../../..
-CAMLP4=../../camlp4/camlp4$(EXE)
-
-OCAMLC=$(OCAMLTOP)/ocamlc$(EXE)
-OCAMLOPT=$(OCAMLTOP)/ocamlopt$(EXE)
-
-P4INCLUDES= -nolib -I ../../meta -I ../../lib -I ../../etc
-OCAMLINCLUDES= -nostdlib -I $(OCAMLTOP)/stdlib -I ../../lib -I ../../camlp4
-OCAMLCFLAGS=-warn-error A $(OCAMLINCLUDES)
-
-SRC=pa_olabl.ml
-OBJS=$(SRC:.ml=.cmo)
-OBJSX=$(SRC:.ml=.cmx)
-
-all: $(OBJS)
-
-opt: $(OBJSX)
-
-depend:
-       cp .depend .depend.bak
-       > .depend
-       for file in $(SRC); do \
-         $(CAMLP4) $(P4INCLUDES) `awk 'NR == 1 { ORS=" "; for (i=2; i < NF; i++) print $$i; } ' $$file` pr_depend.cmo $$i | \
-         sed -e 's| \.\./\.\./\.\.| $$(OCAMLTOP)|g' >> .depend; \
-       done
-
-clean:
-       rm -f *.cm* *.$(O) *.bak .*.bak
-
-
-.SUFFIXES: .cmx .cmo .cmi .ml .mli
-
-.mli.cmi:
-       $(OCAMLC) $(OCAMLCFLAGS) -c $<
-
-
-.ml.cmo:
-       $(OCAMLC) $(OCAMLCFLAGS) -pp "$(CAMLP4) $(P4INCLUDES) `awk 'NR == 1 { ORS=" "; for (i=2; i < NF; i++) print $$i; } ' $<`" -c $<
-
-.ml.cmx:
-       $(OCAMLOPT) $(OCAMLCFLAGS) -pp "$(CAMLP4) $(P4INCLUDES) `awk 'NR == 1 { ORS=" "; for (i=2; i < NF; i++) print $$i; } ' $<`" -c $<
-
-include .depend
diff --git a/camlp4/unmaintained/olabl/README b/camlp4/unmaintained/olabl/README
deleted file mode 100644 (file)
index 830402b..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-This is an application of or an extension for Camlp4. Although it is
-currently distributed with OCaml/Camlp4, it may or may not be
-actively maintained.
-
-It probably won't be part of future OCaml/Camlp4 distributions but be
-accessible from the Camlp4 hump. If you are interested in developing
-this package further and/or actively maintain it, please let us know
-(caml@inria.fr)
-
-This package is distributed under the same license as the OCaml
-Library (that is, LGPL with a special exception allowing both
-static and dynamic link).
-
--- Michel Mauny
-
diff --git a/camlp4/unmaintained/olabl/pa_olabl.ml b/camlp4/unmaintained/olabl/pa_olabl.ml
deleted file mode 100644 (file)
index da70a67..0000000
+++ /dev/null
@@ -1,2022 +0,0 @@
-(* pa_r.cmo pa_rp.cmo pa_extend.cmo q_MLast.cmo pr_dump.cmo *)
-(***********************************************************************)
-(*                                                                     *)
-(*                               Camlp4                                *)
-(*                                                                     *)
-(*    Daniel de Rauglaudre, projet Cristal, INRIA Rocquencourt         *)
-(*                                                                     *)
-(*  Copyright 2002 Institut National de Recherche en Informatique et   *)
-(*  en Automatique.  All rights reserved.  This file is distributed    *)
-(*  under the terms of the GNU Library General Public License, with    *)
-(*  the special exception on linking described in file                 *)
-(*   ../../../LICENSE.                                                 *)
-(*                                                                     *)
-(***********************************************************************)
-
-
-
-module Plexer =
-  struct
-    open Stdpp;
-    open Token;
-    value buff = ref (String.create 80);
-    value store len x =
-      do {
-        if len >= String.length buff.val then
-          buff.val := buff.val ^ String.create (String.length buff.val)
-        else ();
-        buff.val.[len] := x;
-        succ len
-      }
-    ;
-    value mstore len s =
-      add_rec len 0 where rec add_rec len i =
-        if i == String.length s then len
-        else add_rec (store len s.[i]) (succ i)
-    ;
-    value get_buff len = String.sub buff.val 0 len;
-    value rec ident len =
-      parser
-      [ [: `('A'..'Z' | 'a'..'z' | '\192'..'\214' | '\216'..'\246' |
-             '\248'..'\255' | '0'..'9' | '_' | ''' as
-             c)
-            ;
-           s :] ->
-          ident (store len c) s
-      | [: :] -> len ]
-    and ident2 len =
-      parser
-      [ [: `('!' | '?' | '~' | '=' | '@' | '^' | '&' | '+' | '-' | '*' | '/' |
-             '%' | '.' | ':' | '<' | '>' | '|' as
-             c)
-            ;
-           s :] ->
-          ident2 (store len c) s
-      | [: :] -> len ]
-    and ident3 len =
-      parser
-      [ [: `('0'..'9' | 'A'..'Z' | 'a'..'z' | '\192'..'\214' |
-             '\216'..'\246' | '\248'..'\255' | '_' | '!' | '%' | '&' | '*' |
-             '+' | '-' | '.' | '/' | ':' | '<' | '=' | '>' | '?' | '@' | '^' |
-             '|' | '~' | ''' | '$' as
-             c)
-            ;
-           s :] ->
-          ident3 (store len c) s
-      | [: :] -> len ]
-    and ident4 len =
-      parser
-      [ [: `('!' | '?' | '~' | '=' | '@' | '^' | '&' | '+' | '-' | '*' | '/' |
-             '%' | '.' | '<' | '>' | '|' as
-             c)
-            ;
-           s :] ->
-          ident4 (store len c) s
-      | [: :] -> len ]
-    and base_number len =
-      parser
-      [ [: `'o' | 'O'; s :] -> octal_digits (store len 'o') s
-      | [: `'x' | 'X'; s :] -> hexa_digits (store len 'x') s
-      | [: `'b' | 'B'; s :] -> binary_digits (store len 'b') s
-      | [: a = number len :] -> a ]
-    and octal_digits len =
-      parser
-      [ [: `('0'..'7' as d); s :] -> octal_digits (store len d) s
-      | [: :] -> ("INT", get_buff len) ]
-    and hexa_digits len =
-      parser
-      [ [: `('0'..'9' | 'a'..'f' | 'A'..'F' as d); s :] ->
-          hexa_digits (store len d) s
-      | [: :] -> ("INT", get_buff len) ]
-    and binary_digits len =
-      parser
-      [ [: `('0'..'1' as d); s :] -> binary_digits (store len d) s
-      | [: :] -> ("INT", get_buff len) ]
-    and number len =
-      parser
-      [ [: `('0'..'9' as c); s :] -> number (store len c) s
-      | [: `'.'; s :] -> decimal_part (store len '.') s
-      | [: `'e' | 'E'; s :] -> exponent_part (store len 'E') s
-      | [: :] -> ("INT", get_buff len) ]
-    and decimal_part len =
-      parser
-      [ [: `('0'..'9' as c); s :] -> decimal_part (store len c) s
-      | [: `'e' | 'E'; s :] -> exponent_part (store len 'E') s
-      | [: :] -> ("FLOAT", get_buff len) ]
-    and exponent_part len =
-      parser
-      [ [: `('+' | '-' as c); s :] -> end_exponent_part (store len c) s
-      | [: a = end_exponent_part len :] -> a ]
-    and end_exponent_part len =
-      parser
-      [ [: `('0'..'9' as c); s :] -> end_exponent_part (store len c) s
-      | [: :] -> ("FLOAT", get_buff len) ]
-    ;
-    value valch x = Char.code x - Char.code '0';
-    value rec backslash s i =
-      if i = String.length s then raise Not_found
-      else
-        match s.[i] with
-        [ 'n' -> ('\n', i + 1)
-        | 'r' -> ('\r', i + 1)
-        | 't' -> ('\t', i + 1)
-        | 'b' -> ('\b', i + 1)
-        | '\\' -> ('\\', i + 1)
-        | '0'..'9' as c -> backslash1 (valch c) s (i + 1)
-        | _ -> raise Not_found ]
-    and backslash1 cod s i =
-      if i = String.length s then (Char.chr cod, i)
-      else
-        match s.[i] with
-        [ '0'..'9' as c -> backslash2 (10 * cod + valch c) s (i + 1)
-        | _ -> (Char.chr cod, i) ]
-    and backslash2 cod s i =
-      if i = String.length s then (Char.chr cod, i)
-      else
-        match s.[i] with
-        [ '0'..'9' as c -> (Char.chr (10 * cod + valch c), i + 1)
-        | _ -> (Char.chr cod, i) ]
-    ;
-    value rec skip_indent s i =
-      if i = String.length s then i
-      else
-        match s.[i] with
-        [ ' ' | '\t' -> skip_indent s (i + 1)
-        | _ -> i ]
-    ;
-    value skip_opt_linefeed s i =
-      if i = String.length s then i else if s.[i] = '\010' then i + 1 else i
-    ;
-    value char_of_char_token s =
-      if String.length s = 1 then s.[0]
-      else if String.length s = 0 then failwith "invalid char token"
-      else if s.[0] = '\\' then
-        if String.length s = 2 && s.[1] = ''' then '''
-        else
-          try
-            let (c, i) = backslash s 1 in
-            if i = String.length s then c else raise Not_found
-          with
-          [ Not_found -> failwith "invalid char token" ]
-      else failwith "invalid char token"
-    ;
-    value string_of_string_token s =
-      loop 0 0 where rec loop len i =
-        if i = String.length s then get_buff len
-        else
-          let (len, i) =
-            if s.[i] = '\\' then
-              let i = i + 1 in
-              if i = String.length s then failwith "invalid string token"
-              else if s.[i] = '"' then (store len '"', i + 1)
-              else
-                match s.[i] with
-                [ '\010' -> (len, skip_indent s (i + 1))
-                | '\013' -> (len, skip_indent s (skip_opt_linefeed s (i + 1)))
-                | c ->
-                    try
-                      let (c, i) = backslash s i in
-                      (store len c, i)
-                    with
-                    [ Not_found -> (store (store len '\\') c, i + 1) ] ]
-            else (store len s.[i], i + 1)
-          in
-          loop len i
-    ;
-    value rec skip_spaces =
-      parser
-      [ [: `' ' | '\n' | '\r' | '\t' | '\026' | '\012'; s :] -> skip_spaces s
-      | [: :] -> () ]
-    ;
-    value error_on_unknown_keywords = ref False;
-    value next_token_fun find_id_kwd find_spe_kwd fname lnum bolpos =
-      let make_pos p =
-        {Lexing.pos_fname = fname.val; Lexing.pos_lnum = lnum.val;
-         Lexing.pos_bol = bolpos.val; Lexing.pos_cnum = p} in
-      let mkloc (bp, ep) = (make_pos bp, make_pos ep) in
-
-      let err loc msg = raise_with_loc loc (Token.Error msg) in
-      let keyword_or_error (bp,ep) s =
-        try ("", find_spe_kwd s) with
-        [ Not_found ->
-            if error_on_unknown_keywords.val then
-              err (mkloc (bp, ep)) ("illegal token: " ^ s)
-            else ("", s) ]
-      in
-      let rec next_token =
-        parser bp
-        [ [: `('A'..'Z' | 'À'..'Ö' | 'Ø'..'Þ' as c); s :] ->
-            let id = get_buff (ident (store 0 c) s) in
-            try ("", find_id_kwd id) with [ Not_found -> ("UIDENT", id) ]
-        | [: `('a'..'z' | 'ß'..'ö' | 'ø'..'ÿ' | '_' as c); s :] ->
-            let id = get_buff (ident (store 0 c) s) in
-            let is_label =
-              match Stream.peek s with
-              [ Some ':' ->
-                  match Stream.npeek 2 s with
-                  [ [_; ':' | '=' | '>'] -> False
-                  | _ -> True ]
-              | _ -> False ]
-            in
-            if is_label then do { Stream.junk s; ("LABEL", id) }
-            else try ("", find_id_kwd id) with [ Not_found -> ("LIDENT", id) ]
-        | [: `('1'..'9' as c); s :] -> number (store 0 c) s
-        | [: `'0'; s :] -> base_number (store 0 '0') s
-        | [: `'''; s :] ep ->
-            match Stream.npeek 2 s with
-            [ [_; '''] | ['\\'; _] -> ("CHAR", char bp 0 s)
-            | _ -> keyword_or_error (bp, ep) "'" ]
-        | [: `'"'; s :] -> ("STRING", string bp 0 s)
-        | [: `'$'; s :] -> locate_or_antiquot bp 0 s
-        | [: `('!' | '~' | '=' | '@' | '^' | '&' | '+' | '-' | '*' | '/' |
-               '%' as
-               c)
-              ;
-             s :] ->
-            let id = get_buff (ident2 (store 0 c) s) in
-            keyword_or_error (bp, Stream.count s) id
-        | [: `('?' as c); s :] ->
-            let id = get_buff (ident4 (store 0 c) s) in
-            keyword_or_error (bp, Stream.count s) id
-        | [: `'<'; s :] -> less bp s
-        | [: `(':' as c1);
-             (is_label, len) =
-               parser
-               [ [: `(']' | ':' | '=' | '>' as c2) :] ->
-                   (False, store (store 0 c1) c2)
-               | [: `('a'..'z' | 'ß'..'ö' | 'ø'..'ÿ' | '_' as c); s :] ->
-                   (True, ident (store 0 c) s)
-               | [: :] -> (False, store 0 c1) ] :] ep ->
-            let id = get_buff len in
-            if is_label then ("ELABEL", id) else keyword_or_error (bp, ep) id
-        | [: `('>' | '|' as c1);
-             len =
-               parser
-               [ [: `(']' | '}' as c2) :] -> store (store 0 c1) c2
-               | [: a = ident2 (store 0 c1) :] -> a ] :] ep ->
-            let id = get_buff len in
-            keyword_or_error (bp, ep) id
-        | [: `('[' | '{' as c1); s :] ->
-            let len =
-              match Stream.npeek 2 s with
-              [ ['<'; '<' | ':'] -> store 0 c1
-              | _ ->
-                  match s with parser
-                  [ [: `('|' | '<' | ':' as c2) :] -> store (store 0 c1) c2
-                  | [: :] -> store 0 c1 ] ]
-            in
-            let ep = Stream.count s in
-            let id = get_buff len in
-            keyword_or_error (bp, ep) id
-        | [: `'.'; id = parser [ [: `'.' :] -> ".." | [: :] -> "." ] :] ep ->
-            keyword_or_error (bp, ep) id
-        | [: `';'; id = parser [ [: `';' :] -> ";;" | [: :] -> ";" ] :] ep ->
-            keyword_or_error (bp, ep) id
-        | [: `'\\'; s :] -> ("LIDENT", get_buff (ident3 0 s))
-        | [: `c :] ep -> keyword_or_error (bp, ep) (String.make 1 c) ]
-      and less bp =
-        parser
-        [ [: `'<'; s :] -> ("QUOTATION", ":" ^ get_buff (quotation bp 0 s))
-        | [: `':'; i = parser [: len = ident 0 :] -> get_buff len;
-             `'<' ? "character '<' expected"; s :] ->
-            ("QUOTATION", i ^ ":" ^ get_buff (quotation bp 0 s))
-        | [: s :] ep ->
-            let id = get_buff (ident2 (store 0 '<') s) in
-            keyword_or_error (bp, ep) id ]
-      and string bp len =
-        parser
-        [ [: `'"' :] -> get_buff len
-        | [: `'\\'; `c; s :] -> string bp (store (store len '\\') c) s
-        | [: `c; s :] -> string bp (store len c) s
-        | [: :] ep -> err (mkloc (bp, ep)) "string not terminated" ]
-      and char bp len =
-        parser
-        [ [: `'''; s :] ->
-            if len = 0 then char bp (store len ''') s else get_buff len
-        | [: `'\\'; `c; s :] -> char bp (store (store len '\\') c) s
-        | [: `c; s :] -> char bp (store len c) s
-        | [: :] ep -> err (mkloc(bp,ep)) "char not terminated" ]
-      and locate_or_antiquot bp len =
-        parser
-        [ [: `'$' :] -> ("ANTIQUOT", ":" ^ get_buff len)
-        | [: `('a'..'z' | 'A'..'Z' as c); s :] -> antiquot bp (store len c) s
-        | [: `('0'..'9' as c); s :] -> maybe_locate bp (store len c) s
-        | [: `':'; s :] ->
-            let k = get_buff len in
-            ("ANTIQUOT", k ^ ":" ^ locate_or_antiquot_rest bp 0 s)
-        | [: `'\\'; `c; s :] ->
-            ("ANTIQUOT", ":" ^ locate_or_antiquot_rest bp (store len c) s)
-        | [: `c; s :] ->
-            ("ANTIQUOT", ":" ^ locate_or_antiquot_rest bp (store len c) s)
-        | [: :] ep -> err (mkloc(bp,ep)) "antiquotation not terminated" ]
-      and maybe_locate bp len =
-        parser
-        [ [: `'$' :] -> ("ANTIQUOT", ":" ^ get_buff len)
-        | [: `('0'..'9' as c); s :] -> maybe_locate bp (store len c) s
-        | [: `':'; s :] ->
-            ("LOCATE", get_buff len ^ ":" ^ locate_or_antiquot_rest bp 0 s)
-        | [: `'\\'; `c; s :] ->
-            ("ANTIQUOT", ":" ^ locate_or_antiquot_rest bp (store len c) s)
-        | [: `c; s :] ->
-            ("ANTIQUOT", ":" ^ locate_or_antiquot_rest bp (store len c) s)
-        | [: :] ep -> err (mkloc(bp,ep)) "antiquotation not terminated" ]
-      and antiquot bp len =
-        parser
-        [ [: `'$' :] -> ("ANTIQUOT", ":" ^ get_buff len)
-        | [: `('a'..'z' | 'A'..'Z' | '0'..'9' as c); s :] ->
-            antiquot bp (store len c) s
-        | [: `':'; s :] ->
-            let k = get_buff len in
-            ("ANTIQUOT", k ^ ":" ^ locate_or_antiquot_rest bp 0 s)
-        | [: `'\\'; `c; s :] ->
-            ("ANTIQUOT", ":" ^ locate_or_antiquot_rest bp (store len c) s)
-        | [: `c; s :] ->
-            ("ANTIQUOT", ":" ^ locate_or_antiquot_rest bp (store len c) s)
-        | [: :] ep -> err (mkloc(bp,ep)) "antiquotation not terminated" ]
-      and locate_or_antiquot_rest bp len =
-        parser
-        [ [: `'$' :] -> get_buff len
-        | [: `'\\'; `c; s :] -> locate_or_antiquot_rest bp (store len c) s
-        | [: `c; s :] -> locate_or_antiquot_rest bp (store len c) s
-        | [: :] ep -> err (mkloc(bp,ep)) "antiquotation not terminated" ]
-      and quotation bp len =
-        parser
-        [ [: `'>'; s :] -> maybe_end_quotation bp len s
-        | [: `'<'; s :] ->
-            quotation bp (maybe_nested_quotation bp (store len '<') __strm) s
-        | [: `'\\';
-             len =
-               parser
-               [ [: `('>' | '<' | '\\' as c) :] -> store len c
-               | [: :] -> store len '\\' ];
-             s :] ->
-            quotation bp len s
-        | [: `c; s :] -> quotation bp (store len c) s
-        | [: :] ep -> err (mkloc(bp,ep)) "quotation not terminated" ]
-      and maybe_nested_quotation bp len =
-        parser
-        [ [: `'<'; s :] -> mstore (quotation bp (store len '<') s) ">>"
-        | [: `':'; len = ident (store len ':');
-             a =
-               parser
-               [ [: `'<'; s :] -> mstore (quotation bp (store len '<') s) ">>"
-               | [: :] -> len ] :] ->
-            a
-        | [: :] -> len ]
-      and maybe_end_quotation bp len =
-        parser
-        [ [: `'>' :] -> len
-        | [: a = quotation bp (store len '>') :] -> a ]
-      in
-      let rec next_token_loc =
-        parser bp
-        [ [: `' ' | '\n' | '\r' | '\t' | '\026' | '\012'; s :] ->
-            next_token_loc s
-        | [: `'('; s :] -> maybe_comment bp s
-        | [: `'#'; _ = spaces_tabs; a = linenum bp :] -> a
-        | [: tok = next_token :] ep -> (tok, mkloc(bp, ep))
-        | [: _ = Stream.empty :] -> (("EOI", ""), mkloc(bp, succ bp)) ]
-      and maybe_comment bp =
-        parser
-        [ [: `'*'; s :] -> do { comment bp s; next_token_loc s }
-        | [: :] ep ->
-            let tok = keyword_or_error (bp, ep) "(" in
-            (tok, mkloc(bp, ep)) ]
-      and comment bp =
-        parser
-        [ [: `'('; s :] -> maybe_nested_comment bp s
-        | [: `'*'; s :] -> maybe_end_comment bp s
-        | [: `c; s :] -> comment bp s
-        | [: :] ep -> err (mkloc(bp,ep)) "comment not terminated" ]
-      and maybe_nested_comment bp =
-        parser
-        [ [: `'*'; s :] -> do { comment bp s; comment bp s }
-        | [: a = comment bp :] -> a ]
-      and maybe_end_comment bp =
-        parser [ [: `')' :] -> () | [: a = comment bp :] -> a ]
-      and linenum bp =
-        parser
-        [ [: `'0'..'9'; _ = digits; _ = spaces_tabs; `'"'; _ = any_to_nl;
-             s :] ->
-            next_token_loc s
-        | [: :] -> (keyword_or_error (bp, bp + 1) "#", mkloc(bp, bp + 1)) ]
-      and spaces_tabs =
-        parser [ [: `' ' | '\t'; s :] -> spaces_tabs s | [: :] -> () ]
-      and digits = parser [ [: `'0'..'9'; s :] -> digits s | [: :] -> () ]
-      and any_to_nl =
-        parser
-        [ [: `'\r' | '\n' :] -> ()
-        | [: `_; s :] -> any_to_nl s
-        | [: :] -> () ]
-      in
-      fun cstrm ->
-        try next_token_loc cstrm with
-        [ Stream.Error str ->
-            err (mkloc(Stream.count cstrm, Stream.count cstrm + 1)) str ]
-    ;
-    value locerr () = invalid_arg "Lexer: location function";
-    value loct_create () = ref (Array.create 1024 None);
-    value loct_func loct i =
-      match
-        if i < 0 || i >= Array.length loct.val then None
-        else Array.unsafe_get loct.val i
-      with
-      [ Some loc -> loc
-      | _ -> locerr () ]
-    ;
-    value loct_add loct i loc =
-      do {
-        if i >= Array.length loct.val then do {
-          let new_tmax = Array.length loct.val * 2 in
-          let new_loct = Array.create new_tmax None in
-          Array.blit loct.val 0 new_loct 0 (Array.length loct.val);
-          loct.val := new_loct
-        }
-        else ();
-        loct.val.(i) := Some loc
-      }
-    ;
-    value func kwd_table =
-      let bolpos = ref 0 in
-      let lnum = ref 0 in
-      let fname = ref "" in
-      let find = Hashtbl.find kwd_table in
-      let lex cstrm =
-        let next_token_loc = next_token_fun find find fname lnum bolpos in
-        let loct = loct_create () in
-        let ts =
-          Stream.from
-            (fun i ->
-               let (tok, loc) = next_token_loc cstrm in
-               do { loct_add loct i loc; Some tok })
-        in
-        let locf = loct_func loct in
-        (ts, locf)
-      in
-      lex
-    ;
-    value rec check_keyword_stream =
-      parser [: _ = check; _ = Stream.empty :] -> True
-    and check =
-      parser
-      [ [: `'A'..'Z' | 'a'..'z' | 'À'..'Ö' | 'Ø'..'ö' | 'ø'..'ÿ'; s :] ->
-          check_ident s
-      | [: `'!' | '?' | '~' | '=' | '@' | '^' | '&' | '+' | '-' | '*' | '/' |
-            '%' | '.'
-            ;
-           s :] ->
-          check_ident2 s
-      | [: `'<'; s :] ->
-          match Stream.npeek 1 s with
-          [ [':' | '<'] -> ()
-          | _ -> check_ident2 s ]
-      | [: `':';
-           _ =
-             parser
-             [ [: `']' | ':' | '=' | '>' :] -> ()
-             | [: :] -> () ] :] ep ->
-          ()
-      | [: `'>' | '|';
-           _ =
-             parser
-             [ [: `']' | '}' :] -> ()
-             | [: a = check_ident2 :] -> a ] :] ->
-          ()
-      | [: `'[' | '{'; s :] ->
-          match Stream.npeek 2 s with
-          [ ['<'; '<' | ':'] -> ()
-          | _ ->
-              match s with parser
-              [ [: :] ->
-                  match Stream.peek __strm with
-                  [ Some ('|' | '<' | ':') -> Stream.junk __strm
-                  | _ -> () ] ] ]
-      | [: `';'; _ = parser [ [: `';' :] -> () | [: :] -> () ] :] -> ()
-      | [: `_ :] -> () ]
-    and check_ident =
-      parser
-      [ [: `'A'..'Z' | 'a'..'z' | 'À'..'Ö' | 'Ø'..'ö' | 'ø'..'ÿ' | '0'..'9' |
-            '_' | '''
-            ;
-           s :] ->
-          check_ident s
-      | [: :] -> () ]
-    and check_ident2 =
-      parser
-      [ [: `'!' | '?' | '~' | '=' | '@' | '^' | '&' | '+' | '-' | '*' | '/' |
-            '%' | '.' | ':' | '<' | '>' | '|'
-            ;
-           s :] ->
-          check_ident2 s
-      | [: :] -> () ]
-    ;
-    value check_keyword s =
-      try check_keyword_stream (Stream.of_string s) with _ -> False
-    ;
-    value using_token kwd_table (p_con, p_prm) =
-      match p_con with
-      [ "" ->
-          try
-            let _ = Hashtbl.find kwd_table p_prm in
-            ()
-          with
-          [ Not_found ->
-              if check_keyword p_prm then Hashtbl.add kwd_table p_prm p_prm
-              else
-                raise
-                  (Token.Error
-                     ("the token \"" ^ p_prm ^
-                        "\" does not respect Plexer rules")) ]
-      | "LIDENT" | "UIDENT" | "INT" | "FLOAT" | "CHAR" | "STRING" |
-        "QUOTATION" | "ANTIQUOT" | "LOCATE" | "LABEL" | "ELABEL" | "EOI" ->
-          ()
-      | _ ->
-          raise
-            (Token.Error
-               ("the constructor \"" ^ p_con ^
-                  "\" is not recognized by Llexer")) ]
-    ;
-    value removing_token kwd_table (p_con, p_prm) =
-      if p_con = "" then Hashtbl.remove kwd_table p_prm else ()
-    ;
-    value text =
-      fun
-      [ ("", t) -> "'" ^ t ^ "'"
-      | ("LIDENT", "") -> "lowercase identifier"
-      | ("LIDENT", t) -> "'" ^ t ^ "'"
-      | ("UIDENT", "") -> "uppercase identifier"
-      | ("UIDENT", t) -> "'" ^ t ^ "'"
-      | ("INT", "") -> "integer"
-      | ("INT", s) -> "'" ^ s ^ "'"
-      | ("FLOAT", "") -> "float"
-      | ("STRING", "") -> "string"
-      | ("CHAR", "") -> "char"
-      | ("QUOTATION", "") -> "quotation"
-      | ("ANTIQUOT", k) -> "antiquot \"" ^ k ^ "\""
-      | ("LOCATE", "") -> "locate"
-      | ("LABEL", "") -> "label"
-      | ("ELABEL", "") -> "elabel"
-      | ("EOI", "") -> "end of input"
-      | (con, "") -> con
-      | (con, prm) -> con ^ " \"" ^ prm ^ "\"" ]
-    ;
-    value eq_before_colon p e =
-      loop 0 where rec loop i =
-        if i == String.length e then
-          failwith "Internal error in Plexer: incorrect ANTIQUOT"
-        else if i == String.length p then e.[i] == ':'
-        else if p.[i] == e.[i] then loop (i + 1)
-        else False
-    ;
-    value after_colon e =
-      try
-        let i = String.index e ':' in
-        String.sub e (i + 1) (String.length e - i - 1)
-      with
-      [ Not_found -> "" ]
-    ;
-    value gmake () =
-      let kwd_table = Hashtbl.create 301 in
-      {tok_func = func kwd_table; tok_using = using_token kwd_table;
-       tok_removing = removing_token kwd_table;
-       tok_match = Token.default_match; tok_text = text; tok_comm = None}
-    ;
-  end
-;
-
-open Stdpp;
-open Pcaml;
-
-Pcaml.no_constructors_arity.val := True;
-
-do {
-  Grammar.Unsafe.gram_reinit gram (Plexer.gmake ());
-  Grammar.Unsafe.clear_entry interf;
-  Grammar.Unsafe.clear_entry implem;
-  Grammar.Unsafe.clear_entry top_phrase;
-  Grammar.Unsafe.clear_entry use_file;
-  Grammar.Unsafe.clear_entry module_type;
-  Grammar.Unsafe.clear_entry module_expr;
-  Grammar.Unsafe.clear_entry sig_item;
-  Grammar.Unsafe.clear_entry str_item;
-  Grammar.Unsafe.clear_entry expr;
-  Grammar.Unsafe.clear_entry patt;
-  Grammar.Unsafe.clear_entry ctyp;
-  Grammar.Unsafe.clear_entry let_binding;
-  Grammar.Unsafe.clear_entry class_type;
-  Grammar.Unsafe.clear_entry class_expr;
-  Grammar.Unsafe.clear_entry class_sig_item;
-  Grammar.Unsafe.clear_entry class_str_item
-};
-
-Pcaml.parse_interf.val := Grammar.Entry.parse interf;
-Pcaml.parse_implem.val := Grammar.Entry.parse implem;
-
-value o2b =
-  fun
-  [ Some _ -> True
-  | None -> False ]
-;
-
-value mkumin loc f arg =
-  match arg with
-  [ <:expr< $int:n$ >> when int_of_string n > 0 ->
-      let n = "-" ^ n in
-      <:expr< $int:n$ >>
-  | <:expr< $flo:n$ >> when float_of_string n > 0.0 ->
-      let n = "-" ^ n in
-      <:expr< $flo:n$ >>
-  | _ ->
-      let f = "~" ^ f in
-      <:expr< $lid:f$ $arg$ >> ]
-;
-
-external loc_of_node : 'a -> Loc.t = "%field0";
-
-value mklistexp loc last =
-  loop True where rec loop top =
-    fun
-    [ [] ->
-        match last with
-        [ Some e -> e
-        | None -> <:expr< [] >> ]
-    | [e1 :: el] ->
-        let loc = if top then loc else (fst (loc_of_node e1), snd loc) in
-        <:expr< [$e1$ :: $loop False el$] >> ]
-;
-
-value mklistpat loc last =
-  loop True where rec loop top =
-    fun
-    [ [] ->
-        match last with
-        [ Some p -> p
-        | None -> <:patt< [] >> ]
-    | [p1 :: pl] ->
-        let loc = if top then loc else (fst (loc_of_node p1), snd loc) in
-        <:patt< [$p1$ :: $loop False pl$] >> ]
-;
-
-value neg s = string_of_int (- int_of_string s);
-
-value is_operator =
-  let ht = Hashtbl.create 73 in
-  let ct = Hashtbl.create 73 in
-  do {
-    List.iter (fun x -> Hashtbl.add ht x True)
-      ["asr"; "land"; "lor"; "lsl"; "lsr"; "lxor"; "mod"; "or"];
-    List.iter (fun x -> Hashtbl.add ct x True)
-      ['!'; '&'; '*'; '+'; '-'; '/'; ':'; '<'; '='; '>'; '@'; '^'; '|'; '~';
-       '?'; '%'; '.'];
-    fun x ->
-      try Hashtbl.find ht x with
-      [ Not_found -> try Hashtbl.find ct x.[0] with _ -> False ]
-  }
-;
-
-(*
-value p_operator strm =
-  match Stream.peek strm with
-  [ Some (Token.Tterm "(") ->
-      match Stream.npeek 3 strm with
-      [ [_; Token.Tterm x; Token.Tterm ")"] when is_operator x ->
-          do { Stream.junk strm; Stream.junk strm; Stream.junk strm; x }
-      | _ -> raise Stream.Failure ]
-  | _ -> raise Stream.Failure ]
-;
-
-value operator = Grammar.Entry.of_parser gram "operator" p_operator;
-*)
-
-value operator =
-  Grammar.Entry.of_parser gram "operator"
-    (parser [: `("", x) when is_operator x :] -> x)
-;
-
-value symbolchar =
-  let list =
-    ['!'; '$'; '%'; '&'; '*'; '+'; '-'; '.'; '/'; ':'; '<'; '='; '>'; '?';
-     '@'; '^'; '|'; '~']
-  in
-  let rec loop s i =
-    if i == String.length s then True
-    else if List.mem s.[i] list then loop s (i + 1)
-    else False
-  in
-  loop
-;
-
-value prefixop =
-  let list = ['!'; '?'; '~'] in
-  let excl = ["!="] in
-  Grammar.Entry.of_parser gram "prefixop"
-    (parser
-       [: `("", x)
-           when
-             not (List.mem x excl) && String.length x >= 2 &&
-             List.mem x.[0] list && symbolchar x 1 :] ->
-         x)
-;
-
-value infixop0 =
-  let list = ['='; '<'; '>'; '|'; '&'; '$'] in
-  let excl = ["<-"; "||"; "&&"] in
-  Grammar.Entry.of_parser gram "infixop0"
-    (parser
-       [: `("", x)
-           when
-             not (List.mem x excl) && String.length x >= 2 &&
-             List.mem x.[0] list && symbolchar x 1 :] ->
-         x)
-;
-
-value infixop1 =
-  let list = ['@'; '^'] in
-  Grammar.Entry.of_parser gram "infixop1"
-    (parser
-       [: `("", x)
-           when
-             String.length x >= 2 && List.mem x.[0] list &&
-             symbolchar x 1 :] ->
-         x)
-;
-
-value infixop2 =
-  let list = ['+'; '-'] in
-  Grammar.Entry.of_parser gram "infixop2"
-    (parser
-       [: `("", x)
-           when
-             x <> "->" && String.length x >= 2 && List.mem x.[0] list &&
-             symbolchar x 1 :] ->
-         x)
-;
-
-value infixop3 =
-  let list = ['*'; '/'; '%'] in
-  Grammar.Entry.of_parser gram "infixop3"
-    (parser
-       [: `("", x)
-           when
-             String.length x >= 2 && List.mem x.[0] list &&
-             symbolchar x 1 :] ->
-         x)
-;
-
-value infixop4 =
-  Grammar.Entry.of_parser gram "infixop4"
-    (parser
-       [: `("", x)
-           when
-             String.length x >= 3 && x.[0] == '*' && x.[1] == '*' &&
-             symbolchar x 2 :] ->
-         x)
-;
-
-value test_constr_decl =
-  Grammar.Entry.of_parser gram "test_constr_decl"
-    (fun strm ->
-       match Stream.npeek 1 strm with
-       [ [("UIDENT", _)] ->
-           match Stream.npeek 2 strm with
-           [ [_; ("", ".")] -> raise Stream.Failure
-           | [_; ("", "(")] -> raise Stream.Failure
-           | [_ :: _] -> ()
-           | _ -> raise Stream.Failure ]
-       | [("", "|")] -> ()
-       | _ -> raise Stream.Failure ])
-;
-
-value stream_peek_nth n strm =
-  loop n (Stream.npeek n strm) where rec loop n =
-    fun
-    [ [] -> None
-    | [x] -> if n == 1 then Some x else None
-    | [_ :: l] -> loop (n - 1) l ]
-;
-
-value test_label_eq =
-  let rec test lev strm =
-    match stream_peek_nth lev strm with
-    [ Some (("UIDENT", _) | ("LIDENT", _) | ("", ".")) -> test (lev + 1) strm
-    | Some ("", "=") -> ()
-    | _ -> raise Stream.Failure ]
-  in
-  Grammar.Entry.of_parser gram "test_label_eq" (test 1)
-;
-
-value constr_arity = ref [("Some", 1); ("Match_Failure", 1)];
-
-value rec constr_expr_arity =
-  fun
-  [ <:expr< $uid:c$ >> ->
-      try List.assoc c constr_arity.val with [ Not_found -> 0 ]
-  | <:expr< $uid:_$.$e$ >> -> constr_expr_arity e
-  | _ -> 1 ]
-;
-
-value rec constr_patt_arity =
-  fun
-  [ <:patt< $uid:c$ >> ->
-      try List.assoc c constr_arity.val with [ Not_found -> 0 ]
-  | <:patt< $uid:_$.$p$ >> -> constr_patt_arity p
-  | _ -> 1 ]
-;
-
-value rec get_seq =
-  fun
-  [ <:expr< do { $list:el$ } >> -> el
-  | e -> [e] ]
-;
-
-value choose_tvar tpl =
-  let rec find_alpha v =
-    let s = String.make 1 v in
-    if List.mem_assoc s tpl then
-      if v = 'z' then None else find_alpha (Char.chr (Char.code v + 1))
-    else Some (String.make 1 v)
-  in
-  let rec make_n n =
-    let v = "a" ^ string_of_int n in
-    if List.mem_assoc v tpl then make_n (succ n) else v
-  in
-  match find_alpha 'a' with
-  [ Some x -> x
-  | None -> make_n 1 ]
-;
-
-value rec patt_lid =
-  fun
-  [ <:patt< $lid:i$ $p$ >> -> Some (i, [p])
-  | <:patt< $p1$ $p2$ >> ->
-      match patt_lid p1 with
-      [ Some (i, pl) -> Some (i, [p2 :: pl])
-      | None -> None ]
-  | _ -> None ]
-;
-
-value type_parameter = Grammar.Entry.create gram "type_parameter";
-value fun_def = Grammar.Entry.create gram "fun_def";
-value fun_binding = Grammar.Entry.create gram "fun_binding";
-
-EXTEND
-  GLOBAL: interf implem top_phrase use_file sig_item str_item ctyp patt expr
-    module_type module_expr let_binding type_parameter fun_def fun_binding;
-  (* Main entry points *)
-  interf:
-    [ [ st = LIST0 [ s = sig_item; OPT ";;" -> (s, loc) ]; EOI ->
-          (st, False) ] ]
-  ;
-  implem:
-    [ [ st = LIST0 [ s = str_item; OPT ";;" -> (s, loc) ]; EOI ->
-          (st, False) ] ]
-  ;
-  top_phrase:
-    [ [ ph = phrase; ";;" -> Some ph
-      | EOI -> None ] ]
-  ;
-  use_file:
-    [ [ l = LIST0 [ ph = phrase; OPT ";;" -> ph ]; EOI -> (l, False) ] ]
-  ;
-  phrase:
-    [ [ sti = str_item -> sti
-      | "#"; n = LIDENT; dp = dir_param -> MLast.StDir loc n dp ] ]
-  ;
-  dir_param:
-    [ [ -> None
-      | e = expr -> Some e ] ]
-  ;
-  (* Module expressions *)
-  module_expr:
-    [ [ "functor"; "("; i = UIDENT; ":"; t = module_type; ")"; "->";
-        me = SELF ->
-          <:module_expr< functor ( $i$ : $t$ ) -> $me$ >>
-      | "struct"; st = LIST0 [ s = str_item; OPT ";;" -> s ]; "end" ->
-          <:module_expr< struct $list:st$ end >> ]
-    | [ me1 = SELF; me2 = SELF -> <:module_expr< $me1$ $me2$ >> ]
-    | [ i = mod_expr_ident -> i
-      | "("; me = SELF; ":"; mt = module_type; ")" ->
-          <:module_expr< ( $me$ : $mt$ ) >>
-      | "("; me = SELF; ")" -> <:module_expr< $me$ >> ] ]
-  ;
-  mod_expr_ident:
-    [ LEFTA
-      [ m1 = SELF; "."; m2 = SELF -> <:module_expr< $m1$ . $m2$ >> ]
-    | [ m = UIDENT -> <:module_expr< $uid:m$ >> ] ]
-  ;
-  str_item:
-    [ "top"
-      [ "exception"; (_, c, tl) = constructor_declaration ->
-          <:str_item< exception $c$ of $list:tl$ >>
-      | "external"; i = LIDENT; ":"; t = ctyp; "="; pd = LIST1 STRING ->
-          <:str_item< external $i$ : $t$ = $list:pd$ >>
-      | "external"; i = LABEL; t = ctyp; "="; pd = LIST1 STRING ->
-          <:str_item< external $i$ : $t$ = $list:pd$ >>
-      | "external"; "("; i = operator; ")"; ":"; t = ctyp; "=";
-        pd = LIST1 STRING ->
-          <:str_item< external $i$ : $t$ = $list:pd$ >>
-      | "module"; i = UIDENT; mb = module_binding ->
-          <:str_item< module $i$ = $mb$ >>
-      | "module"; "type"; i = UIDENT; "="; mt = module_type ->
-          <:str_item< module type $i$ = $mt$ >>
-      | "open"; i = mod_ident -> <:str_item< open $i$ >>
-      | "type"; tdl = LIST1 type_declaration SEP "and" ->
-          <:str_item< type $list:tdl$ >>
-      | "let"; r = OPT "rec"; l = LIST1 let_binding SEP "and"; "in";
-        x = expr ->
-          let e = <:expr< let $opt:o2b r$ $list:l$ in $x$ >> in
-          <:str_item< $exp:e$ >>
-      | "let"; r = OPT "rec"; l = LIST1 let_binding SEP "and" ->
-          match l with
-          [ [(<:patt< _ >>, e)] -> <:str_item< $exp:e$ >>
-          | _ -> <:str_item< value $opt:o2b r$ $list:l$ >> ]
-      | "let"; "module"; m = UIDENT; mb = module_binding; "in"; e = expr ->
-          <:str_item< let module $m$ = $mb$ in $e$ >>
-      | e = expr -> <:str_item< $exp:e$ >> ] ]
-  ;
-  module_binding:
-    [ RIGHTA
-      [ "("; m = UIDENT; ":"; mt = module_type; ")"; mb = SELF ->
-          <:module_expr< functor ( $m$ : $mt$ ) -> $mb$ >>
-      | ":"; mt = module_type; "="; me = module_expr ->
-          <:module_expr< ( $me$ : $mt$ ) >>
-      | "="; me = module_expr -> <:module_expr< $me$ >> ] ]
-  ;
-  (* Module types *)
-  module_type:
-    [ [ "functor"; "("; i = UIDENT; ":"; t = SELF; ")"; "->"; mt = SELF ->
-          <:module_type< functor ( $i$ : $t$ ) -> $mt$ >> ]
-    | [ mt = SELF; "with"; wcl = LIST1 with_constr SEP "and" ->
-          <:module_type< $mt$ with $list:wcl$ >> ]
-    | [ "sig"; sg = LIST0 [ s = sig_item; OPT ";;" -> s ]; "end" ->
-          <:module_type< sig $list:sg$ end >>
-      | i = mod_type_ident -> i
-      | "("; mt = SELF; ")" -> <:module_type< $mt$ >> ] ]
-  ;
-  mod_type_ident:
-    [ LEFTA
-      [ m1 = SELF; "."; m2 = SELF -> <:module_type< $m1$ . $m2$ >>
-      | m1 = SELF; "("; m2 = SELF; ")" -> <:module_type< $m1$ $m2$ >> ]
-    | [ m = UIDENT -> <:module_type< $uid:m$ >>
-      | m = LIDENT -> <:module_type< $lid:m$ >> ] ]
-  ;
-  sig_item:
-    [ "top"
-      [ "exception"; (_, c, tl) = constructor_declaration ->
-          <:sig_item< exception $c$ of $list:tl$ >>
-      | "external"; i = LIDENT; ":"; t = ctyp; "="; pd = LIST1 STRING ->
-          <:sig_item< external $i$ : $t$ = $list:pd$ >>
-      | "external"; i = LABEL; t = ctyp; "="; pd = LIST1 STRING ->
-          <:sig_item< external $i$ : $t$ = $list:pd$ >>
-      | "external"; "("; i = operator; ")"; ":"; t = ctyp; "=";
-        pd = LIST1 STRING ->
-          <:sig_item< external $i$ : $t$ = $list:pd$ >>
-      | "include"; mt = module_type -> <:sig_item< include $mt$ >>
-      | "module"; i = UIDENT; mt = module_declaration ->
-          <:sig_item< module $i$ : $mt$ >>
-      | "module"; "type"; i = UIDENT; "="; mt = module_type ->
-          <:sig_item< module type $i$ = $mt$ >>
-      | "open"; i = mod_ident -> <:sig_item< open $i$ >>
-      | "type"; tdl = LIST1 type_declaration SEP "and" ->
-          <:sig_item< type $list:tdl$ >>
-      | "val"; i = LIDENT; ":"; t = ctyp -> <:sig_item< value $i$ : $t$ >>
-      | "val"; i = LABEL; t = ctyp -> <:sig_item< value $i$ : $t$ >>
-      | "val"; "("; i = operator; ")"; ":"; t = ctyp ->
-          <:sig_item< value $i$ : $t$ >> ] ]
-  ;
-  module_declaration:
-    [ RIGHTA
-      [ ":"; mt = module_type -> <:module_type< $mt$ >>
-      | "("; i = UIDENT; ":"; t = module_type; ")"; mt = SELF ->
-          <:module_type< functor ( $i$ : $t$ ) -> $mt$ >> ] ]
-  ;
-  (* "with" constraints (additional type equations over signature
-     components) *)
-  with_constr:
-    [ [ "type"; tp = type_parameters; i = mod_ident; "="; t = ctyp ->
-          MLast.WcTyp loc i tp t
-      | "module"; i = mod_ident; "="; me = module_expr ->
-          MLast.WcMod loc i me ] ]
-  ;
-  (* Core expressions *)
-  expr:
-    [ "top" LEFTA
-      [ e1 = SELF; ";"; e2 = SELF ->
-          <:expr< do { $list:[e1 :: get_seq e2]$ } >>
-      | e1 = SELF; ";" -> e1 ]
-    | "expr1"
-      [ "let"; o = OPT "rec"; l = LIST1 let_binding SEP "and"; "in";
-        x = expr LEVEL "top" ->
-          <:expr< let $opt:o2b o$ $list:l$ in $x$ >>
-      | "let"; "module"; m = UIDENT; mb = module_binding; "in";
-        e = expr LEVEL "top" ->
-          <:expr< let module $m$ = $mb$ in $e$ >>
-      | "function"; OPT "|"; l = LIST1 match_case SEP "|" ->
-          <:expr< fun [ $list:l$ ] >>
-      | "fun"; p = patt LEVEL "simple"; e = fun_def ->
-          <:expr< fun [$p$ -> $e$] >>
-      | "match"; x = SELF; "with"; OPT "|"; l = LIST1 match_case SEP "|" ->
-          <:expr< match $x$ with [ $list:l$ ] >>
-      | "try"; x = SELF; "with"; OPT "|"; l = LIST1 match_case SEP "|" ->
-          <:expr< try $x$ with [ $list:l$ ] >>
-      | "if"; e1 = SELF; "then"; e2 = expr LEVEL "expr1";
-        e3 = [ "else"; e = expr LEVEL "expr1" -> e | -> <:expr< () >> ] ->
-          <:expr< if $e1$ then $e2$ else $e3$ >>
-      | "for"; i = LIDENT; "="; e1 = SELF; df = direction_flag; e2 = SELF;
-        "do"; e = SELF; "done" ->
-          <:expr< for $i$ = $e1$ $to:df$ $e2$ do { $list:get_seq e$ } >>
-      | "while"; e1 = SELF; "do"; e2 = SELF; "done" ->
-          <:expr< while $e1$ do { $list:get_seq e2$ } >> ]
-    | [ e = SELF; ","; el = LIST1 NEXT SEP "," ->
-          <:expr< ( $list:[e :: el]$ ) >> ]
-    | ":=" NONA
-      [ e1 = SELF; ":="; e2 = expr LEVEL "expr1" ->
-          <:expr< $e1$.val := $e2$ >>
-      | e1 = SELF; "<-"; e2 = expr LEVEL "expr1" -> <:expr< $e1$ := $e2$ >> ]
-    | "||" RIGHTA
-      [ e1 = SELF; f = [ op = "or" -> op | op = "||" -> op ]; e2 = SELF ->
-          <:expr< $lid:f$ $e1$ $e2$ >> ]
-    | "&&" RIGHTA
-      [ e1 = SELF; f = [ op = "&" -> op | op = "&&" -> op ]; e2 = SELF ->
-          <:expr< $lid:f$ $e1$ $e2$ >> ]
-    | "<" LEFTA
-      [ e1 = SELF;
-        f =
-          [ op = "<" -> op
-          | op = ">" -> op
-          | op = "<=" -> op
-          | op = ">=" -> op
-          | op = "=" -> op
-          | op = "<>" -> op
-          | op = "==" -> op
-          | op = "!=" -> op
-          | op = infixop0 -> op ];
-        e2 = SELF ->
-          <:expr< $lid:f$ $e1$ $e2$ >> ]
-    | "^" RIGHTA
-      [ e1 = SELF;
-        f = [ op = "^" -> op | op = "@" -> op | op = infixop1 -> op ];
-        e2 = SELF ->
-          <:expr< $lid:f$ $e1$ $e2$ >> ]
-    | RIGHTA
-      [ e1 = SELF; "::"; e2 = SELF -> <:expr< [$e1$ :: $e2$] >> ]
-    | "+" LEFTA
-      [ e1 = SELF;
-        f =
-          [ op = "+" -> op
-          | op = "-" -> op
-          | op = "+." -> op
-          | op = "-." -> op
-          | op = infixop2 -> op ];
-        e2 = SELF ->
-          <:expr< $lid:f$ $e1$ $e2$ >> ]
-    | "*" LEFTA
-      [ e1 = SELF;
-        f =
-          [ op = "*" -> op
-          | op = "/" -> op
-          | op = "*." -> op
-          | op = "/." -> op
-          | op = "land" -> op
-          | op = "lor" -> op
-          | op = "lxor" -> op
-          | op = "mod" -> op
-          | op = infixop3 -> op ];
-        e2 = SELF ->
-          <:expr< $lid:f$ $e1$ $e2$ >> ]
-    | "**" RIGHTA
-      [ e1 = SELF;
-        f =
-          [ op = "**" -> op
-          | op = "asr" -> op
-          | op = "lsl" -> op
-          | op = "lsr" -> op
-          | op = infixop4 -> op ];
-        e2 = SELF ->
-          <:expr< $lid:f$ $e1$ $e2$ >> ]
-    | "unary minus" NONA
-      [ f = [ op = "-" -> op | op = "-." -> op ]; e = SELF ->
-          <:expr< $mkumin loc f e$ >> ]
-    | "apply" LEFTA
-      [ e1 = SELF; e2 = SELF ->
-          match constr_expr_arity e1 with
-          [ 1 -> <:expr< $e1$ $e2$ >>
-          | _ ->
-              match e2 with
-              [ <:expr< ( $list:el$ ) >> ->
-                  List.fold_left (fun e1 e2 -> <:expr< $e1$ $e2$ >>) e1 el
-              | _ -> <:expr< $e1$ $e2$ >> ] ]
-      | "assert"; e = expr LEVEL "simple" ->
-          match e with
-          [ <:expr< False >> -> MLast.ExAsf loc
-          | _ -> MLast.ExAsr loc e ]
-      | "lazy"; e = SELF ->
-          <:expr< lazy ($e$) >> ]
-    | "simple" LEFTA
-      [ e1 = SELF; "."; "("; e2 = SELF; ")" -> <:expr< $e1$ .( $e2$ ) >>
-      | e1 = SELF; "."; "["; e2 = SELF; "]" -> <:expr< $e1$ .[ $e2$ ] >>
-      | e1 = SELF; "."; e2 = SELF -> <:expr< $e1$ . $e2$ >>
-      | "!"; e = SELF -> <:expr< $e$ . val>>
-      | f =
-          [ op = "~-" -> op
-          | op = "~-." -> op
-          | op = "~" -> op
-          | op = prefixop -> op ];
-        e = SELF ->
-          <:expr< $lid:f$ $e$ >>
-      | s = INT -> <:expr< $int:s$ >>
-      | s = FLOAT -> <:expr< $flo:s$ >>
-      | s = STRING -> <:expr< $str:s$ >>
-      | c = CHAR -> <:expr< $chr:c$ >>
-      | i = expr_ident -> i
-      | s = "false" -> <:expr< False >>
-      | s = "true" -> <:expr< True >>
-      | "["; "]" -> <:expr< [] >>
-      | "["; el = expr1_semi_list; "]" -> <:expr< $mklistexp loc None el$ >>
-      | "[|"; "|]" -> <:expr< [| |] >>
-      | "[|"; el = expr1_semi_list; "|]" -> <:expr< [| $list:el$ |] >>
-      | "{"; test_label_eq; lel = lbl_expr_list; "}" ->
-          <:expr< { $list:lel$ } >>
-      | "{"; e = expr LEVEL "simple"; "with"; lel = lbl_expr_list; "}" ->
-          <:expr< { ($e$) with $list:lel$ } >>
-      | "("; ")" -> <:expr< () >>
-      | "("; e = SELF; ":"; t = ctyp; ")" -> <:expr< ($e$ : $t$) >>
-      | "("; e = SELF; ")" -> <:expr< $e$ >>
-      | "("; "-"; ")" -> <:expr< $lid:"-"$ >>
-      | "("; "-."; ")" -> <:expr< $lid:"-."$ >>
-      | "("; op = operator; ")" -> <:expr< $lid:op$ >>
-      | "begin"; e = SELF; "end" -> <:expr< $e$ >>
-      | x = LOCATE ->
-          let x =
-            try
-              let i = String.index x ':' in
-              ({Lexing.pos_fname = "";
-                Lexing.pos_lnum = 0;
-                Lexing.pos_bol = 0;
-                Lexing.pos_cnum = int_of_string (String.sub x 0 i)},
-               String.sub x (i + 1) (String.length x - i - 1))
-            with
-            [ Not_found | Failure _ -> (Token.nowhere, x) ]
-          in
-          Pcaml.handle_expr_locate loc x
-      | x = QUOTATION ->
-          let x =
-            try
-              let i = String.index x ':' in
-              (String.sub x 0 i,
-               String.sub x (i + 1) (String.length x - i - 1))
-            with
-            [ Not_found -> ("", x) ]
-          in
-          Pcaml.handle_expr_quotation loc x ] ]
-  ;
-  let_binding:
-    [ [ p = patt; e = fun_binding ->
-          match patt_lid p with
-          [ Some (i, pl) ->
-              let e =
-                List.fold_left (fun e p -> <:expr< fun $p$ -> $e$ >>) e pl
-              in
-              (<:patt< $lid:i$ >>, e)
-          | None -> (p, e) ] ] ]
-  ;
-  fun_binding:
-    [ RIGHTA
-      [ p = patt LEVEL "simple"; e = SELF -> <:expr< fun $p$ -> $e$ >>
-      | "="; e = expr -> <:expr< $e$ >>
-      | ":"; t = ctyp; "="; e = expr -> <:expr< ($e$ : $t$) >> ] ]
-  ;
-  match_case:
-    [ [ x1 = patt; w = OPT [ "when"; e = expr -> e ]; "->"; x2 = expr ->
-          (x1, w, x2) ] ]
-  ;
-  lbl_expr_list:
-    [ [ le = lbl_expr; ";"; lel = SELF -> [le :: lel]
-      | le = lbl_expr; ";" -> [le]
-      | le = lbl_expr -> [le] ] ]
-  ;
-  lbl_expr:
-    [ [ i = patt_label_ident; "="; e = expr LEVEL "expr1" -> (i, e) ] ]
-  ;
-  expr1_semi_list:
-    [ [ e = expr LEVEL "expr1"; ";"; el = SELF -> [e :: el]
-      | e = expr LEVEL "expr1"; ";" -> [e]
-      | e = expr LEVEL "expr1" -> [e] ] ]
-  ;
-  fun_def:
-    [ RIGHTA
-      [ p = patt LEVEL "simple"; e = SELF -> <:expr< fun $p$ -> $e$ >>
-      | "->"; e = expr -> <:expr< $e$ >> ] ]
-  ;
-  expr_ident:
-    [ RIGHTA
-      [ i = LIDENT -> <:expr< $lid:i$ >>
-      | i = UIDENT -> <:expr< $uid:i$ >>
-      | m = UIDENT; "."; i = SELF ->
-          let rec loop m =
-            fun
-            [ <:expr< $x$ . $y$ >> -> loop <:expr< $m$ . $x$ >> y
-            | e -> <:expr< $m$ . $e$ >> ]
-          in
-          loop <:expr< $uid:m$ >> i
-      | m = UIDENT; "."; "("; i = operator; ")" ->
-          <:expr< $uid:m$ . $lid:i$ >> ] ]
-  ;
-  (* Patterns *)
-  patt:
-    [ LEFTA
-      [ p1 = SELF; "as"; i = LIDENT -> <:patt< ($p1$ as $lid:i$) >> ]
-    | LEFTA
-      [ p1 = SELF; "|"; p2 = SELF -> <:patt< $p1$ | $p2$ >> ]
-    | [ p = SELF; ","; pl = LIST1 NEXT SEP "," ->
-          <:patt< ( $list:[p :: pl]$) >> ]
-    | NONA
-      [ p1 = SELF; ".."; p2 = SELF -> <:patt< $p1$ .. $p2$ >> ]
-    | RIGHTA
-      [ p1 = SELF; "::"; p2 = SELF -> <:patt< [$p1$ :: $p2$] >> ]
-    | LEFTA
-      [ p1 = SELF; p2 = SELF ->
-          match constr_patt_arity p1 with
-          [ 1 -> <:patt< $p1$ $p2$ >>
-          | n ->
-              let p2 =
-                match p2 with
-                [ <:patt< _ >> when n > 1 ->
-                    let pl =
-                      loop n where rec loop n =
-                        if n = 0 then [] else [<:patt< _ >> :: loop (n - 1)]
-                    in
-                    <:patt< ( $list:pl$ ) >>
-                | _ -> p2 ]
-              in
-              match p2 with
-              [ <:patt< ( $list:pl$ ) >> ->
-                  List.fold_left (fun p1 p2 -> <:patt< $p1$ $p2$ >>) p1 pl
-              | _ -> <:patt< $p1$ $p2$ >> ] ] ]
-    | LEFTA
-      [ p1 = SELF; "."; p2 = SELF -> <:patt< $p1$ . $p2$ >> ]
-    | "simple"
-      [ s = LIDENT -> <:patt< $lid:s$ >>
-      | s = UIDENT -> <:patt< $uid:s$ >>
-      | s = INT -> <:patt< $int:s$ >>
-      | "-"; s = INT -> <:patt< $int:neg s$ >>
-      | s = STRING -> <:patt< $str:s$ >>
-      | s = CHAR -> <:patt< $chr:s$ >>
-      | s = "false" -> <:patt< False >>
-      | s = "true" -> <:patt< True >>
-      | "["; "]" -> <:patt< [] >>
-      | "["; pl = patt_semi_list; "]" -> <:patt< $mklistpat loc None pl$ >>
-      | "[|"; "|]" -> <:patt< [| |] >>
-      | "[|"; pl = patt_semi_list; "|]" -> <:patt< [| $list:pl$ |] >>
-      | "{"; lpl = lbl_patt_list; "}" -> <:patt< { $list:lpl$ } >>
-      | "("; ")" -> <:patt< () >>
-      | "("; p = SELF; ":"; t = ctyp; ")" -> <:patt< ($p$ : $t$) >>
-      | "("; p = SELF; ")" -> <:patt< $p$ >>
-      | "("; "-"; ")" -> <:patt< $lid:"-"$ >>
-      | "("; op = operator; ")" -> <:patt< $lid:op$ >>
-      | "_" -> <:patt< _ >>
-      | x = LOCATE ->
-          let x =
-            try
-              let i = String.index x ':' in
-              ({Lexing.pos_fname = "";
-                Lexing.pos_lnum = 0;
-                Lexing.pos_bol = 0;
-                Lexing.pos_cnum =  int_of_string (String.sub x 0 i)},
-               String.sub x (i + 1) (String.length x - i - 1))
-            with
-            [ Not_found | Failure _ -> (Token.nowhere, x) ]
-          in
-          Pcaml.handle_patt_locate loc x
-      | x = QUOTATION ->
-          let x =
-            try
-              let i = String.index x ':' in
-              (String.sub x 0 i,
-               String.sub x (i + 1) (String.length x - i - 1))
-            with
-            [ Not_found -> ("", x) ]
-          in
-          Pcaml.handle_patt_quotation loc x ] ]
-  ;
-  patt_semi_list:
-    [ [ p = patt; ";"; pl = SELF -> [p :: pl]
-      | p = patt; ";" -> [p]
-      | p = patt -> [p] ] ]
-  ;
-  lbl_patt_list:
-    [ [ le = lbl_patt; ";"; lel = SELF -> [le :: lel]
-      | le = lbl_patt; ";" -> [le]
-      | le = lbl_patt -> [le] ] ]
-  ;
-  lbl_patt:
-    [ [ i = patt_label_ident; "="; p = patt -> (i, p) ] ]
-  ;
-  patt_label_ident:
-    [ RIGHTA
-      [ i = UIDENT -> <:patt< $uid:i$ >>
-      | i = LIDENT -> <:patt< $lid:i$ >>
-      | m = UIDENT; "."; i = SELF -> <:patt< $uid:m$ . $i$ >> ] ]
-  ;
-  (* Type declaration *)
-  type_declaration:
-    [ [ tpl = type_parameters; n = type_patt; "="; tk = type_kind;
-        cl = LIST0 constrain ->
-          (n, tpl, tk, cl)
-      | tpl = type_parameters; n = type_patt; cl = LIST0 constrain ->
-          (n, tpl, <:ctyp< '$choose_tvar tpl$ >>, cl) ] ]
-  ;
-  type_patt:
-    [ [ n = LIDENT -> (loc, n) ] ]
-  ;
-  constrain:
-    [ [ "constraint"; t1 = ctyp; "="; t2 = ctyp -> (t1, t2) ] ]
-  ;
-  type_kind:
-    [ [ test_constr_decl; OPT "|";
-        cdl = LIST1 constructor_declaration SEP "|" ->
-          <:ctyp< [ $list:cdl$ ] >>
-      | t = ctyp -> <:ctyp< $t$ >>
-      | t = ctyp; "="; "{"; ldl = label_declarations; "}" ->
-          <:ctyp< $t$ == { $list:ldl$ } >>
-      | t = ctyp; "="; OPT "|"; cdl = LIST1 constructor_declaration SEP "|" ->
-          <:ctyp< $t$ == [ $list:cdl$ ] >>
-      | "{"; ldl = label_declarations; "}" -> <:ctyp< { $list:ldl$ } >> ] ]
-  ;
-  type_parameters:
-    [ [ -> (* empty *) []
-      | tp = type_parameter -> [tp]
-      | "("; tpl = LIST1 type_parameter SEP ","; ")" -> tpl ] ]
-  ;
-  type_parameter:
-    [ [ "'"; i = ident -> (i, (False, False)) ] ]
-  ;
-  constructor_declaration:
-    [ [ ci = UIDENT; "of"; cal = LIST1 ctyp LEVEL "ctyp1" SEP "*" ->
-          (loc, ci, cal)
-      | ci = UIDENT -> (loc, ci, []) ] ]
-  ;
-  label_declarations:
-    [ [ ld = label_declaration; ";"; ldl = SELF -> [ld :: ldl]
-      | ld = label_declaration; ";" -> [ld]
-      | ld = label_declaration -> [ld] ] ]
-  ;
-  label_declaration:
-    [ [ i = LIDENT; ":"; t = ctyp -> (loc, i, False, t)
-      | i = LABEL; t = ctyp -> (loc, i, False, t)
-      | "mutable"; i = LIDENT; ":"; t = ctyp -> (loc, i, True, t)
-      | "mutable"; i = LABEL; t = ctyp -> (loc, i, True, t) ] ]
-  ;
-  (* Core types *)
-  ctyp:
-    [ [ t1 = SELF; "as"; "'"; i = ident -> <:ctyp< $t1$ as '$i$ >> ]
-    | "arrow" RIGHTA
-      [ t1 = SELF; "->"; t2 = SELF -> <:ctyp< $t1$ -> $t2$ >> ]
-    | [ t = SELF; "*"; tl = LIST1 ctyp LEVEL "ctyp1" SEP "*" ->
-          <:ctyp< ( $list:[t :: tl]$ ) >> ]
-    | "ctyp1"
-      [ t1 = SELF; t2 = SELF -> <:ctyp< $t2$ $t1$ >> ]
-    | "ctyp2"
-      [ t1 = SELF; "."; t2 = SELF -> <:ctyp< $t1$ . $t2$ >>
-      | t1 = SELF; "("; t2 = SELF; ")" -> <:ctyp< $t1$ $t2$ >> ]
-    | "simple"
-      [ "'"; i = ident -> <:ctyp< '$i$ >>
-      | "_" -> <:ctyp< _ >>
-      | i = LIDENT -> <:ctyp< $lid:i$ >>
-      | i = UIDENT -> <:ctyp< $uid:i$ >>
-      | "("; t = SELF; ","; tl = LIST1 ctyp SEP ","; ")";
-        i = ctyp LEVEL "ctyp2" ->
-          List.fold_left (fun c a -> <:ctyp< $c$ $a$ >>) i [t :: tl]
-      | "("; t = SELF; ")" -> <:ctyp< $t$ >> ] ]
-  ;
-  (* Identifiers *)
-  ident:
-    [ [ i = LIDENT -> i
-      | i = UIDENT -> i ] ]
-  ;
-  mod_ident:
-    [ RIGHTA
-      [ i = UIDENT -> [i]
-      | i = LIDENT -> [i]
-      | m = UIDENT; "."; i = SELF -> [m :: i] ] ]
-  ;
-  (* Miscellaneous *)
-  direction_flag:
-    [ [ "to" -> True
-      | "downto" -> False ] ]
-  ;
-END;
-
-(* Objects and Classes *)
-
-value rec class_type_of_ctyp loc t =
-  match t with
-  [ <:ctyp< $lid:i$ >> -> <:class_type< $list:[i]$ >>
-  | <:ctyp< $uid:m$.$t$ >> -> <:class_type< $list:[m :: type_id_list t]$ >>
-  | _ -> raise_with_loc loc (Stream.Error "lowercase identifier expected") ]
-and type_id_list =
-  fun
-  [ <:ctyp< $uid:m$.$t$ >> -> [m :: type_id_list t]
-  | <:ctyp< $lid:i$ >> -> [i]
-  | t ->
-      raise_with_loc (loc_of_node t)
-        (Stream.Error "lowercase identifier expected") ]
-;
-
-value class_fun_binding = Grammar.Entry.create gram "class_fun_binding";
-
-EXTEND
-  GLOBAL: str_item sig_item expr ctyp class_sig_item class_str_item class_type
-    class_expr class_fun_binding;
-  str_item:
-    [ [ "class"; cd = LIST1 class_declaration SEP "and" ->
-          <:str_item< class $list:cd$ >>
-      | "class"; "type"; ctd = LIST1 class_type_declaration SEP "and" ->
-          <:str_item< class type $list:ctd$ >> ] ]
-  ;
-  sig_item:
-    [ [ "class"; cd = LIST1 class_description SEP "and" ->
-          <:sig_item< class $list:cd$ >>
-      | "class"; "type"; ctd = LIST1 class_type_declaration SEP "and" ->
-          <:sig_item< class type $list:ctd$ >> ] ]
-  ;
-  (* Class expressions *)
-  class_declaration:
-    [ [ vf = OPT "virtual"; ctp = class_type_parameters; i = LIDENT;
-        cfb = class_fun_binding ->
-          {MLast.ciLoc = loc; MLast.ciVir = o2b vf; MLast.ciPrm = ctp;
-           MLast.ciNam = i; MLast.ciExp = cfb} ] ]
-  ;
-  class_fun_binding:
-    [ [ "="; ce = class_expr -> ce
-      | ":"; ct = class_type; "="; ce = class_expr ->
-          <:class_expr< ($ce$ : $ct$) >>
-      | p = patt LEVEL "simple"; cfb = SELF ->
-          <:class_expr< fun $p$ -> $cfb$ >> ] ]
-  ;
-  class_type_parameters:
-    [ [ -> (loc, [])
-      | "["; tpl = LIST1 type_parameter SEP ","; "]" -> (loc, tpl) ] ]
-  ;
-  class_fun_def:
-    [ [ p = patt LEVEL "simple"; "->"; ce = class_expr ->
-          <:class_expr< fun $p$ -> $ce$ >>
-      | p = patt LEVEL "simple"; cfd = SELF ->
-          <:class_expr< fun $p$ -> $cfd$ >> ] ]
-  ;
-  class_expr:
-    [ "top"
-      [ "fun"; cfd = class_fun_def -> cfd
-      | "let"; rf = OPT "rec"; lb = LIST1 let_binding SEP "and"; "in";
-        ce = SELF ->
-          <:class_expr< let $opt:o2b rf$ $list:lb$ in $ce$ >> ]
-    | "apply" NONA
-      [ ce = SELF; e = expr LEVEL "label" ->
-          <:class_expr< $ce$ $e$ >> ]
-    | "simple"
-      [ "["; ct = ctyp; ","; ctcl = LIST1 ctyp SEP ","; "]";
-        ci = class_longident ->
-          <:class_expr< $list:ci$ [ $list:[ct :: ctcl]$ ] >>
-      | "["; ct = ctyp; "]"; ci = class_longident ->
-          <:class_expr< $list:ci$ [ $ct$ ] >>
-      | ci = class_longident -> <:class_expr< $list:ci$ >>
-      | "object"; cspo = OPT class_self_patt; cf = class_structure; "end" ->
-          <:class_expr< object $opt:cspo$ $list:cf$ end >>
-      | "("; ce = SELF; ":"; ct = class_type; ")" ->
-          <:class_expr< ($ce$ : $ct$) >>
-      | "("; ce = SELF; ")" -> ce ] ]
-  ;
-  class_structure:
-    [ [ cf = LIST0 class_str_item -> cf ] ]
-  ;
-  class_self_patt:
-    [ [ "("; p = patt; ")" -> p
-      | "("; p = patt; ":"; t = ctyp; ")" -> <:patt< ($p$ : $t$) >> ] ]
-  ;
-  class_str_item:
-    [ [ "inherit"; ce = class_expr; pb = OPT [ "as"; i = LIDENT -> i ] ->
-          <:class_str_item< inherit $ce$ $opt:pb$ >>
-      | "val"; (lab, mf, e) = cvalue ->
-          <:class_str_item< value $opt:mf$ $lab$ = $e$ >>
-      | "method"; "private"; "virtual"; l = label; ":"; t = ctyp ->
-          <:class_str_item< method virtual private $l$ : $t$ >>
-      | "method"; "virtual"; "private"; l = label; ":"; t = ctyp ->
-          <:class_str_item< method virtual private $l$ : $t$ >>
-      | "method"; "virtual"; l = label; ":"; t = ctyp ->
-          <:class_str_item< method virtual $l$ : $t$ >>
-      | "method"; "private"; l = label; fb = fun_binding ->
-          <:class_str_item< method private $l$ = $fb$ >>
-      | "method"; l = label; fb = fun_binding ->
-          <:class_str_item< method $l$ = $fb$ >>
-      | "constraint"; t1 = ctyp; "="; t2 = ctyp ->
-          <:class_str_item< type $t1$ = $t2$ >>
-      | "initializer"; se = expr -> <:class_str_item< initializer $se$ >> ] ]
-  ;
-  cvalue:
-    [ [ mf = OPT "mutable"; l = label; "="; e = expr -> (l, o2b mf, e)
-      | mf = OPT "mutable"; l = label; ":"; t = ctyp; "="; e = expr ->
-          (l, o2b mf, <:expr< ($e$ : $t$) >>)
-      | mf = OPT "mutable"; l = label; ":"; t1 = ctyp; ":>"; t2 = ctyp; "=";
-        e = expr ->
-          (l, o2b mf, <:expr< ($e$ : $t1$ :> $t2$) >>)
-      | mf = OPT "mutable"; l = label; ":>"; t = ctyp; "="; e = expr ->
-          (l, o2b mf, <:expr< ($e$ :> $t$) >>) ] ]
-  ;
-  label:
-    [ [ i = LIDENT -> i ] ]
-  ;
-  (* Class types *)
-  class_type:
-    [ [ t = ctyp LEVEL "ctyp1" -> class_type_of_ctyp loc t
-      | t = ctyp LEVEL "ctyp1"; "->"; ct = SELF ->
-          <:class_type< [ $t$ ] -> $ct$ >>
-      | t = ctyp LEVEL "ctyp1"; "*"; tl = LIST1 ctyp LEVEL "simple" SEP "*";
-        "->"; ct = SELF ->
-          <:class_type< [ ($t$ * $list:tl$) ] -> $ct$ >>
-      | cs = class_signature -> cs ] ]
-  ;
-  class_signature:
-    [ [ "["; tl = LIST1 ctyp SEP ","; "]"; id = clty_longident ->
-          <:class_type< $list:id$ [ $list:tl$ ] >>
-      | id = clty_longident -> <:class_type< $list:id$ >>
-      | "object"; cst = OPT class_self_type; csf = LIST0 class_sig_item;
-        "end" ->
-          <:class_type< object $opt:cst$ $list:csf$ end >> ] ]
-  ;
-  class_self_type:
-    [ [ "("; t = ctyp; ")" -> t ] ]
-  ;
-  class_sig_item:
-    [ [ "inherit"; cs = class_signature -> <:class_sig_item< inherit $cs$ >>
-      | "val"; mf = OPT "mutable"; l = label; ":"; t = ctyp ->
-          <:class_sig_item< value $opt:o2b mf$ $l$ : $t$ >>
-      | "method"; "private"; "virtual"; l = label; ":"; t = ctyp ->
-          <:class_sig_item< method virtual private $l$ : $t$ >>
-      | "method"; "virtual"; "private"; l = label; ":"; t = ctyp ->
-          <:class_sig_item< method virtual private $l$ : $t$ >>
-      | "method"; "virtual"; l = label; ":"; t = ctyp ->
-          <:class_sig_item< method virtual $l$ : $t$ >>
-      | "method"; "private"; l = label; ":"; t = ctyp ->
-          <:class_sig_item< method private $l$ : $t$ >>
-      | "method"; l = label; ":"; t = ctyp ->
-          <:class_sig_item< method $l$ : $t$ >>
-      | "constraint"; t1 = ctyp; "="; t2 = ctyp ->
-          <:class_sig_item< type $t1$ = $t2$ >> ] ]
-  ;
-  class_description:
-    [ [ vf = OPT "virtual"; ctp = class_type_parameters; n = LIDENT; ":";
-        ct = class_type ->
-          {MLast.ciLoc = loc; MLast.ciVir = o2b vf; MLast.ciPrm = ctp;
-           MLast.ciNam = n; MLast.ciExp = ct}
-      | vf = OPT "virtual"; ctp = class_type_parameters; n = LABEL;
-        ct = class_type ->
-          {MLast.ciLoc = loc; MLast.ciVir = o2b vf; MLast.ciPrm = ctp;
-           MLast.ciNam = n; MLast.ciExp = ct} ] ]
-  ;
-  class_type_declaration:
-    [ [ vf = OPT "virtual"; ctp = class_type_parameters; n = LIDENT; "=";
-        cs = class_signature ->
-          {MLast.ciLoc = loc; MLast.ciVir = o2b vf; MLast.ciPrm = ctp;
-           MLast.ciNam = n; MLast.ciExp = cs} ] ]
-  ;
-  (* Expressions *)
-  expr: LEVEL "apply"
-    [ LEFTA
-      [ "new"; i = class_longident -> <:expr< new $list:i$ >> ] ]
-  ;
-  expr: LEVEL "simple"
-    [ [ e = SELF; "#"; lab = label -> <:expr< $e$ # $lab$ >> ] ]
-  ;
-  expr: LEVEL "simple"
-    [ [ "("; e = SELF; ":"; t1 = ctyp; ":>"; t2 = ctyp; ")" ->
-          <:expr< ($e$ : $t1$ :> $t2$) >>
-      | "("; e = SELF; ":>"; t = ctyp; ")" -> <:expr< ($e$ :> $t$) >>
-      | "{<"; ">}" -> <:expr< {< >} >>
-      | "{<"; fel = field_expr_list; ">}" -> <:expr< {< $list:fel$ >} >> ] ]
-  ;
-  field_expr_list:
-    [ [ l = label; "="; e = expr LEVEL "expr1"; ";"; fel = SELF ->
-          [(l, e) :: fel]
-      | l = label; "="; e = expr LEVEL "expr1"; ";" -> [(l, e)]
-      | l = label; "="; e = expr LEVEL "expr1" -> [(l, e)] ] ]
-  ;
-  (* Core types *)
-  ctyp: LEVEL "simple"
-    [ [ "#"; id = class_longident -> <:ctyp< # $list:id$ >>
-      | "<"; (ml, v) = meth_list; ">" -> <:ctyp< < $list:ml$ $opt:v$ > >>
-      | "<"; ">" -> <:ctyp< < > >> ] ]
-  ;
-  meth_list:
-    [ [ f = field; ";"; (ml, v) = SELF -> ([f :: ml], v)
-      | f = field; ";" -> ([f], False)
-      | f = field -> ([f], False)
-      | ".." -> ([], True) ] ]
-  ;
-  field:
-    [ [ lab = LIDENT; ":"; t = ctyp -> (lab, t)
-      | lab = LABEL; t = ctyp -> (lab, t) ] ]
-  ;
-  (* Identifiers *)
-  clty_longident:
-    [ [ m = UIDENT; "."; l = SELF -> [m :: l]
-      | i = LIDENT -> [i] ] ]
-  ;
-  class_longident:
-    [ [ m = UIDENT; "."; l = SELF -> [m :: l]
-      | i = LIDENT -> [i] ] ]
-  ;
-END;
-
-(* Labels *)
-
-EXTEND
-  GLOBAL: ctyp expr patt fun_def fun_binding class_type class_fun_binding;
-  ctyp: AFTER "arrow"
-    [ NONA
-      [ i = LABEL; t = SELF -> <:ctyp< ~ $i$ : $t$ >>
-      | "?"; i = LABEL; t = SELF -> <:ctyp< ? $i$ : $t$ >> ] ]
-  ;
-  ctyp: LEVEL "simple"
-    [ [ "["; OPT "|"; rfl = LIST0 row_field SEP "|"; "]" ->
-          <:ctyp< [ = $list:rfl$ ] >>
-      | "["; ">"; OPT "|"; rfl = LIST1 row_field SEP "|"; "]" ->
-          <:ctyp< [ > $list:rfl$ ] >>
-      | "[<"; OPT "|"; rfl = LIST1 row_field SEP "|"; "]" ->
-          <:ctyp< [ < $list:rfl$ ] >>
-      | "[<"; OPT "|"; rfl = LIST1 row_field SEP "|"; ">";
-        ntl = LIST1 name_tag; "]" ->
-          <:ctyp< [ < $list:rfl$ > $list:ntl$ ] >> ] ]
-  ;
-  row_field:
-    [ [ "`"; i = ident -> MLast.RfTag i False []
-      | "`"; i = ident; "of"; ao = OPT "&"; l = LIST1 ctyp SEP "&" ->
-          MLast.RfTag i (o2b ao) l
-      | "`"; i = ident; "&"; l = LIST1 ctyp SEP "&" -> MLast.RfTag i True l
-      | "`"; i = ident; l = LIST1 ctyp SEP "&" -> MLast.RfTag i False l ] ]
-  ;
-  name_tag:
-    [ [ "`"; i = ident -> i ] ]
-  ;
-  expr: LEVEL "expr1"
-    [ [ "fun"; p = labeled_patt; e = fun_def -> <:expr< fun $p$ -> $e$ >> ] ]
-  ;
-  expr: AFTER "apply"
-    [ "label"
-      [ i = LABEL; e = SELF -> <:expr< ~ $i$ : $e$ >>
-      | i = ELABEL -> <:expr< ~ $i$ >>
-      | "?"; i = LABEL; e = SELF -> <:expr< ? $i$ : $e$ >>
-      | "?"; i = ELABEL -> <:expr< ? $i$ >> ] ]
-  ;
-  expr: LEVEL "simple"
-    [ [ "`"; s = ident -> <:expr< ` $s$ >> ] ]
-  ;
-  fun_def:
-    [ [ p = labeled_patt; e = SELF -> <:expr< fun $p$ -> $e$ >> ] ]
-  ;
-  fun_binding:
-    [ [ p = labeled_patt; e = SELF -> <:expr< fun $p$ -> $e$ >> ] ]
-  ;
-  patt: LEVEL "simple"
-    [ [ "`"; s = ident -> <:patt< ` $s$ >> ] ]
-  ;
-  labeled_patt:
-    [ [ i = LABEL; p = patt LEVEL "simple" -> <:patt< ~ $i$ : $p$ >>
-      | i = ELABEL -> <:patt< ~ $i$ >>
-      | "?"; i = LABEL; j = LIDENT -> <:patt< ? $i$ : ($lid:j$) >>
-      | "?"; "("; i = LABEL; j = LIDENT; ")" -> <:patt< ? $i$ : ($lid:j$) >>
-      | "?"; "("; i = LABEL; j = LIDENT; "="; e = expr; ")" ->
-          <:patt< ? $i$ : ( $lid:j$ = $e$ ) >>
-      | "?"; i = ELABEL -> <:patt< ? $i$ : ($lid:i$) >>
-      | "?"; "("; i = ELABEL; "="; e = expr; ")" ->
-          <:patt< ? $i$ : ( $lid:i$ = $e$ ) >> ] ]
-  ;
-  class_type:
-    [ [ i = LABEL; t = ctyp LEVEL "ctyp1"; "->"; ct = SELF ->
-          <:class_type< [ ~ $i$ : $t$ ] -> $ct$ >>
-      | "?"; i = LABEL; t = ctyp LEVEL "ctyp1"; "->"; ct = SELF ->
-          <:class_type< [ ? $i$ : $t$ ] -> $ct$ >> ] ]
-  ;
-  class_fun_binding:
-    [ [ p = labeled_patt; cfb = SELF -> <:class_expr< fun $p$ -> $cfb$ >> ] ]
-  ;
-  ident:
-    [ [ i = LIDENT -> i
-      | i = UIDENT -> i ] ]
-  ;
-END;
-
-type spat_comp =
-  [ SpTrm of Loc.t and MLast.patt and option MLast.expr
-  | SpNtr of Loc.t and MLast.patt and MLast.expr
-  | SpStr of Loc.t and MLast.patt ]
-;
-type sexp_comp =
-  [ SeTrm of Loc.t and MLast.expr | SeNtr of Loc.t and MLast.expr ]
-;
-
-value strm_n = "__strm";
-value peek_fun loc = <:expr< Stream.peek >>;
-value junk_fun loc = <:expr< Stream.junk >>;
-
-(* Parsers. *)
-(* In syntax generated, many cases are optimisations. *)
-
-value rec pattern_eq_expression p e =
-  match (p, e) with
-  [ (<:patt< $lid:a$ >>, <:expr< $lid:b$ >>) -> a = b
-  | (<:patt< $uid:a$ >>, <:expr< $uid:b$ >>) -> a = b
-  | (<:patt< $p1$ $p2$ >>, <:expr< $e1$ $e2$ >>) ->
-      pattern_eq_expression p1 e1 && pattern_eq_expression p2 e2
-  | _ -> False ]
-;
-
-value is_raise e =
-  match e with
-  [ <:expr< raise $_$ >> -> True
-  | _ -> False ]
-;
-
-value is_raise_failure e =
-  match e with
-  [ <:expr< raise Stream.Failure >> -> True
-  | _ -> False ]
-;
-
-value rec handle_failure e =
-  match e with
-  [ <:expr< try $te$ with [ Stream.Failure -> $e$] >> -> handle_failure e
-  | <:expr< match $me$ with [ $list:pel$ ] >> ->
-      handle_failure me &&
-      List.for_all
-        (fun
-         [ (_, None, e) -> handle_failure e
-         | _ -> False ])
-        pel
-  | <:expr< let $list:pel$ in $e$ >> ->
-      List.for_all (fun (p, e) -> handle_failure e) pel && handle_failure e
-  | <:expr< $lid:_$ >> | <:expr< $int:_$ >> | <:expr< $str:_$ >> |
-    <:expr< $chr:_$ >> | <:expr< fun [ $list:_$ ] >> | <:expr< $uid:_$ >> ->
-      True
-  | <:expr< raise $e$ >> ->
-      match e with
-      [ <:expr< Stream.Failure >> -> False
-      | _ -> True ]
-  | <:expr< $f$ $x$ >> ->
-      is_constr_apply f && handle_failure f && handle_failure x
-  | _ -> False ]
-and is_constr_apply =
-  fun
-  [ <:expr< $uid:_$ >> -> True
-  | <:expr< $lid:_$ >> -> False
-  | <:expr< $x$ $_$ >> -> is_constr_apply x
-  | _ -> False ]
-;
-
-value rec subst v e =
-  let loc = MLast.loc_of_expr e in
-  match e with
-  [ <:expr< $lid:x$ >> ->
-      let x = if x = v then strm_n else x in
-      <:expr< $lid:x$ >>
-  | <:expr< $uid:_$ >> -> e
-  | <:expr< $int:_$ >> -> e
-  | <:expr< $chr:_$ >> -> e
-  | <:expr< $str:_$ >> -> e
-  | <:expr< $_$ . $_$ >> -> e
-  | <:expr< let $opt:rf$ $list:pel$ in $e$ >> ->
-      <:expr< let $opt:rf$ $list:List.map (subst_pe v) pel$ in $subst v e$ >>
-  | <:expr< $e1$ $e2$ >> -> <:expr< $subst v e1$ $subst v e2$ >>
-  | <:expr< ( $list:el$ ) >> -> <:expr< ( $list:List.map (subst v) el$ ) >>
-  | _ -> raise Not_found ]
-and subst_pe v (p, e) =
-  match p with
-  [ <:patt< $lid:v'$ >> -> if v = v' then (p, e) else (p, subst v e)
-  | _ -> raise Not_found ]
-;
-
-value stream_pattern_component skont ckont =
-  fun
-  [ SpTrm loc p wo ->
-      <:expr< match $peek_fun loc$ $lid:strm_n$ with
-              [ Some $p$ $when:wo$ ->
-                  do { $junk_fun loc$ $lid:strm_n$; $skont$ }
-              | _ -> $ckont$ ] >>
-  | SpNtr loc p e ->
-      let e =
-        match e with
-        [ <:expr< fun [ ($lid:v$ : Stream.t _) -> $e$ ] >> when v = strm_n ->
-            e
-        | _ -> <:expr< $e$ $lid:strm_n$ >> ]
-      in
-      if pattern_eq_expression p skont then
-        if is_raise_failure ckont then e
-        else if handle_failure e then e
-        else <:expr< try $e$ with [ Stream.Failure -> $ckont$ ] >>
-      else if is_raise_failure ckont then <:expr< let $p$ = $e$ in $skont$ >>
-      else if pattern_eq_expression <:patt< Some $p$ >> skont then
-        <:expr< try Some $e$ with [ Stream.Failure -> $ckont$ ] >>
-      else if is_raise ckont then
-        let tst =
-          if handle_failure e then e
-          else <:expr< try $e$ with [ Stream.Failure -> $ckont$ ] >>
-        in
-        <:expr< let $p$ = $tst$ in $skont$ >>
-      else
-        <:expr< match try Some $e$ with [ Stream.Failure -> None ] with
-                [ Some $p$ -> $skont$
-                | _ -> $ckont$ ] >>
-  | SpStr loc p ->
-      try
-        match p with
-        [ <:patt< $lid:v$ >> -> subst v skont
-        | _ -> raise Not_found ]
-      with
-      [ Not_found -> <:expr< let $p$ = $lid:strm_n$ in $skont$ >> ] ]
-;
-
-value rec stream_pattern loc epo e ekont =
-  fun
-  [ [] ->
-      match epo with
-      [ Some ep -> <:expr< let $ep$ = Stream.count $lid:strm_n$ in $e$ >>
-      | _ -> e ]
-  | [(spc, err) :: spcl] ->
-      let skont =
-        let ekont err =
-          let str =
-            match err with
-            [ Some estr -> estr
-            | _ -> <:expr< "" >> ]
-          in
-          <:expr< raise (Stream.Error $str$) >>
-        in
-        stream_pattern loc epo e ekont spcl
-      in
-      let ckont = ekont err in
-      stream_pattern_component skont ckont spc ]
-;
-
-value stream_patterns_term loc ekont tspel =
-  let pel =
-    List.map
-      (fun (p, w, loc, spcl, epo, e) ->
-         let p = <:patt< Some $p$ >> in
-         let e =
-           let ekont err =
-             let str =
-               match err with
-               [ Some estr -> estr
-               | _ -> <:expr< "" >> ]
-             in
-             <:expr< raise (Stream.Error $str$) >>
-           in
-           let skont = stream_pattern loc epo e ekont spcl in
-           <:expr< do { $junk_fun loc$ $lid:strm_n$; $skont$ } >>
-         in
-         (p, w, e))
-      tspel
-  in
-  let pel = pel @ [(<:patt< _ >>, None, ekont ())] in
-  <:expr< match $peek_fun loc$ $lid:strm_n$ with [ $list:pel$ ] >>
-;
-
-value rec group_terms =
-  fun
-  [ [([(SpTrm loc p w, None) :: spcl], epo, e) :: spel] ->
-      let (tspel, spel) = group_terms spel in
-      ([(p, w, loc, spcl, epo, e) :: tspel], spel)
-  | spel -> ([], spel) ]
-;
-
-value rec parser_cases loc =
-  fun
-  [ [] -> <:expr< raise Stream.Failure >>
-  | spel ->
-      match group_terms spel with
-      [ ([], [(spcl, epo, e) :: spel]) ->
-          stream_pattern loc epo e (fun _ -> parser_cases loc spel) spcl
-      | (tspel, spel) ->
-          stream_patterns_term loc (fun _ -> parser_cases loc spel) tspel ] ]
-;
-
-value cparser loc bpo pc =
-  let e = parser_cases loc pc in
-  let e =
-    match bpo with
-    [ Some bp -> <:expr< let $bp$ = Stream.count $lid:strm_n$ in $e$ >>
-    | None -> e ]
-  in
-  let p = <:patt< ($lid:strm_n$ : Stream.t _) >> in
-  <:expr< fun $p$ -> $e$ >>
-;
-
-value cparser_match loc me bpo pc =
-  let pc = parser_cases loc pc in
-  let e =
-    match bpo with
-    [ Some bp -> <:expr< let $bp$ = Stream.count $lid:strm_n$ in $pc$ >>
-    | None -> pc ]
-  in
-  <:expr< let $lid:strm_n$ = $me$ in $e$ >>
-;
-
-(* streams *)
-
-value rec not_computing =
-  fun
-  [ <:expr< $lid:_$ >> | <:expr< $uid:_$ >> | <:expr< $int:_$ >> |
-    <:expr< $flo:_$ >> | <:expr< $chr:_$ >> | <:expr< $str:_$ >> ->
-      True
-  | <:expr< $x$ $y$ >> -> is_cons_apply_not_computing x && not_computing y
-  | _ -> False ]
-and is_cons_apply_not_computing =
-  fun
-  [ <:expr< $uid:_$ >> -> True
-  | <:expr< $lid:_$ >> -> False
-  | <:expr< $x$ $y$ >> -> is_cons_apply_not_computing x && not_computing y
-  | _ -> False ]
-;
-
-value slazy loc e =
-  match e with
-  [ <:expr< $f$ () >> ->
-      match f with
-      [ <:expr< $lid:_$ >> -> f
-      | _ -> <:expr< fun _ -> $e$ >> ]
-  | _ -> <:expr< fun _ -> $e$ >> ]
-;
-
-value rec cstream gloc =
-  fun
-  [ [] ->
-      let loc = gloc in
-      <:expr< Stream.sempty >>
-  | [SeTrm loc e] ->
-      if not_computing e then <:expr< Stream.ising $e$ >>
-      else <:expr< Stream.lsing $slazy loc e$ >>
-  | [SeTrm loc e :: secl] ->
-      if not_computing e then <:expr< Stream.icons $e$ $cstream gloc secl$ >>
-      else <:expr< Stream.lcons $slazy loc e$ $cstream gloc secl$ >>
-  | [SeNtr loc e] ->
-      if not_computing e then e else <:expr< Stream.slazy $slazy loc e$ >>
-  | [SeNtr loc e :: secl] ->
-      if not_computing e then <:expr< Stream.iapp $e$ $cstream gloc secl$ >>
-      else <:expr< Stream.lapp $slazy loc e$ $cstream gloc secl$ >> ]
-;
-
-(* Syntax extensions in OCaml grammar *)
-
-EXTEND
-  GLOBAL: expr;
-  expr: LEVEL "expr1"
-    [ [ "parser"; po = OPT ipatt; OPT "|"; pcl = LIST1 parser_case SEP "|" ->
-          <:expr< $cparser loc po pcl$ >>
-      | "match"; e = SELF; "with"; "parser"; po = OPT ipatt; OPT "|";
-        pcl = LIST1 parser_case SEP "|" ->
-          <:expr< $cparser_match loc e po pcl$ >> ] ]
-  ;
-  parser_case:
-    [ [ "[<"; sp = stream_patt; ">]"; po = OPT ipatt; "->"; e = expr ->
-          (sp, po, e) ] ]
-  ;
-  stream_patt:
-    [ [ spc = stream_patt_comp -> [(spc, None)]
-      | spc = stream_patt_comp; ";" -> [(spc, None)]
-      | spc = stream_patt_comp; ";"; sp = stream_patt_comp_err_list ->
-          [(spc, None) :: sp]
-      | -> (* empty *) [] ] ]
-  ;
-  stream_patt_comp_err_list:
-    [ [ spc = stream_patt_comp_err -> [spc]
-      | spc = stream_patt_comp_err; ";" -> [spc]
-      | spc = stream_patt_comp_err; ";"; sp = SELF -> [spc :: sp] ] ]
-  ;
-  stream_patt_comp:
-    [ [ "'"; p = patt; eo = OPT [ "when"; e = expr LEVEL "expr1" -> e ] ->
-          SpTrm loc p eo
-      | p = patt; "="; e = expr LEVEL "expr1" -> SpNtr loc p e
-      | p = patt -> SpStr loc p ] ]
-  ;
-  stream_patt_comp_err:
-    [ [ spc = stream_patt_comp;
-        eo = OPT [ "?"; e = expr LEVEL "expr1" -> e ] ->
-          (spc, eo) ] ]
-  ;
-  ipatt:
-    [ [ i = LIDENT -> <:patt< $lid:i$ >> ] ]
-  ;
-  expr: LEVEL "simple"
-    [ [ "[<"; ">]" -> <:expr< $cstream loc []$ >>
-      | "[<"; sel = stream_expr_comp_list; ">]" ->
-          <:expr< $cstream loc sel$ >> ] ]
-  ;
-  stream_expr_comp_list:
-    [ [ se = stream_expr_comp; ";"; sel = SELF -> [se :: sel]
-      | se = stream_expr_comp; ";" -> [se]
-      | se = stream_expr_comp -> [se] ] ]
-  ;
-  stream_expr_comp:
-    [ [ "'"; e = expr LEVEL "expr1" -> SeTrm loc e
-      | e = expr LEVEL "expr1" -> SeNtr loc e ] ]
-  ;
-END;
diff --git a/camlp4/unmaintained/scheme/.depend b/camlp4/unmaintained/scheme/.depend
deleted file mode 100644 (file)
index e69de29..0000000
diff --git a/camlp4/unmaintained/scheme/Makefile b/camlp4/unmaintained/scheme/Makefile
deleted file mode 100644 (file)
index 4034629..0000000
+++ /dev/null
@@ -1,86 +0,0 @@
-#########################################################################
-#                                                                       #
-#                                 OCaml                                 #
-#                                                                       #
-#                                Camlp4                                 #
-#                                                                       #
-#   Copyright 2004 Institut National de Recherche en Informatique et    #
-#   en Automatique.  All rights reserved.  This file is distributed     #
-#   under the terms of the GNU Library General Public License, with     #
-#   the special exception on linking described in file ../../../LICENSE.#
-#                                                                       #
-#########################################################################
-#
-# Makefile for pa_lefteval
-# M.Mauny
-#
-
-include ../../config/Makefile.cnf
-
-OCAMLTOP=../../..
-CAMLP4=../../camlp4/camlp4$(EXE)
-
-OCAMLC=$(OCAMLTOP)/ocamlc$(EXE)
-OCAMLOPT=$(OCAMLTOP)/ocamlopt$(EXE)
-
-P4INCLUDES= -nolib -I ../../meta -I ../../etc
-OCAMLINCLUDES= -nostdlib -I $(OCAMLTOP)/stdlib -I ../../camlp4 -I ../../lib -I ../../etc
-OCAMLCFLAGS=-warn-error A $(OCAMLINCLUDES)
-
-SCHSRC=pa_scheme.sc
-SRC=pa_scheme.ml  pr_scheme.ml  pr_schp_main.ml
-OBJS=$(SRC:.ml=.cmo)
-OBJSX=$(OCAMLSRC:.ml=.cmx)
-
-all: $(OBJS) pr_schemep.cmo camlp4sch$(EXE)
-
-opt: all
-
-bootstrap: camlp4sch$(EXE) save
-       ./camlp4sch$(EXE) ../../etc/q_phony.cmo ../../meta/pa_extend.cmo ../../etc/pr_r.cmo ../../etc/pr_extend.cmo ../../etc/pr_rp.cmo -impl pa_scheme.sc \
-         | sed -e 's/^;; \(.*\)$$/(* \1 *)/' -e 's/^; \(.*\)$$/(* \1 *)/' \
-               -e 's/$$Id.*\$$/File generated by pretty print; do not edit!/' > pa_scheme.ml
-       @if cmp -s pa_scheme.ml SAVED/pa_scheme.ml; then \
-               echo 'pa_scheme.ml and SAVED/pa_scheme.ml are identical' ; \
-        else \
-               echo '**** Note: pa_scheme.ml differs from SAVED/pa_scheme.ml'; \
-        fi
-
-save:
-       test -d SAVED || mkdir SAVED
-       mkdir SAVED.$$$$ && mv SAVED pa_scheme.ml SAVED.$$$$ && mv SAVED.$$$$ SAVED
-
-restore:
-       mv SAVED SAVED.$$$$ && mv SAVED.$$$$/* . && rmdir SAVED.$$$$
-
-depend:
-       cp .depend .depend.bak
-       > .depend
-       for file in $(SRC); do \
-         $(CAMLP4) $(P4INCLUDES) `awk 'NR == 1 { ORS=" "; for (i=2; i < NF; i++) print $$i; } ' $$file` pr_depend.cmo $$i | \
-         sed -e 's| \.\./\.\./\.\.| $$(OCAMLTOP)|g' >> .depend; \
-       done
-
-clean:
-       rm -f camlp4sch$(EXE) *.cm* *.$(O) *.bak .*.bak
-
-camlp4sch: pa_scheme.cmo
-       rm -f camlp4sch
-       DIR=`pwd` && cd ../../camlp4 && $(MAKE) CAMLP4=$$DIR/camlp4sch CAMLP4M="-I $$DIR pa_scheme.cmo ../meta/pr_dump.cmo"
-
-pr_schemep.cmo: pr_schp_main.cmo
-       $(OCAMLC) ../../etc/parserify.cmo pr_schp_main.cmo -a -o $@
-
-.SUFFIXES: .cmx .cmo .cmi .ml .mli
-
-.mli.cmi:
-       $(OCAMLC) $(OCAMLCFLAGS) -c $<
-
-
-.ml.cmo:
-       $(OCAMLC) $(OCAMLCFLAGS) -pp "$(CAMLP4) $(P4INCLUDES) `awk 'NR == 1 { ORS=" "; for (i=2; i < NF; i++) print $$i; } ' $<` -loc loc" -c $<
-
-.ml.cmx:
-       $(OCAMLOPT) $(OCAMLCFLAGS) -pp "$(CAMLP4) $(P4INCLUDES)  `awk 'NR == 1 { ORS=" "; for (i=2; i < NF; i++) print $$i; } ' $<` -loc loc" -c $<
-
-include .depend
diff --git a/camlp4/unmaintained/scheme/README b/camlp4/unmaintained/scheme/README
deleted file mode 100644 (file)
index 830402b..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-This is an application of or an extension for Camlp4. Although it is
-currently distributed with OCaml/Camlp4, it may or may not be
-actively maintained.
-
-It probably won't be part of future OCaml/Camlp4 distributions but be
-accessible from the Camlp4 hump. If you are interested in developing
-this package further and/or actively maintain it, please let us know
-(caml@inria.fr)
-
-This package is distributed under the same license as the OCaml
-Library (that is, LGPL with a special exception allowing both
-static and dynamic link).
-
--- Michel Mauny
-
diff --git a/camlp4/unmaintained/scheme/pa_scheme.ml b/camlp4/unmaintained/scheme/pa_scheme.ml
deleted file mode 100644 (file)
index 4389321..0000000
+++ /dev/null
@@ -1,1093 +0,0 @@
-(* pa_r.cmo pa_rp.cmo pa_extend.cmo q_MLast.cmo pr_dump.cmo *)
-(* ********************************************************************** *)
-(*                                                                        *)
-(*                                Camlp4                                  *)
-(*                                                                        *)
-(*     Daniel de Rauglaudre, projet Cristal, INRIA Rocquencourt           *)
-(*                                                                        *)
-(*   Copyright 2002 Institut National de Recherche en Informatique et     *)
-(*   en Automatique.  All rights reserved.  This file is distributed      *)
-(*   under the terms of the GNU Library General Public License, with      *)
-(*   the special exception on linking described in file                   *)
-(*    ../../../LICENSE.                                                   *)
-(*                                                                        *)
-(* ********************************************************************** *)
-(* File generated by pretty print; do not edit! *)
-
-open Pcaml;
-open Stdpp;
-
-type choice 'a 'b =
-  [ Left of 'a
-  | Right of 'b ]
-;
-
-(* Buffer *)
-
-module Buff =
-  struct
-    value buff = ref (String.create 80);
-    value store len x =
-      do {
-        if len >= String.length buff.val then
-          buff.val := buff.val ^ String.create (String.length buff.val)
-        else ();
-        buff.val.[len] := x;
-        succ len
-      }
-    ;
-    value get len = String.sub buff.val 0 len;
-  end
-;
-
-(* Lexer *)
-
-value rec skip_to_eol =
-  parser
-  [ [: `'\n' | '\r' :] -> ()
-  | [: `_; s :] -> skip_to_eol s ]
-;
-
-value no_ident = ['('; ')'; '['; ']'; '{'; '}'; ' '; '\t'; '\n'; '\r'; ';'];
-
-value rec ident len =
-  parser
-  [ [: `'.' :] -> (Buff.get len, True)
-  | [: `x when not (List.mem x no_ident); s :] -> ident (Buff.store len x) s
-  | [: :] -> (Buff.get len, False) ]
-;
-
-value identifier kwt (s, dot) =
-  let con =
-    try do { (Hashtbl.find kwt s : unit); "" } with
-    [ Not_found ->
-        match s.[0] with
-        [ 'A'..'Z' -> if dot then "UIDENTDOT" else "UIDENT"
-        | _ -> if dot then "LIDENTDOT" else "LIDENT" ] ]
-  in
-  (con, s)
-;
-
-value rec string len =
-  parser
-  [ [: `'"' :] -> Buff.get len
-  | [: `'\\'; `c; s :] -> string (Buff.store (Buff.store len '\\') c) s
-  | [: `x; s :] -> string (Buff.store len x) s ]
-;
-
-value rec end_exponent_part_under len =
-  parser
-  [ [: `('0'..'9' as c); s :] -> end_exponent_part_under (Buff.store len c) s
-  | [: :] -> ("FLOAT", Buff.get len) ]
-;
-
-value end_exponent_part len =
-  parser
-  [ [: `('0'..'9' as c); s :] -> end_exponent_part_under (Buff.store len c) s
-  | [: :] -> raise (Stream.Error "ill-formed floating-point constant") ]
-;
-
-value exponent_part len =
-  parser
-  [ [: `('+' | '-' as c); s :] -> end_exponent_part (Buff.store len c) s
-  | [: a = end_exponent_part len :] -> a ]
-;
-
-value rec decimal_part len =
-  parser
-  [ [: `('0'..'9' as c); s :] -> decimal_part (Buff.store len c) s
-  | [: `'e' | 'E'; s :] -> exponent_part (Buff.store len 'E') s
-  | [: :] -> ("FLOAT", Buff.get len) ]
-;
-
-value rec number len =
-  parser
-  [ [: `('0'..'9' as c); s :] -> number (Buff.store len c) s
-  | [: `'.'; s :] -> decimal_part (Buff.store len '.') s
-  | [: `'e' | 'E'; s :] -> exponent_part (Buff.store len 'E') s
-  | [: :] -> ("INT", Buff.get len) ]
-;
-
-value binary = parser [: `('0'..'1' as c) :] -> c;
-
-value octal = parser [: `('0'..'7' as c) :] -> c;
-
-value hexa = parser [: `('0'..'9' | 'a'..'f' | 'A'..'F' as c) :] -> c;
-
-value rec digits_under kind len =
-  parser
-  [ [: d = kind; s :] -> digits_under kind (Buff.store len d) s
-  | [: :] -> Buff.get len ]
-;
-
-value digits kind bp len =
-  parser
-  [ [: d = kind; s :] -> ("INT", digits_under kind (Buff.store len d) s)
-  | [: s :] ep ->
-      raise_with_loc
-        (Reloc.shift_pos bp Reloc.zero_loc, Reloc.shift_pos ep Reloc.zero_loc)
-        (Failure "ill-formed integer constant") ]
-;
-
-value base_number kwt bp len =
-  parser
-  [ [: `'b' | 'B'; s :] -> digits binary bp (Buff.store len 'b') s
-  | [: `'o' | 'O'; s :] -> digits octal bp (Buff.store len 'o') s
-  | [: `'x' | 'X'; s :] -> digits hexa bp (Buff.store len 'x') s
-  | [: id = ident (Buff.store 0 '#') :] -> identifier kwt id ]
-;
-
-value rec operator len =
-  parser
-  [ [: `'.' :] -> Buff.get (Buff.store len '.')
-  | [: :] -> Buff.get len ]
-;
-
-value char_or_quote_id x =
-  parser
-  [ [: `''' :] -> ("CHAR", String.make 1 x)
-  | [: s :] ep ->
-      if List.mem x no_ident then
-        Stdpp.raise_with_loc
-          (Reloc.shift_pos (ep - 2) Reloc.zero_loc,
-           Reloc.shift_pos (ep - 1) Reloc.zero_loc)
-          (Stream.Error "bad quote")
-      else
-        let len = Buff.store (Buff.store 0 ''') x in
-        let (s, dot) = ident len s in
-        (if dot then "LIDENTDOT" else "LIDENT", s) ]
-;
-
-value rec char len =
-  parser
-  [ [: `''' :] -> len
-  | [: `x; s :] -> char (Buff.store len x) s ]
-;
-
-value quote =
-  parser
-  [ [: `'\\'; len = char (Buff.store 0 '\\') :] -> ("CHAR", Buff.get len)
-  | [: `x; s :] -> char_or_quote_id x s ]
-;
-
-(* The system with LIDENTDOT and UIDENTDOT is not great (it would be *)
-(* better to have a token DOT (actually SPACEDOT and DOT)) but it is *)
-(* the only way (that I have found) to have a good behaviour in the *)
-(* toplevel (not expecting tokens after a phrase). Drawbacks: 1/ to be *)
-(* complete, we should have STRINGDOT, RIGHTPARENDOT, and so on 2/ the *)
-(* parser rule with dot is right associative and we have to reverse *)
-(* the resulting tree (using the function leftify). *)
-(* This is a complicated issue: the behaviour of the OCaml toplevel *)
-(* is strange, anyway. For example, even without Camlp4, The OCaml *)
-(* toplevel accepts that: *)
-(*     # let x = 32;; foo bar match let ) *)
-
-value rec lexer kwt = parser [: t = lexer0 kwt; _ = no_dot :] -> t
-and no_dot =
-  parser
-  [ [: `'.' :] ep ->
-      Stdpp.raise_with_loc
-        (Reloc.shift_pos (ep - 1) Reloc.zero_loc,
-         Reloc.shift_pos ep Reloc.zero_loc)
-        (Stream.Error "bad dot")
-  | [: :] -> () ]
-and lexer0 kwt =
-  parser bp
-  [ [: `'\t' | '\n' | '\r'; s :] -> lexer0 kwt s
-  | [: `' '; s :] -> after_space kwt s
-  | [: `';'; _ = skip_to_eol; s :] -> lexer kwt s
-  | [: `'(' :] -> (("", "("), (bp, bp + 1))
-  | [: `')'; s :] ep -> (("", rparen s), (bp, ep))
-  | [: `'[' :] -> (("", "["), (bp, bp + 1))
-  | [: `']' :] -> (("", "]"), (bp, bp + 1))
-  | [: `'{' :] -> (("", "{"), (bp, bp + 1))
-  | [: `'}' :] -> (("", "}"), (bp, bp + 1))
-  | [: `'"'; s = string 0 :] ep -> (("STRING", s), (bp, ep))
-  | [: `'''; tok = quote :] ep -> (tok, (bp, ep))
-  | [: `'<'; tok = less kwt :] ep -> (tok, (bp, ep))
-  | [: `'-'; tok = minus kwt :] ep -> (tok, (bp, ep))
-  | [: `'~'; tok = tilde :] ep -> (tok, (bp, ep))
-  | [: `'?'; tok = question :] ep -> (tok, (bp, ep))
-  | [: `'#'; tok = base_number kwt bp (Buff.store 0 '0') :] ep ->
-      (tok, (bp, ep))
-  | [: `('0'..'9' as c); tok = number (Buff.store 0 c) :] ep ->
-      (tok, (bp, ep))
-  | [: `('+' | '*' | '/' as c); id = operator (Buff.store 0 c) :] ep ->
-      (identifier kwt (id, False), (bp, ep))
-  | [: `x; id = ident (Buff.store 0 x) :] ep -> (identifier kwt id, (bp, ep))
-  | [: :] -> (("EOI", ""), (bp, bp + 1)) ]
-and rparen =
-  parser
-  [ [: `'.' :] -> ")."
-  | [: ___ :] -> ")" ]
-and after_space kwt =
-  parser
-  [ [: `'.' :] ep -> (("", "."), (ep - 1, ep))
-  | [: x = lexer0 kwt :] -> x ]
-and tilde =
-  parser
-  [ [: `('a'..'z' as c); (s, dot) = ident (Buff.store 0 c) :] ->
-      ("TILDEIDENT", s)
-  | [: :] -> ("LIDENT", "~") ]
-and question =
-  parser
-  [ [: `('a'..'z' as c); (s, dot) = ident (Buff.store 0 c) :] ->
-      ("QUESTIONIDENT", s)
-  | [: :] -> ("LIDENT", "?") ]
-and minus kwt =
-  parser
-  [ [: `'.' :] -> identifier kwt ("-.", False)
-  | [: `('0'..'9' as c); n = number (Buff.store (Buff.store 0 '-') c) :] ->
-      n
-  | [: id = ident (Buff.store 0 '-') :] -> identifier kwt id ]
-and less kwt =
-  parser
-  [ [: `':'; lab = label 0; `'<' ? "'<' expected"; q = quotation 0 :] ->
-      ("QUOT", lab ^ ":" ^ q)
-  | [: id = ident (Buff.store 0 '<') :] -> identifier kwt id ]
-and label len =
-  parser
-  [ [: `('a'..'z' | 'A'..'Z' | '_' as c); s :] -> label (Buff.store len c) s
-  | [: :] -> Buff.get len ]
-and quotation len =
-  parser
-  [ [: `'>'; s :] -> quotation_greater len s
-  | [: `x; s :] -> quotation (Buff.store len x) s
-  | [: :] -> failwith "quotation not terminated" ]
-and quotation_greater len =
-  parser
-  [ [: `'>' :] -> Buff.get len
-  | [: a = quotation (Buff.store len '>') :] -> a ]
-;
-
-value lexer_using kwt (con, prm) =
-  match con with
-  [ "CHAR" | "EOI" | "INT" | "FLOAT" | "LIDENT" | "LIDENTDOT" |
-    "QUESTIONIDENT" | "QUOT" | "STRING" | "TILDEIDENT" | "UIDENT" |
-    "UIDENTDOT" ->
-      ()
-  | "ANTIQUOT" -> ()
-  | "" ->
-      try Hashtbl.find kwt prm with [ Not_found -> Hashtbl.add kwt prm () ]
-  | _ ->
-      raise
-        (Token.Error
-           ("the constructor \"" ^ con ^ "\" is not recognized by Plexer")) ]
-;
-
-value lexer_text (con, prm) =
-  if con = "" then "'" ^ prm ^ "'"
-  else if prm = "" then con
-  else con ^ " \"" ^ prm ^ "\""
-;
-
-value lexer_gmake () =
-  let kwt = Hashtbl.create 89 in
-  {Token.tok_func =
-     Token.lexer_func_of_parser
-       (fun s ->
-          let (r, (bp, ep)) = lexer kwt s in
-          (r,
-           (Reloc.shift_pos bp Reloc.zero_loc,
-            Reloc.shift_pos ep Reloc.zero_loc)));
-   Token.tok_using = lexer_using kwt; Token.tok_removing = fun [];
-   Token.tok_match = Token.default_match; Token.tok_text = lexer_text;
-   Token.tok_comm = None}
-;
-
-(* Building AST *)
-
-type sexpr =
-  [ Sacc of Loc.t and sexpr and sexpr
-  | Schar of Loc.t and string
-  | Sexpr of Loc.t and list sexpr
-  | Sint of Loc.t and string
-  | Sfloat of Loc.t and string
-  | Slid of Loc.t and string
-  | Slist of Loc.t and list sexpr
-  | Sqid of Loc.t and string
-  | Squot of Loc.t and string and string
-  | Srec of Loc.t and list sexpr
-  | Sstring of Loc.t and string
-  | Stid of Loc.t and string
-  | Suid of Loc.t and string ]
-;
-
-value loc_of_sexpr =
-  fun [
-    Sacc loc _ _ | Schar loc _ | Sexpr loc _ | Sint loc _ | Sfloat loc _ |
-    Slid loc _ | Slist loc _ | Sqid loc _ | Squot loc _ _ | Srec loc _ |
-    Sstring loc _ | Stid loc _ | Suid loc _ ->
-    loc ]
-;
-value error_loc loc err =
-  raise_with_loc loc (Stream.Error (err ^ " expected"))
-;
-value error se err = error_loc (loc_of_sexpr se) err;
-
-value strm_n = "__strm";
-value peek_fun loc = <:expr< Stream.peek >>;
-value junk_fun loc = <:expr< Stream.junk >>;
-
-value assoc_left_parsed_op_list =
-  ["+"; "*"; "+."; "*."; "land"; "lor"; "lxor"]
-;
-value assoc_right_parsed_op_list = ["and"; "or"; "^"; "@"];
-value and_by_couple_op_list = ["="; "<>"; "<"; ">"; "<="; ">="; "=="; "!="];
-
-value op_apply loc e1 e2 =
-  fun
-  [ "and" -> <:expr< $e1$ && $e2$ >>
-  | "or" -> <:expr< $e1$ || $e2$ >>
-  | x -> <:expr< $lid:x$ $e1$ $e2$ >> ]
-;
-
-value string_se =
-  fun
-  [ Sstring loc s -> s
-  | se -> error se "string" ]
-;
-
-value mod_ident_se =
-  fun
-  [ Suid _ s -> [Pcaml.rename_id.val s]
-  | Slid _ s -> [Pcaml.rename_id.val s]
-  | se -> error se "mod_ident" ]
-;
-
-value lident_expr loc s =
-  if String.length s > 1 && s.[0] = '`' then
-    let s = String.sub s 1 (String.length s - 1) in
-    <:expr< ` $s$ >>
-  else <:expr< $lid:(Pcaml.rename_id.val s)$ >>
-;
-
-value rec module_expr_se =
-  fun
-  [ Sexpr loc [Slid _ "functor"; Suid _ s; se1; se2] ->
-      let s = Pcaml.rename_id.val s in
-      let mt = module_type_se se1 in
-      let me = module_expr_se se2 in
-      <:module_expr< functor ($s$ : $mt$) -> $me$ >>
-  | Sexpr loc [Slid _ "struct" :: sl] ->
-      let mel = List.map str_item_se sl in
-      <:module_expr< struct $list:mel$ end >>
-  | Sexpr loc [se1; se2] ->
-      let me1 = module_expr_se se1 in
-      let me2 = module_expr_se se2 in
-      <:module_expr< $me1$ $me2$ >>
-  | Suid loc s -> <:module_expr< $uid:(Pcaml.rename_id.val s)$ >>
-  | se -> error se "module expr" ]
-and module_type_se =
-  fun
-  [ Sexpr loc [Slid _ "functor"; Suid _ s; se1; se2] ->
-      let s = Pcaml.rename_id.val s in
-      let mt1 = module_type_se se1 in
-      let mt2 = module_type_se se2 in
-      <:module_type< functor ($s$ : $mt1$) -> $mt2$ >>
-  | Sexpr loc [Slid _ "sig" :: sel] ->
-      let sil = List.map sig_item_se sel in
-      <:module_type< sig $list:sil$ end >>
-  | Sexpr loc [Slid _ "with"; se; Sexpr _ sel] ->
-      let mt = module_type_se se in
-      let wcl = List.map with_constr_se sel in
-      <:module_type< $mt$ with $list:wcl$ >>
-  | Suid loc s -> <:module_type< $uid:(Pcaml.rename_id.val s)$ >>
-  | se -> error se "module type" ]
-and with_constr_se =
-  fun
-  [ Sexpr loc [Slid _ "type"; se1; se2] ->
-      let tn = mod_ident_se se1 in
-      let te = ctyp_se se2 in
-      MLast.WcTyp loc tn [] te
-  | se -> error se "with constr" ]
-and sig_item_se =
-  fun
-  [ Sexpr loc [Slid _ "type" :: sel] ->
-      let tdl = type_declaration_list_se sel in
-      <:sig_item< type $list:tdl$ >>
-  | Sexpr loc [Slid _ "exception"; Suid _ c :: sel] ->
-      let c = Pcaml.rename_id.val c in
-      let tl = List.map ctyp_se sel in
-      <:sig_item< exception $c$ of $list:tl$ >>
-  | Sexpr loc [Slid _ "value"; Slid _ s; se] ->
-      let s = Pcaml.rename_id.val s in
-      let t = ctyp_se se in
-      <:sig_item< value $s$ : $t$ >>
-  | Sexpr loc [Slid _ "external"; Slid _ i; se :: sel] ->
-      let i = Pcaml.rename_id.val i in
-      let pd = List.map string_se sel in
-      let t = ctyp_se se in
-      <:sig_item< external $i$ : $t$ = $list:pd$ >>
-  | Sexpr loc [Slid _ "module"; Suid _ s; se] ->
-      let s = Pcaml.rename_id.val s in
-      let mb = module_type_se se in
-      <:sig_item< module $s$ : $mb$ >>
-  | Sexpr loc [Slid _ "moduletype"; Suid _ s; se] ->
-      let s = Pcaml.rename_id.val s in
-      let mt = module_type_se se in
-      <:sig_item< module type $s$ = $mt$ >>
-  | se -> error se "sig item" ]
-and str_item_se se =
-  match se with
-  [ Sexpr loc [Slid _ "open"; se] ->
-      let s = mod_ident_se se in
-      <:str_item< open $s$ >>
-  | Sexpr loc [Slid _ "type" :: sel] ->
-      let tdl = type_declaration_list_se sel in
-      <:str_item< type $list:tdl$ >>
-  | Sexpr loc [Slid _ "exception"; Suid _ c :: sel] ->
-      let c = Pcaml.rename_id.val c in
-      let tl = List.map ctyp_se sel in
-      <:str_item< exception $c$ of $list:tl$ >>
-  | Sexpr loc [Slid _ ("define" | "definerec" as r); se :: sel] ->
-      let r = r = "definerec" in
-      let (p, e) = fun_binding_se se (begin_se loc sel) in
-      <:str_item< value $opt:r$ $p$ = $e$ >>
-  | Sexpr loc [Slid _ ("define*" | "definerec*" as r) :: sel] ->
-      let r = r = "definerec*" in
-      let lbs = List.map let_binding_se sel in
-      <:str_item< value $opt:r$ $list:lbs$ >>
-  | Sexpr loc [Slid _ "external"; Slid _ i; se :: sel] ->
-      let i = Pcaml.rename_id.val i in
-      let pd = List.map string_se sel in
-      let t = ctyp_se se in
-      <:str_item< external $i$ : $t$ = $list:pd$ >>
-  | Sexpr loc [Slid _ "module"; Suid _ i; se] ->
-      let i = Pcaml.rename_id.val i in
-      let mb = module_binding_se se in
-      <:str_item< module $i$ = $mb$ >>
-  | Sexpr loc [Slid _ "moduletype"; Suid _ s; se] ->
-      let s = Pcaml.rename_id.val s in
-      let mt = module_type_se se in
-      <:str_item< module type $s$ = $mt$ >>
-  | _ ->
-      let loc = loc_of_sexpr se in
-      let e = expr_se se in
-      <:str_item< $exp:e$ >> ]
-and module_binding_se se = module_expr_se se
-and expr_se =
-  fun
-  [ Sacc loc se1 se2 ->
-      let e1 = expr_se se1 in
-      match se2 with
-      [ Slist loc [se2] ->
-          let e2 = expr_se se2 in
-          <:expr< $e1$ .[ $e2$ ] >>
-      | Sexpr loc [se2] ->
-          let e2 = expr_se se2 in
-          <:expr< $e1$ .( $e2$ ) >>
-      | _ ->
-          let e2 = expr_se se2 in
-          <:expr< $e1$ . $e2$ >> ]
-  | Slid loc s -> lident_expr loc s
-  | Suid loc s -> <:expr< $uid:(Pcaml.rename_id.val s)$ >>
-  | Sint loc s -> <:expr< $int:s$ >>
-  | Sfloat loc s -> <:expr< $flo:s$ >>
-  | Schar loc s -> <:expr< $chr:s$ >>
-  | Sstring loc s -> <:expr< $str:s$ >>
-  | Stid loc s -> <:expr< ~ $(Pcaml.rename_id.val s)$ >>
-  | Sqid loc s -> <:expr< ? $(Pcaml.rename_id.val s)$ >>
-  | Sexpr loc [] -> <:expr< () >>
-  | Sexpr loc [Slid _ s; e1 :: ([_ :: _] as sel)]
-    when List.mem s assoc_left_parsed_op_list ->
-      let rec loop e1 =
-        fun
-        [ [] -> e1
-        | [e2 :: el] -> loop (op_apply loc e1 e2 s) el ]
-      in
-      loop (expr_se e1) (List.map expr_se sel)
-  | Sexpr loc [Slid _ s :: ([_; _ :: _] as sel)]
-    when List.mem s assoc_right_parsed_op_list ->
-      let rec loop =
-        fun
-        [ [] -> assert False
-        | [e1] -> e1
-        | [e1 :: el] ->
-            let e2 = loop el in
-            op_apply loc e1 e2 s ]
-      in
-      loop (List.map expr_se sel)
-  | Sexpr loc [Slid _ s :: ([_; _ :: _] as sel)]
-    when List.mem s and_by_couple_op_list ->
-      let rec loop =
-        fun
-        [ [] | [_] -> assert False
-        | [e1; e2] -> <:expr< $lid:s$ $e1$ $e2$ >>
-        | [e1 :: ([e2; _ :: _] as el)] ->
-            let a1 = op_apply loc e1 e2 s in
-            let a2 = loop el in
-            <:expr< $a1$ && $a2$ >> ]
-      in
-      loop (List.map expr_se sel)
-  | Sexpr loc [Stid _ s; se] ->
-      let e = expr_se se in
-      <:expr< ~ $s$ : $e$ >>
-  | Sexpr loc [Slid _ "-"; se] ->
-      let e = expr_se se in
-      <:expr< - $e$ >>
-  | Sexpr loc [Slid _ "if"; se; se1] ->
-      let e = expr_se se in
-      let e1 = expr_se se1 in
-      <:expr< if $e$ then $e1$ else () >>
-  | Sexpr loc [Slid _ "if"; se; se1; se2] ->
-      let e = expr_se se in
-      let e1 = expr_se se1 in
-      let e2 = expr_se se2 in
-      <:expr< if $e$ then $e1$ else $e2$ >>
-  | Sexpr loc [Slid _ "cond" :: sel] ->
-      let rec loop =
-        fun
-        [ [Sexpr loc [Slid _ "else" :: sel]] -> begin_se loc sel
-        | [Sexpr loc [se1 :: sel1] :: sel] ->
-            let e1 = expr_se se1 in
-            let e2 = begin_se loc sel1 in
-            let e3 = loop sel in
-            <:expr< if $e1$ then $e2$ else $e3$ >>
-        | [] -> <:expr< () >>
-        | [se :: _] -> error se "cond clause" ]
-      in
-      loop sel
-  | Sexpr loc [Slid _ "while"; se :: sel] ->
-      let e = expr_se se in
-      let el = List.map expr_se sel in
-      <:expr< while $e$ do { $list:el$ } >>
-  | Sexpr loc [Slid _ "for"; Slid _ i; se1; se2 :: sel] ->
-      let i = Pcaml.rename_id.val i in
-      let e1 = expr_se se1 in
-      let e2 = expr_se se2 in
-      let el = List.map expr_se sel in
-      <:expr< for $i$ = $e1$ to $e2$ do { $list:el$ } >>
-  | Sexpr loc [Slid loc1 "lambda"] -> <:expr< fun [] >>
-  | Sexpr loc [Slid loc1 "lambda"; sep :: sel] ->
-      let e = begin_se loc1 sel in
-      match ipatt_opt_se sep with
-      [ Left p -> <:expr< fun $p$ -> $e$ >>
-      | Right (se, sel) ->
-          List.fold_right
-            (fun se e ->
-               let p = ipatt_se se in
-               <:expr< fun $p$ -> $e$ >>)
-            [se :: sel] e ]
-  | Sexpr loc [Slid _ "lambda_match" :: sel] ->
-      let pel = List.map (match_case loc) sel in
-      <:expr< fun [ $list:pel$ ] >>
-  | Sexpr loc [Slid _ ("let" | "letrec" as r) :: sel] ->
-      match sel with
-      [ [Sexpr _ sel1 :: sel2] ->
-          let r = r = "letrec" in
-          let lbs = List.map let_binding_se sel1 in
-          let e = begin_se loc sel2 in
-          <:expr< let $opt:r$ $list:lbs$ in $e$ >>
-      | [Slid _ n; Sexpr _ sl :: sel] ->
-          let n = Pcaml.rename_id.val n in
-          let (pl, el) =
-            List.fold_right
-              (fun se (pl, el) ->
-                 match se with
-                 [ Sexpr _ [se1; se2] ->
-                     ([patt_se se1 :: pl], [expr_se se2 :: el])
-                 | se -> error se "named let" ])
-              sl ([], [])
-          in
-          let e1 =
-            List.fold_right (fun p e -> <:expr< fun $p$ -> $e$ >>) pl
-              (begin_se loc sel)
-          in
-          let e2 =
-            List.fold_left (fun e1 e2 -> <:expr< $e1$ $e2$ >>)
-              <:expr< $lid:n$ >> el
-          in
-          <:expr< let rec $lid:n$ = $e1$ in $e2$ >>
-      | [se :: _] -> error se "let_binding"
-      | _ -> error_loc loc "let_binding" ]
-  | Sexpr loc [Slid _ "let*" :: sel] ->
-      match sel with
-      [ [Sexpr _ sel1 :: sel2] ->
-          List.fold_right
-            (fun se ek ->
-               let (p, e) = let_binding_se se in
-               <:expr< let $p$ = $e$ in $ek$ >>)
-            sel1 (begin_se loc sel2)
-      | [se :: _] -> error se "let_binding"
-      | _ -> error_loc loc "let_binding" ]
-  | Sexpr loc [Slid _ "match"; se :: sel] ->
-      let e = expr_se se in
-      let pel = List.map (match_case loc) sel in
-      <:expr< match $e$ with [ $list:pel$ ] >>
-  | Sexpr loc [Slid _ "parser" :: sel] ->
-      let e =
-        match sel with
-        [ [(Slid _ _ as se) :: sel] ->
-            let p = patt_se se in
-            let pc = parser_cases_se loc sel in
-            <:expr< let $p$ = Stream.count $lid:strm_n$ in $pc$ >>
-        | _ -> parser_cases_se loc sel ]
-      in
-      <:expr< fun ($lid:strm_n$ : Stream.t _) -> $e$ >>
-  | Sexpr loc [Slid _ "match_with_parser"; se :: sel] ->
-      let me = expr_se se in
-      let (bpo, sel) =
-        match sel with
-        [ [(Slid _ _ as se) :: sel] -> (Some (patt_se se), sel)
-        | _ -> (None, sel) ]
-      in
-      let pc = parser_cases_se loc sel in
-      let e =
-        match bpo with
-        [ Some bp -> <:expr< let $bp$ = Stream.count $lid:strm_n$ in $pc$ >>
-        | None -> pc ]
-      in
-      match me with
-      [ <:expr< $lid:x$ >> when x = strm_n -> e
-      | _ -> <:expr< let ($lid:strm_n$ : Stream.t _) = $me$ in $e$ >> ]
-  | Sexpr loc [Slid _ "try"; se :: sel] ->
-      let e = expr_se se in
-      let pel = List.map (match_case loc) sel in
-      <:expr< try $e$ with [ $list:pel$ ] >>
-  | Sexpr loc [Slid _ "begin" :: sel] ->
-      let el = List.map expr_se sel in
-      <:expr< do { $list:el$ } >>
-  | Sexpr loc [Slid _ ":="; se1; se2] ->
-      let e1 = expr_se se1 in
-      let e2 = expr_se se2 in
-      <:expr< $e1$ := $e2$ >>
-  | Sexpr loc [Slid _ "values" :: sel] ->
-      let el = List.map expr_se sel in
-      <:expr< ( $list:el$ ) >>
-  | Srec loc [Slid _ "with"; se :: sel] ->
-      let e = expr_se se in
-      let lel = List.map (label_expr_se loc) sel in
-      <:expr< { ($e$) with $list:lel$ } >>
-  | Srec loc sel ->
-      let lel = List.map (label_expr_se loc) sel in
-      <:expr< { $list:lel$ } >>
-  | Sexpr loc [Slid _ ":"; se1; se2] ->
-      let e = expr_se se1 in
-      let t = ctyp_se se2 in
-      <:expr< ( $e$ : $t$ ) >>
-  | Sexpr loc [se] ->
-      let e = expr_se se in
-      <:expr< $e$ () >>
-  | Sexpr loc [Slid _ "assert"; Suid _ "False"] -> <:expr< assert False >>
-  | Sexpr loc [Slid _ "assert"; se] ->
-      let e = expr_se se in
-      <:expr< assert $e$ >>
-  | Sexpr loc [Slid _ "lazy"; se] ->
-      let e = expr_se se in
-      <:expr< lazy $e$ >>
-  | Sexpr loc [se :: sel] ->
-      List.fold_left
-        (fun e se ->
-           let e1 = expr_se se in
-           <:expr< $e$ $e1$ >>)
-        (expr_se se) sel
-  | Slist loc sel ->
-      let rec loop =
-        fun
-        [ [] -> <:expr< [] >>
-        | [se1; Slid _ "."; se2] ->
-            let e = expr_se se1 in
-            let el = expr_se se2 in
-            <:expr< [$e$ :: $el$] >>
-        | [se :: sel] ->
-            let e = expr_se se in
-            let el = loop sel in
-            <:expr< [$e$ :: $el$] >> ]
-      in
-      loop sel
-  | Squot loc typ txt -> Pcaml.handle_expr_quotation loc (typ, txt) ]
-and begin_se loc =
-  fun
-  [ [] -> <:expr< () >>
-  | [se] -> expr_se se
-  | sel ->
-      let el = List.map expr_se sel in
-      let loc = (fst (loc_of_sexpr (List.hd sel)), snd loc) in
-      <:expr< do { $list:el$ } >> ]
-and let_binding_se =
-  fun
-  [ Sexpr loc [se :: sel] ->
-      let e = begin_se loc sel in
-      match ipatt_opt_se se with
-      [ Left p -> (p, e)
-      | Right _ -> fun_binding_se se e ]
-  | se -> error se "let_binding" ]
-and fun_binding_se se e =
-  match se with
-  [ Sexpr _ [Slid _ "values" :: _] -> (ipatt_se se, e)
-  | Sexpr _ [Slid loc s :: sel] ->
-      let s = Pcaml.rename_id.val s in
-      let e =
-        List.fold_right
-          (fun se e ->
-             let loc = (fst (loc_of_sexpr se), snd (MLast.loc_of_expr e)) in
-             let p = ipatt_se se in
-             <:expr< fun $p$ -> $e$ >>)
-          sel e
-      in
-      let p = <:patt< $lid:s$ >> in
-      (p, e)
-  | _ -> (ipatt_se se, e) ]
-and match_case loc =
-  fun
-  [ Sexpr loc [Sexpr _ [Slid _ "when"; se; sew] :: sel] ->
-      (patt_se se, Some (expr_se sew), begin_se loc sel)
-  | Sexpr loc [se :: sel] -> (patt_se se, None, begin_se loc sel)
-  | se -> error se "match_case" ]
-and label_expr_se loc =
-  fun
-  [ Sexpr _ [se1; se2] -> (patt_se se1, expr_se se2)
-  | se -> error se "label_expr" ]
-and label_patt_se loc =
-  fun
-  [ Sexpr _ [se1; se2] -> (patt_se se1, patt_se se2)
-  | se -> error se "label_patt" ]
-and parser_cases_se loc =
-  fun
-  [ [] -> <:expr< raise Stream.Failure >>
-  | [Sexpr loc [Sexpr _ spsel :: act] :: sel] ->
-      let ekont _ = parser_cases_se loc sel in
-      let act =
-        match act with
-        [ [se] -> expr_se se
-        | [sep; se] ->
-            let p = patt_se sep in
-            let e = expr_se se in
-            <:expr< let $p$ = Stream.count $lid:strm_n$ in $e$ >>
-        | _ -> error_loc loc "parser_case" ]
-      in
-      stream_pattern_se loc act ekont spsel
-  | [se :: _] -> error se "parser_case" ]
-and stream_pattern_se loc act ekont =
-  fun
-  [ [] -> act
-  | [se :: sel] ->
-      let ckont err = <:expr< raise (Stream.Error $err$) >> in
-      let skont = stream_pattern_se loc act ckont sel in
-      stream_pattern_component skont ekont <:expr< "" >> se ]
-and stream_pattern_component skont ekont err =
-  fun
-  [ Sexpr loc [Slid _ "`"; se :: wol] ->
-      let wo =
-        match wol with
-        [ [se] -> Some (expr_se se)
-        | [] -> None
-        | _ -> error_loc loc "stream_pattern_component" ]
-      in
-      let e = peek_fun loc in
-      let p = patt_se se in
-      let j = junk_fun loc in
-      let k = ekont err in
-      <:expr< match $e$ $lid:strm_n$ with
-               [ Some $p$ $when:wo$ -> do { $j$ $lid:strm_n$ ; $skont$ }
-               | _ -> $k$ ] >>
-  | Sexpr loc [se1; se2] ->
-      let p = patt_se se1 in
-      let e =
-        let e = expr_se se2 in
-        <:expr< try Some ($e$ $lid:strm_n$) with [ Stream.Failure -> None ] >>
-      in
-      let k = ekont err in
-      <:expr< match $e$ with [ Some $p$ -> $skont$ | _ -> $k$ ] >>
-  | Sexpr loc [Slid _ "?"; se1; se2] ->
-      stream_pattern_component skont ekont (expr_se se2) se1
-  | Slid loc s ->
-      let s = Pcaml.rename_id.val s in
-      <:expr< let $lid:s$ = $lid:strm_n$ in $skont$ >>
-  | se -> error se "stream_pattern_component" ]
-and patt_se =
-  fun
-  [ Sacc loc se1 se2 ->
-      let p1 = patt_se se1 in
-      let p2 = patt_se se2 in
-      <:patt< $p1$ . $p2$ >>
-  | Slid loc "_" -> <:patt< _ >>
-  | Slid loc s -> <:patt< $lid:(Pcaml.rename_id.val s)$ >>
-  | Suid loc s -> <:patt< $uid:(Pcaml.rename_id.val s)$ >>
-  | Sint loc s -> <:patt< $int:s$ >>
-  | Sfloat loc s -> <:patt< $flo:s$ >>
-  | Schar loc s -> <:patt< $chr:s$ >>
-  | Sstring loc s -> <:patt< $str:s$ >>
-  | Stid loc _ -> error_loc loc "patt"
-  | Sqid loc _ -> error_loc loc "patt"
-  | Srec loc sel ->
-      let lpl = List.map (label_patt_se loc) sel in
-      <:patt< { $list:lpl$ } >>
-  | Sexpr loc [Slid _ ":"; se1; se2] ->
-      let p = patt_se se1 in
-      let t = ctyp_se se2 in
-      <:patt< ($p$ : $t$) >>
-  | Sexpr loc [Slid _ "or"; se :: sel] ->
-      List.fold_left
-        (fun p se ->
-           let p1 = patt_se se in
-           <:patt< $p$ | $p1$ >>)
-        (patt_se se) sel
-  | Sexpr loc [Slid _ "range"; se1; se2] ->
-      let p1 = patt_se se1 in
-      let p2 = patt_se se2 in
-      <:patt< $p1$ .. $p2$ >>
-  | Sexpr loc [Slid _ "values" :: sel] ->
-      let pl = List.map patt_se sel in
-      <:patt< ( $list:pl$ ) >>
-  | Sexpr loc [Slid _ "as"; se1; se2] ->
-      let p1 = patt_se se1 in
-      let p2 = patt_se se2 in
-      <:patt< ($p1$ as $p2$) >>
-  | Sexpr loc [se :: sel] ->
-      List.fold_left
-        (fun p se ->
-           let p1 = patt_se se in
-           <:patt< $p$ $p1$ >>)
-        (patt_se se) sel
-  | Sexpr loc [] -> <:patt< () >>
-  | Slist loc sel ->
-      let rec loop =
-        fun
-        [ [] -> <:patt< [] >>
-        | [se1; Slid _ "."; se2] ->
-            let p = patt_se se1 in
-            let pl = patt_se se2 in
-            <:patt< [$p$ :: $pl$] >>
-        | [se :: sel] ->
-            let p = patt_se se in
-            let pl = loop sel in
-            <:patt< [$p$ :: $pl$] >> ]
-      in
-      loop sel
-  | Squot loc typ txt -> Pcaml.handle_patt_quotation loc (typ, txt) ]
-and ipatt_se se =
-  match ipatt_opt_se se with
-  [ Left p -> p
-  | Right (se, _) -> error se "ipatt" ]
-and ipatt_opt_se =
-  fun
-  [ Slid loc "_" -> Left <:patt< _ >>
-  | Slid loc s -> Left <:patt< $lid:(Pcaml.rename_id.val s)$ >>
-  | Stid loc s -> Left <:patt< ~ $(Pcaml.rename_id.val s)$ >>
-  | Sqid loc s -> Left <:patt< ? $(Pcaml.rename_id.val s)$ >>
-  | Sexpr loc [Sqid _ s; se] ->
-      let s = Pcaml.rename_id.val s in
-      let e = expr_se se in
-      Left <:patt< ? ( $lid:s$ = $e$ ) >>
-  | Sexpr loc [Slid _ ":"; se1; se2] ->
-      let p = ipatt_se se1 in
-      let t = ctyp_se se2 in
-      Left <:patt< ($p$ : $t$) >>
-  | Sexpr loc [Slid _ "values" :: sel] ->
-      let pl = List.map ipatt_se sel in
-      Left <:patt< ( $list:pl$ ) >>
-  | Sexpr loc [] -> Left <:patt< () >>
-  | Sexpr loc [se :: sel] -> Right (se, sel)
-  | se -> error se "ipatt" ]
-and type_declaration_list_se =
-  fun
-  [ [se1; se2 :: sel] ->
-      let (n1, loc1, tpl) =
-        match se1 with
-        [ Sexpr _ [Slid loc n :: sel] ->
-            (n, loc, List.map type_parameter_se sel)
-        | Slid loc n -> (n, loc, [])
-        | se -> error se "type declaration" ]
-      in
-      [((loc1, Pcaml.rename_id.val n1), tpl, ctyp_se se2, []) ::
-       type_declaration_list_se sel]
-  | [] -> []
-  | [se :: _] -> error se "type_declaration" ]
-and type_parameter_se =
-  fun
-  [ Slid _ s when String.length s >= 2 && s.[0] = ''' ->
-      (String.sub s 1 (String.length s - 1), (False, False))
-  | se -> error se "type_parameter" ]
-and ctyp_se =
-  fun
-  [ Sexpr loc [Slid _ "sum" :: sel] ->
-      let cdl = List.map constructor_declaration_se sel in
-      <:ctyp< [ $list:cdl$ ] >>
-  | Srec loc sel ->
-      let ldl = List.map label_declaration_se sel in
-      <:ctyp< { $list:ldl$ } >>
-  | Sexpr loc [Slid _ "->" :: ([_; _ :: _] as sel)] ->
-      let rec loop =
-        fun
-        [ [] -> assert False
-        | [se] -> ctyp_se se
-        | [se :: sel] ->
-            let t1 = ctyp_se se in
-            let loc = (fst (loc_of_sexpr se), snd loc) in
-            let t2 = loop sel in
-            <:ctyp< $t1$ -> $t2$ >> ]
-      in
-      loop sel
-  | Sexpr loc [Slid _ "*" :: sel] ->
-      let tl = List.map ctyp_se sel in
-      <:ctyp< ($list:tl$) >>
-  | Sexpr loc [se :: sel] ->
-      List.fold_left
-        (fun t se ->
-           let t2 = ctyp_se se in
-           <:ctyp< $t$ $t2$ >>)
-        (ctyp_se se) sel
-  | Sacc loc se1 se2 ->
-      let t1 = ctyp_se se1 in
-      let t2 = ctyp_se se2 in
-      <:ctyp< $t1$ . $t2$ >>
-  | Slid loc "_" -> <:ctyp< _ >>
-  | Slid loc s ->
-      if s.[0] = ''' then
-        let s = String.sub s 1 (String.length s - 1) in
-        <:ctyp< '$s$ >>
-      else <:ctyp< $lid:(Pcaml.rename_id.val s)$ >>
-  | Suid loc s -> <:ctyp< $uid:(Pcaml.rename_id.val s)$ >>
-  | se -> error se "ctyp" ]
-and constructor_declaration_se =
-  fun
-  [ Sexpr loc [Suid _ ci :: sel] ->
-      (loc, Pcaml.rename_id.val ci, List.map ctyp_se sel)
-  | se -> error se "constructor_declaration" ]
-and label_declaration_se =
-  fun
-  [ Sexpr loc [Slid _ lab; Slid _ "mutable"; se] ->
-      (loc, Pcaml.rename_id.val lab, True, ctyp_se se)
-  | Sexpr loc [Slid _ lab; se] ->
-      (loc, Pcaml.rename_id.val lab, False, ctyp_se se)
-  | se -> error se "label_declaration" ]
-;
-
-value directive_se =
-  fun
-  [ Sexpr _ [Slid _ s] -> (s, None)
-  | Sexpr _ [Slid _ s; se] ->
-      let e = expr_se se in
-      (s, Some e)
-  | se -> error se "directive" ]
-;
-
-(* Parser *)
-
-Pcaml.syntax_name.val := "Scheme";
-Pcaml.no_constructors_arity.val := False;
-
-do {
-  Grammar.Unsafe.gram_reinit gram (lexer_gmake ());
-  Grammar.Unsafe.clear_entry interf;
-  Grammar.Unsafe.clear_entry implem;
-  Grammar.Unsafe.clear_entry top_phrase;
-  Grammar.Unsafe.clear_entry use_file;
-  Grammar.Unsafe.clear_entry module_type;
-  Grammar.Unsafe.clear_entry module_expr;
-  Grammar.Unsafe.clear_entry sig_item;
-  Grammar.Unsafe.clear_entry str_item;
-  Grammar.Unsafe.clear_entry expr;
-  Grammar.Unsafe.clear_entry patt;
-  Grammar.Unsafe.clear_entry ctyp;
-  Grammar.Unsafe.clear_entry let_binding;
-  Grammar.Unsafe.clear_entry type_declaration;
-  Grammar.Unsafe.clear_entry class_type;
-  Grammar.Unsafe.clear_entry class_expr;
-  Grammar.Unsafe.clear_entry class_sig_item;
-  Grammar.Unsafe.clear_entry class_str_item
-};
-
-Pcaml.parse_interf.val := Grammar.Entry.parse interf;
-Pcaml.parse_implem.val := Grammar.Entry.parse implem;
-
-value sexpr = Grammar.Entry.create gram "sexpr";
-
-value rec leftify =
-  fun
-  [ Sacc loc1 se1 se2 ->
-      match leftify se2 with
-      [ Sacc loc2 se2 se3 -> Sacc loc1 (Sacc loc2 se1 se2) se3
-      | se2 -> Sacc loc1 se1 se2 ]
-  | x -> x ]
-;
-
-EXTEND
-  GLOBAL: implem interf top_phrase use_file str_item sig_item expr patt sexpr;
-  implem:
-    [ [ "#"; se = sexpr ->
-          let (n, dp) = directive_se se in
-          ([(<:str_item< # $n$ $opt:dp$ >>, loc)], True)
-      | si = str_item; x = SELF ->
-          let (sil, stopped) = x in
-          let loc = MLast.loc_of_str_item si in
-          ([(si, loc) :: sil], stopped)
-      | EOI -> ([], False) ] ]
-  ;
-  interf:
-    [ [ "#"; se = sexpr ->
-          let (n, dp) = directive_se se in
-          ([(<:sig_item< # $n$ $opt:dp$ >>, loc)], True)
-      | si = sig_item; x = SELF ->
-          let (sil, stopped) = x in
-          let loc = MLast.loc_of_sig_item si in
-          ([(si, loc) :: sil], stopped)
-      | EOI -> ([], False) ] ]
-  ;
-  top_phrase:
-    [ [ "#"; se = sexpr ->
-          let (n, dp) = directive_se se in
-          Some <:str_item< # $n$ $opt:dp$ >>
-      | se = sexpr -> Some (str_item_se se)
-      | EOI -> None ] ]
-  ;
-  use_file:
-    [ [ "#"; se = sexpr ->
-          let (n, dp) = directive_se se in
-          ([<:str_item< # $n$ $opt:dp$ >>], True)
-      | si = str_item; x = SELF ->
-          let (sil, stopped) = x in
-          ([si :: sil], stopped)
-      | EOI -> ([], False) ] ]
-  ;
-  str_item:
-    [ [ se = sexpr -> str_item_se se
-      | e = expr -> <:str_item< $exp:e$ >> ] ]
-  ;
-  sig_item:
-    [ [ se = sexpr -> sig_item_se se ] ]
-  ;
-  expr:
-    [ "top"
-      [ se = sexpr -> expr_se se ] ]
-  ;
-  patt:
-    [ [ se = sexpr -> patt_se se ] ]
-  ;
-  sexpr:
-    [ [ se1 = sexpr_dot; se2 = SELF -> leftify (Sacc loc se1 se2) ]
-    | [ "("; sl = LIST0 sexpr; ")" -> Sexpr loc sl
-      | "("; sl = LIST0 sexpr; ")."; se = SELF ->
-          leftify (Sacc loc (Sexpr loc sl) se)
-      | "["; sl = LIST0 sexpr; "]" -> Slist loc sl
-      | "{"; sl = LIST0 sexpr; "}" -> Srec loc sl
-      | a = pa_extend_keyword -> Slid loc a
-      | s = LIDENT -> Slid loc s
-      | s = UIDENT -> Suid loc s
-      | s = TILDEIDENT -> Stid loc s
-      | s = QUESTIONIDENT -> Sqid loc s
-      | s = INT -> Sint loc s
-      | s = FLOAT -> Sfloat loc s
-      | s = CHAR -> Schar loc s
-      | s = STRING -> Sstring loc s
-      | s = QUOT ->
-          let i = String.index s ':' in
-          let typ = String.sub s 0 i in
-          let txt = String.sub s (i + 1) (String.length s - i - 1) in
-          Squot loc typ txt ] ]
-  ;
-  sexpr_dot:
-    [ [ s = LIDENTDOT -> Slid loc s
-      | s = UIDENTDOT -> Suid loc s ] ]
-  ;
-  pa_extend_keyword:
-    [ [ "_" -> "_"
-      | "," -> ","
-      | "=" -> "="
-      | ":" -> ":"
-      | "." -> "."
-      | "/" -> "/" ] ]
-  ;
-END;
diff --git a/camlp4/unmaintained/scheme/pa_scheme.sc b/camlp4/unmaintained/scheme/pa_scheme.sc
deleted file mode 100644 (file)
index cc6de18..0000000
+++ /dev/null
@@ -1,1029 +0,0 @@
-; pa_r.cmo pa_rp.cmo pa_extend.cmo q_MLast.cmo pr_dump.cmo
-; **********************************************************************
-;                                                                       
-;                                Camlp4                                 
-;                                                                       
-;     Daniel de Rauglaudre, projet Cristal, INRIA Rocquencourt          
-;                                                                       
-;   Copyright 2002 Institut National de Recherche en Informatique et    
-;   en Automatique.  All rights reserved.  This file is distributed     
-;   under the terms of the GNU Library General Public License, with     
-;   the special exception on linking described in file                  
-;    ../../../LICENSE.                                                  
-;                                                                       
-; **********************************************************************
-
-(open Pcaml)
-(open Stdpp)
-
-(type (choice 'a 'b) (sum (Left 'a) (Right 'b)))
-
-; Buffer
-
-(module Buff
- (struct
-  (define buff (ref (String.create 80)))
-  (define (store len x)
-    (if (>= len (String.length buff.val))
-        (:= buff.val (^ buff.val (String.create (String.length buff.val)))))
-    (:= buff.val.[len] x)
-    (succ len))
-  (define (get len) (String.sub buff.val 0 len))))
-
-; Lexer
-
-(definerec skip_to_eol
-  (parser
-   (((` (or '\n' '\r'))) ())
-   (((` _) s) (skip_to_eol s))))
-
-(define no_ident ['(' ')' '[' ']' '{' '}' ' ' '\t' '\n' '\r' ';'])
-
-(definerec (ident len)
-  (parser
-   (((` '.')) (values (Buff.get len) True))
-   (((` x (not (List.mem x no_ident))) s) (ident (Buff.store len x) s))
-   (() (values (Buff.get len) False))))
-
-(define (identifier kwt (values s dot))
-  (let ((con
-          (try (begin (: (Hashtbl.find kwt s) unit) "")
-           (Not_found
-            (match s.[0]
-             ((range 'A' 'Z') (if dot "UIDENTDOT" "UIDENT"))
-             (_ (if dot "LIDENTDOT" "LIDENT")))))))
-     (values con s)))
-
-(definerec (string len)
-  (parser
-   (((` '"')) (Buff.get len))
-   (((` '\\') (` c) s) (string (Buff.store (Buff.store len '\\') c) s))
-   (((` x) s) (string (Buff.store len x) s))))
-
-(definerec (end_exponent_part_under len)
-  (parser
-   (((` (as (range '0' '9') c)) s)
-    (end_exponent_part_under (Buff.store len c) s))
-   (() (values "FLOAT" (Buff.get len)))))
-
-(define (end_exponent_part len)
-  (parser
-   (((` (as (range '0' '9') c)) s)
-    (end_exponent_part_under (Buff.store len c) s))
-   (() (raise (Stream.Error "ill-formed floating-point constant")))))
-
-(define (exponent_part len)
-  (parser
-   (((` (as (or '+' '-') c)) s) (end_exponent_part (Buff.store len c) s))
-   (((a (end_exponent_part len))) a)))
-
-(definerec (decimal_part len)
-  (parser
-   (((` (as (range '0' '9') c)) s) (decimal_part (Buff.store len c) s))
-   (((` (or 'e' 'E')) s) (exponent_part (Buff.store len 'E') s))
-   (() (values "FLOAT" (Buff.get len)))))
-
-(definerec (number len)
-  (parser
-   (((` (as (range '0' '9') c)) s) (number (Buff.store len c) s))
-   (((` '.') s) (decimal_part (Buff.store len '.') s))
-   (((` (or 'e' 'E')) s) (exponent_part (Buff.store len 'E') s))
-   (() (values "INT" (Buff.get len)))))
-
-(define binary
-  (parser
-   (((` (as (range '0' '1') c))) c)))
-
-(define octal
-  (parser
-   (((` (as (range '0' '7') c))) c)))
-
-(define hexa
-  (parser
-   (((` (as (or (range '0' '9') (range 'a' 'f') (range 'A' 'F')) c))) c)))
-
-(definerec (digits_under kind len)
-  (parser
-   (((d kind) s) (digits_under kind (Buff.store len d) s))
-   (() (Buff.get len))))
-
-(define (digits kind bp len)
-  (parser
-   (((d kind) s) (values "INT" (digits_under kind (Buff.store len d) s)))
-   ((s) ep
-    (raise_with_loc (values
-                       (Reloc.shift_pos bp Reloc.zero_loc)
-                       (Reloc.shift_pos ep Reloc.zero_loc))
-       (Failure "ill-formed integer constant")))))
-
-(define (base_number kwt bp len)
-  (parser
-   (((` (or 'b' 'B')) s) (digits binary bp (Buff.store len 'b') s))
-   (((` (or 'o' 'O')) s) (digits octal bp (Buff.store len 'o') s))
-   (((` (or 'x' 'X')) s) (digits hexa bp (Buff.store len 'x') s))
-   (((id (ident (Buff.store 0 '#')))) (identifier kwt id))))
-
-(definerec (operator len)
-  (parser
-   (((` '.')) (Buff.get (Buff.store len '.')))
-   (() (Buff.get len))))
-
-(define (char_or_quote_id x)
-  (parser
-   (((` ''')) (values "CHAR" (String.make 1 x)))
-   ((s) ep
-    (if (List.mem x no_ident)
-        (Stdpp.raise_with_loc (values
-                                 (Reloc.shift_pos (- ep 2) Reloc.zero_loc)
-                                 (Reloc.shift_pos (- ep 1) Reloc.zero_loc))
-         (Stream.Error "bad quote"))
-        (let* ((len (Buff.store (Buff.store 0 ''') x))
-               ((values s dot) (ident len s)))
-          (values (if dot "LIDENTDOT" "LIDENT") s))))))
-
-(definerec (char len)
-  (parser
-   (((` ''')) len)
-   (((` x) s) (char (Buff.store len x) s))))
-
-(define quote
-  (parser
-   (((` '\\') (len (char (Buff.store 0 '\\'))))
-    (values "CHAR" (Buff.get len)))
-   (((` x) s) (char_or_quote_id x s))))
-
-; The system with LIDENTDOT and UIDENTDOT is not great (it would be
-; better to have a token DOT (actually SPACEDOT and DOT)) but it is
-; the only way (that I have found) to have a good behaviour in the
-; toplevel (not expecting tokens after a phrase). Drawbacks: 1/ to be
-; complete, we should have STRINGDOT, RIGHTPARENDOT, and so on 2/ the
-; parser rule with dot is right associative and we have to reverse
-; the resulting tree (using the function leftify).
-; This is a complicated issue: the behaviour of the OCaml toplevel
-; is strange, anyway. For example, even without Camlp4, The OCaml
-; toplevel accepts that:
-;     # let x = 32;; foo bar match let )
-
-(definerec*
-  ((lexer kwt)
-     (parser
-      (((t (lexer0 kwt))
-       (_ no_dot)) t)))
-  (no_dot
-    (parser
-     (((` '.')) ep
-      (Stdpp.raise_with_loc (values
-                               (Reloc.shift_pos (- ep 1) Reloc.zero_loc)
-                               (Reloc.shift_pos ep Reloc.zero_loc))
-         (Stream.Error "bad dot")))
-     (() ())))
-  ((lexer0 kwt)
-    (parser bp
-     (((` (or '\t' '\n' '\r')) s) (lexer0 kwt s))
-     (((` ' ') s) (after_space kwt s))
-     (((` ';') (_ skip_to_eol) s) (lexer kwt s))
-     (((` '(')) (values (values "" "(") (values bp (+ bp 1))))
-     (((` ')') s) ep (values (values "" (rparen s)) (values bp ep)))
-     (((` '[')) (values (values "" "[") (values bp (+ bp 1))))
-     (((` ']')) (values (values "" "]") (values bp (+ bp 1))))
-     (((` '{')) (values (values "" "{") (values bp (+ bp 1))))
-     (((` '}')) (values (values "" "}") (values bp (+ bp 1))))
-     (((` '"') (s (string 0))) ep
-      (values (values "STRING" s) (values bp ep)))
-     (((` ''') (tok quote)) ep (values tok (values bp ep)))
-     (((` '<') (tok (less kwt))) ep (values tok (values bp ep)))
-     (((` '-') (tok (minus kwt))) ep (values tok (values bp ep)))
-     (((` '~') (tok tilde)) ep (values tok (values bp ep)))
-     (((` '?') (tok question)) ep (values tok (values bp ep)))
-     (((` '#') (tok (base_number kwt bp (Buff.store 0 '0')))) ep
-      (values tok (values bp ep)))
-     (((` (as (range '0' '9') c)) (tok (number (Buff.store 0 c)))) ep
-      (values tok (values bp ep)))
-     (((` (as (or '+' '*' '/') c)) (id (operator (Buff.store 0 c)))) ep
-      (values (identifier kwt (values id False)) (values bp ep)))
-     (((` x) (id (ident (Buff.store 0 x)))) ep
-      (values (identifier kwt id) (values bp ep)))
-     (() (values (values "EOI" "") (values bp (+ bp 1))))))
-  (rparen
-   (parser
-    (((` '.')) ").")
-    ((_) ")")))
-  ((after_space kwt)
-    (parser
-     (((` '.')) ep (values (values "" ".") (values (- ep 1) ep)))
-     (((x (lexer0 kwt))) x)))
-  (tilde
-    (parser
-     (((` (as (range 'a' 'z') c)) ((values s dot) (ident (Buff.store 0 c))))
-      (values "TILDEIDENT" s))
-     (() (values "LIDENT" "~"))))
-  (question
-    (parser
-     (((` (as (range 'a' 'z') c)) ((values s dot) (ident (Buff.store 0 c))))
-      (values "QUESTIONIDENT" s))
-     (() (values "LIDENT" "?"))))
-  ((minus kwt)
-    (parser
-     (((` '.')) (identifier kwt (values "-." False)))
-     (((` (as (range '0' '9') c))
-      (n (number (Buff.store (Buff.store 0 '-') c)))) ep n)
-     (((id (ident (Buff.store 0 '-')))) (identifier kwt id))))
-  ((less kwt)
-    (parser
-     (((` ':') (lab (label 0)) (? (` '<') "'<' expected") (q (quotation 0)))
-      (values "QUOT" (^ lab ":" q)))
-     (((id (ident (Buff.store 0 '<')))) (identifier kwt id))))
-  ((label len)
-    (parser
-     (((` (as (or (range 'a' 'z') (range 'A' 'Z') '_') c)) s)
-      (label (Buff.store len c) s))
-     (() (Buff.get len))))
-  ((quotation len)
-    (parser
-     (((` '>') s) (quotation_greater len s))
-     (((` x) s) (quotation (Buff.store len x) s))
-     (() (failwith "quotation not terminated"))))
-  ((quotation_greater len)
-    (parser
-     (((` '>')) (Buff.get len))
-     (((a (quotation (Buff.store len '>')))) a))))
-
-(define (lexer_using kwt (values con prm))
-  (match con
-   ((or "CHAR" "EOI" "INT" "FLOAT" "LIDENT" "LIDENTDOT" "QUESTIONIDENT"
-     "QUOT" "STRING" "TILDEIDENT" "UIDENT" "UIDENTDOT")
-    ())
-   ("ANTIQUOT" ())
-   ("" (try (Hashtbl.find kwt prm) (Not_found (Hashtbl.add kwt prm ()))))
-   (_
-    (raise
-     (Token.Error
-      (^ "the constructor \"" con "\" is not recognized by Plexer"))))))
-
-(define (lexer_text (values con prm))
-  (cond
-   ((= con "") (^ "'"prm "'"))
-   ((= prm "") con)
-   (else (^ con " \"" prm "\""))))
-
-(define (lexer_gmake ())
-  (let ((kwt (Hashtbl.create 89)))
-     {(Token.tok_func
-       (Token.lexer_func_of_parser
-        (lambda (s)
-          (let (((values r (values bp ep)) (lexer kwt s)))
-            (values r (values (Reloc.shift_pos bp Reloc.zero_loc)
-                              (Reloc.shift_pos ep Reloc.zero_loc)))))))
-      (Token.tok_using (lexer_using kwt))
-      (Token.tok_removing (lambda))
-      (Token.tok_match Token.default_match)
-      (Token.tok_text lexer_text)
-      (Token.tok_comm None)}))
-
-; Building AST
-
-(type sexpr
-  (sum
-   (Sacc MLast.loc sexpr sexpr)
-   (Schar MLast.loc string)
-   (Sexpr MLast.loc (list sexpr))
-   (Sint MLast.loc string)
-   (Sfloat MLast.loc string)
-   (Slid MLast.loc string)
-   (Slist MLast.loc (list sexpr))
-   (Sqid MLast.loc string)
-   (Squot MLast.loc string string)
-   (Srec MLast.loc (list sexpr))
-   (Sstring MLast.loc string)
-   (Stid MLast.loc string)
-   (Suid MLast.loc string)))
-
-(define loc_of_sexpr
-  (lambda_match
-   ((or (Sacc loc _ _) (Schar loc _) (Sexpr loc _) (Sint loc _)
-     (Sfloat loc _) (Slid loc _) (Slist loc _) (Sqid loc _) (Squot loc _ _)
-     (Srec loc _) (Sstring loc _) (Stid loc _) (Suid loc _))
-    loc)))
-(define (error_loc loc err)
-  (raise_with_loc loc (Stream.Error (^ err " expected"))))
-(define (error se err) (error_loc (loc_of_sexpr se) err))
-
-(define strm_n "strm__")
-(define (peek_fun loc) <:expr< Stream.peek >>)
-(define (junk_fun loc) <:expr< Stream.junk >>)
-
-(define assoc_left_parsed_op_list ["+" "*" "+." "*." "land" "lor" "lxor"])
-(define assoc_right_parsed_op_list ["and" "or" "^" "@"])
-(define and_by_couple_op_list ["=" "<>" "<" ">" "<=" ">=" "==" "!="])
-
-(define (op_apply loc e1 e2)
-  (lambda_match
-   ("and" <:expr< $e1$ && $e2$ >>)
-   ("or" <:expr< $e1$ || $e2$ >>)
-   (x <:expr< $lid:x$ $e1$ $e2$ >>)))
-
-(define string_se
-  (lambda_match
-     ((Sstring loc s) s)
-     (se (error se "string"))))
-
-(define mod_ident_se
-  (lambda_match
-   ((Suid _ s) [(Pcaml.rename_id.val s)])
-   ((Slid _ s) [(Pcaml.rename_id.val s)])
-   (se (error se "mod_ident"))))
-
-(define (lident_expr loc s)
-  (if (&& (> (String.length s) 1) (= s.[0] '`'))
-     (let ((s (String.sub s 1 (- (String.length s) 1))))
-        <:expr< ` $s$ >>)
-     <:expr< $lid:(Pcaml.rename_id.val s)$ >>))
-
-(definerec*
-  (module_expr_se
-    (lambda_match
-     ((Sexpr loc [(Slid _ "functor") (Suid _ s) se1 se2])
-      (let* ((s (Pcaml.rename_id.val s))
-             (mt (module_type_se se1))
-             (me (module_expr_se se2)))
-         <:module_expr< functor ($s$ : $mt$) -> $me$ >>))
-     ((Sexpr loc [(Slid _ "struct") . sl])
-      (let ((mel (List.map str_item_se sl)))
-         <:module_expr< struct $list:mel$ end >>))
-     ((Sexpr loc [se1 se2])
-      (let* ((me1 (module_expr_se se1))
-             (me2 (module_expr_se se2)))
-         <:module_expr< $me1$ $me2$ >>))
-     ((Suid loc s) <:module_expr< $uid:(Pcaml.rename_id.val s)$ >>)
-     (se (error se "module expr"))))
-  (module_type_se
-    (lambda_match
-     ((Sexpr loc [(Slid _ "functor") (Suid _ s) se1 se2])
-      (let* ((s (Pcaml.rename_id.val s))
-             (mt1 (module_type_se se1))
-             (mt2 (module_type_se se2)))
-         <:module_type< functor ($s$ : $mt1$) -> $mt2$ >>))
-     ((Sexpr loc [(Slid _ "sig") . sel])
-      (let ((sil (List.map sig_item_se sel)))
-         <:module_type< sig $list:sil$ end >>))
-     ((Sexpr loc [(Slid _ "with") se (Sexpr _ sel)])
-      (let* ((mt (module_type_se se))
-             (wcl (List.map with_constr_se sel)))
-         <:module_type< $mt$ with $list:wcl$ >>))
-     ((Suid loc s) <:module_type< $uid:(Pcaml.rename_id.val s)$ >>)
-     (se (error se "module type"))))
-  (with_constr_se
-    (lambda_match
-     ((Sexpr loc [(Slid _ "type") se1 se2])
-      (let* ((tn (mod_ident_se se1))
-             (te (ctyp_se se2)))
-         (MLast.WcTyp loc tn [] te)))
-     (se (error se "with constr"))))
-  (sig_item_se
-    (lambda_match
-     ((Sexpr loc [(Slid _ "type") . sel])
-      (let ((tdl (type_declaration_list_se sel)))
-         <:sig_item< type $list:tdl$ >>))
-     ((Sexpr loc [(Slid _ "exception") (Suid _ c) . sel])
-      (let* ((c (Pcaml.rename_id.val c))
-             (tl (List.map ctyp_se sel)))
-         <:sig_item< exception $c$ of $list:tl$ >>))
-     ((Sexpr loc [(Slid _ "value") (Slid _ s) se])
-      (let* ((s (Pcaml.rename_id.val s))
-             (t (ctyp_se se)))
-         <:sig_item< value $s$ : $t$ >>))
-     ((Sexpr loc [(Slid _ "external") (Slid _ i) se . sel])
-      (let* ((i (Pcaml.rename_id.val i))
-             (pd (List.map string_se sel))
-             (t (ctyp_se se)))
-         <:sig_item< external $i$ : $t$ = $list:pd$ >>))
-     ((Sexpr loc [(Slid _ "module") (Suid _ s) se])
-      (let* ((s (Pcaml.rename_id.val s))
-             (mb (module_type_se se)))
-         <:sig_item< module $s$ : $mb$ >>))
-     ((Sexpr loc [(Slid _ "moduletype") (Suid _ s) se])
-      (let* ((s (Pcaml.rename_id.val s))
-             (mt (module_type_se se)))
-         <:sig_item< module type $s$ = $mt$ >>))
-     (se (error se "sig item"))))
-  ((str_item_se se)
-    (match se
-     ((Sexpr loc [(Slid _ "open") se])
-      (let ((s (mod_ident_se se))) <:str_item< open $s$ >>))
-     ((Sexpr loc [(Slid _ "type") . sel])
-      (let ((tdl (type_declaration_list_se sel)))
-         <:str_item< type $list:tdl$ >>))
-     ((Sexpr loc [(Slid _ "exception") (Suid _ c) . sel])
-      (let* ((c (Pcaml.rename_id.val c))
-             (tl (List.map ctyp_se sel)))
-         <:str_item< exception $c$ of $list:tl$ >>))
-     ((Sexpr loc [(Slid _ (as (or "define" "definerec") r)) se . sel])
-      (let* ((r (= r "definerec"))
-             ((values p e) (fun_binding_se se (begin_se loc sel))))
-         <:str_item< value $opt:r$ $p$ = $e$ >>))
-     ((Sexpr loc [(Slid _ (as (or "define*" "definerec*") r)) . sel])
-      (let* ((r (= r "definerec*"))
-             (lbs (List.map let_binding_se sel)))
-         <:str_item< value $opt:r$ $list:lbs$ >>))
-     ((Sexpr loc [(Slid _ "external") (Slid _ i) se . sel])
-      (let* ((i (Pcaml.rename_id.val i))
-             (pd (List.map string_se sel))
-             (t (ctyp_se se)))
-         <:str_item< external $i$ : $t$ = $list:pd$ >>))
-     ((Sexpr loc [(Slid _ "module") (Suid _ i) se])
-      (let* ((i (Pcaml.rename_id.val i))
-             (mb (module_binding_se se)))
-         <:str_item< module $i$ = $mb$ >>))
-     ((Sexpr loc [(Slid _ "moduletype") (Suid _ s) se])
-      (let* ((s (Pcaml.rename_id.val s))
-             (mt (module_type_se se)))
-         <:str_item< module type $s$ = $mt$ >>))
-     (_
-      (let* ((loc (loc_of_sexpr se))
-             (e (expr_se se)))
-         <:str_item< $exp:e$ >>))))
-  ((module_binding_se se) (module_expr_se se))
-  (expr_se
-    (lambda_match
-     ((Sacc loc se1 se2)
-      (let ((e1 (expr_se se1)))
-         (match se2
-          ((Slist loc [se2])
-           (let ((e2 (expr_se se2))) <:expr< $e1$ .[ $e2$ ] >>))
-          ((Sexpr loc [se2])
-           (let ((e2 (expr_se se2))) <:expr< $e1$ .( $e2$ ) >>))
-          (_ (let ((e2 (expr_se se2))) <:expr< $e1$ . $e2$ >>)))))
-     ((Slid loc s) (lident_expr loc s))
-     ((Suid loc s) <:expr< $uid:(Pcaml.rename_id.val s)$ >>)
-     ((Sint loc s) <:expr< $int:s$ >>)
-     ((Sfloat loc s) <:expr< $flo:s$ >>)
-     ((Schar loc s) <:expr< $chr:s$ >>)
-     ((Sstring loc s) <:expr< $str:s$ >>)
-     ((Stid loc s) <:expr< ~ $(Pcaml.rename_id.val s)$ >>)
-     ((Sqid loc s) <:expr< ? $(Pcaml.rename_id.val s)$ >>)
-     ((Sexpr loc []) <:expr< () >>)
-     ((when (Sexpr loc [(Slid _ s) e1 . (as [_ . _] sel)])
-      (List.mem s assoc_left_parsed_op_list))
-      (letrec
-       (((loop e1)
-          (lambda_match
-           ([] e1)
-           ([e2 . el] (loop (op_apply loc e1 e2 s) el)))))
-       (loop (expr_se e1) (List.map expr_se sel))))
-     ((when (Sexpr loc [(Slid _ s) . (as [_ _ . _] sel)])
-      (List.mem s assoc_right_parsed_op_list))
-      (letrec
-       ((loop
-          (lambda_match
-           ([]
-            (assert False))
-           ([e1] e1)
-           ([e1 . el] (let ((e2 (loop el))) (op_apply loc e1 e2 s))))))
-       (loop (List.map expr_se sel))))
-     ((when (Sexpr loc [(Slid _ s) . (as [_ _ . _] sel)])
-      (List.mem s and_by_couple_op_list))
-      (letrec
-       ((loop
-          (lambda_match
-           ((or [] [_]) (assert False))
-           ([e1 e2] <:expr< $lid:s$ $e1$ $e2$ >>)
-           ([e1 . (as [e2 _ . _] el)]
-            (let* ((a1 (op_apply loc e1 e2 s))
-                   (a2 (loop el)))
-               <:expr< $a1$ && $a2$ >>)))))
-       (loop (List.map expr_se sel))))
-     ((Sexpr loc [(Stid _ s) se])
-      (let ((e (expr_se se))) <:expr< ~ $s$ : $e$ >>))
-     ((Sexpr loc [(Slid _ "-") se])
-      (let ((e (expr_se se))) <:expr< - $e$ >>))
-     ((Sexpr loc [(Slid _ "if") se se1])
-      (let* ((e (expr_se se))
-             (e1 (expr_se se1)))
-         <:expr< if $e$ then $e1$ else () >>))
-     ((Sexpr loc [(Slid _ "if") se se1 se2])
-      (let* ((e (expr_se se))
-             (e1 (expr_se se1))
-             (e2 (expr_se se2)))
-         <:expr< if $e$ then $e1$ else $e2$ >>))
-     ((Sexpr loc [(Slid _ "cond") . sel])
-      (letrec
-       ((loop
-          (lambda_match
-           ([(Sexpr loc [(Slid _ "else") . sel])] (begin_se loc sel))
-           ([(Sexpr loc [se1 . sel1]) . sel]
-            (let* ((e1 (expr_se se1))
-                   (e2 (begin_se loc sel1))
-                   (e3 (loop sel)))
-               <:expr< if $e1$ then $e2$ else $e3$ >>))
-           ([] <:expr< () >>)
-           ([se . _] (error se "cond clause")))))
-       (loop sel)))
-     ((Sexpr loc [(Slid _ "while") se . sel])
-      (let* ((e (expr_se se))
-             (el (List.map expr_se sel)))
-         <:expr< while $e$ do { $list:el$ } >>))
-     ((Sexpr loc [(Slid _ "for") (Slid _ i) se1 se2 . sel])
-      (let* ((i (Pcaml.rename_id.val i))
-             (e1 (expr_se se1))
-             (e2 (expr_se se2))
-             (el (List.map expr_se sel)))
-         <:expr< for $i$ = $e1$ to $e2$ do { $list:el$ } >>))
-     ((Sexpr loc [(Slid loc1 "lambda")]) <:expr< fun [] >>)
-     ((Sexpr loc [(Slid loc1 "lambda") sep . sel])
-      (let ((e (begin_se loc1 sel)))
-         (match (ipatt_opt_se sep)
-          ((Left p) <:expr< fun $p$ -> $e$ >>)
-          ((Right (values se sel))
-           (List.fold_right
-            (lambda (se e)
-              (let ((p (ipatt_se se))) <:expr< fun $p$ -> $e$ >>))
-            [se . sel] e)))))
-     ((Sexpr loc [(Slid _ "lambda_match") . sel])
-      (let ((pel (List.map (match_case loc) sel)))
-         <:expr< fun [ $list:pel$ ] >>))
-     ((Sexpr loc [(Slid _ (as (or "let" "letrec") r)) . sel])
-      (match sel
-       ([(Sexpr _ sel1) . sel2]
-        (let* ((r (= r "letrec"))
-               (lbs (List.map let_binding_se sel1))
-               (e (begin_se loc sel2)))
-           <:expr< let $opt:r$ $list:lbs$ in $e$ >>))
-       ([(Slid _ n) (Sexpr _ sl) . sel]
-        (let* ((n (Pcaml.rename_id.val n))
-               ((values pl el)
-                 (List.fold_right
-                  (lambda (se (values pl el))
-                    (match se
-                           ((Sexpr _ [se1 se2])
-                            (values [(patt_se se1) . pl]
-                                    [(expr_se se2) . el]))
-                           (se (error se "named let"))))
-                  sl (values [] [])))
-               (e1
-                 (List.fold_right
-                  (lambda (p e) <:expr< fun $p$ -> $e$ >>)
-                  pl (begin_se loc sel)))
-               (e2
-                 (List.fold_left
-                  (lambda (e1 e2) <:expr< $e1$ $e2$ >>)
-                  <:expr< $lid:n$ >> el)))
-           <:expr< let rec $lid:n$ = $e1$ in $e2$ >>))
-       ([se . _] (error se "let_binding"))
-       (_ (error_loc loc "let_binding"))))
-     ((Sexpr loc [(Slid _ "let*") . sel])
-      (match sel
-       ([(Sexpr _ sel1) . sel2]
-        (List.fold_right
-         (lambda (se ek)
-           (let (((values p e) (let_binding_se se)))
-              <:expr< let $p$ = $e$ in $ek$ >>))
-         sel1 (begin_se loc sel2)))
-       ([se . _] (error se "let_binding"))
-       (_ (error_loc loc "let_binding"))))
-     ((Sexpr loc [(Slid _ "match") se . sel])
-      (let* ((e (expr_se se))
-             (pel (List.map (match_case loc) sel)))
-         <:expr< match $e$ with [ $list:pel$ ] >>))
-     ((Sexpr loc [(Slid _ "parser") . sel])
-      (let ((e
-              (match sel
-               ([(as (Slid _ _) se) . sel]
-                (let* ((p (patt_se se))
-                       (pc (parser_cases_se loc sel)))
-                   <:expr< let $p$ = Stream.count $lid:strm_n$ in $pc$ >>))
-               (_ (parser_cases_se loc sel)))))
-         <:expr< fun ($lid:strm_n$ : Stream.t _) -> $e$ >>))
-     ((Sexpr loc [(Slid _ "match_with_parser") se . sel])
-      (let* ((me (expr_se se))
-             ((values bpo sel)
-               (match sel
-                ([(as (Slid _ _) se) . sel] (values (Some (patt_se se)) sel))
-                (_ (values None sel))))
-             (pc (parser_cases_se loc sel))
-             (e
-               (match bpo
-                ((Some bp)
-                 <:expr< let $bp$ = Stream.count $lid:strm_n$ in $pc$ >>)
-                (None pc))))
-         (match me
-          ((when <:expr< $lid:x$ >> (= x strm_n)) e)
-          (_ <:expr< let ($lid:strm_n$ : Stream.t _) = $me$ in $e$ >>))))
-     ((Sexpr loc [(Slid _ "try") se . sel])
-      (let* ((e (expr_se se))
-             (pel (List.map (match_case loc) sel)))
-         <:expr< try $e$ with [ $list:pel$ ] >>))
-     ((Sexpr loc [(Slid _ "begin") . sel])
-      (let ((el (List.map expr_se sel))) <:expr< do { $list:el$ } >>))
-     ((Sexpr loc [(Slid _ ":=") se1 se2])
-      (let* ((e1 (expr_se se1))
-             (e2 (expr_se se2)))
-         <:expr< $e1$ := $e2$ >>))
-     ((Sexpr loc [(Slid _ "values") . sel])
-      (let ((el (List.map expr_se sel))) <:expr< ( $list:el$ ) >>))
-     ((Srec loc [(Slid _ "with") se . sel])
-      (let* ((e (expr_se se))
-             (lel (List.map (label_expr_se loc) sel)))
-         <:expr< { ($e$) with $list:lel$ } >>))
-     ((Srec loc sel)
-      (let ((lel (List.map (label_expr_se loc) sel)))
-         <:expr< { $list:lel$ } >>))
-     ((Sexpr loc [(Slid _ ":") se1 se2])
-      (let* ((e (expr_se se1)) (t (ctyp_se se2))) <:expr< ( $e$ : $t$ ) >>))
-     ((Sexpr loc [se]) (let ((e (expr_se se))) <:expr< $e$ () >>))
-     ((Sexpr loc [(Slid _ "assert") (Suid _ "False")])
-        <:expr< assert False >>)
-     ((Sexpr loc [(Slid _ "assert") se])
-        (let ((e (expr_se se))) <:expr< assert $e$ >>))
-     ((Sexpr loc [(Slid _ "lazy") se])
-        (let ((e (expr_se se))) <:expr< lazy $e$ >>))
-     ((Sexpr loc [se . sel])
-      (List.fold_left
-       (lambda (e se) (let ((e1 (expr_se se))) <:expr< $e$ $e1$ >>))
-       (expr_se se) sel))
-     ((Slist loc sel)
-      (letrec ((loop
-                 (lambda_match
-                  ([] <:expr< [] >>)
-                  ([se1 (Slid _ ".") se2]
-                   (let* ((e (expr_se se1))
-                          (el (expr_se se2)))
-                     <:expr< [$e$ :: $el$] >>))
-                  ([se . sel]
-                   (let* ((e (expr_se se))
-                          (el (loop sel)))
-                     <:expr< [$e$ :: $el$] >>)))))
-           (loop sel)))
-     ((Squot loc typ txt)
-      (Pcaml.handle_expr_quotation loc (values typ txt)))))
-  ((begin_se loc)
-   (lambda_match
-    ([] <:expr< () >>)
-    ([se] (expr_se se))
-    ((sel)
-      (let* ((el (List.map expr_se sel))
-             (loc (values (fst (loc_of_sexpr (List.hd sel))) (snd loc))))
-         <:expr< do { $list:el$ } >>))))
-  (let_binding_se
-   (lambda_match
-    ((Sexpr loc [se . sel])
-       (let ((e (begin_se loc sel)))
-         (match (ipatt_opt_se se)
-           ((Left p) (values p e))
-           ((Right _) (fun_binding_se se e)))))
-    (se (error se "let_binding"))))
-  ((fun_binding_se se e)
-   (match se
-          ((Sexpr _ [(Slid _ "values") . _]) (values (ipatt_se se) e))
-          ((Sexpr _ [(Slid loc s) . sel])
-           (let* ((s (Pcaml.rename_id.val s))
-                  (e
-                   (List.fold_right
-                    (lambda (se e)
-                      (let* ((loc
-                              (values (fst (loc_of_sexpr se))
-                                      (snd (MLast.loc_of_expr e))))
-                             (p (ipatt_se se)))
-                        <:expr< fun $p$ -> $e$ >>))
-                    sel e))
-                  (p <:patt< $lid:s$ >>))
-             (values p e)))
-          ((_) (values (ipatt_se se) e))))
-  ((match_case loc)
-   (lambda_match
-    ((Sexpr loc [(Sexpr _ [(Slid _ "when") se sew]) . sel])
-     (values (patt_se se) (Some (expr_se sew)) (begin_se loc sel)))
-    ((Sexpr loc [se . sel])
-     (values (patt_se se) None (begin_se loc sel)))
-    (se (error se "match_case"))))
-  ((label_expr_se loc)
-   (lambda_match
-    ((Sexpr _ [se1 se2]) (values (patt_se se1) (expr_se se2)))
-    (se (error se "label_expr"))))
-  ((label_patt_se loc)
-   (lambda_match
-    ((Sexpr _ [se1 se2]) (values (patt_se se1) (patt_se se2)))
-    (se (error se "label_patt"))))
-  ((parser_cases_se loc)
-   (lambda_match
-    ([] <:expr< raise Stream.Failure >>)
-    ([(Sexpr loc [(Sexpr _ spsel) . act]) . sel]
-      (let* ((ekont (lambda _ (parser_cases_se loc sel)))
-             (act (match act
-                         ([se] (expr_se se))
-                         ([sep se]
-                               (let* ((p (patt_se sep))
-                                      (e (expr_se se)))
-                        <:expr< let $p$ = Stream.count $lid:strm_n$ in $e$ >>))
-                         (_ (error_loc loc "parser_case")))))
-        (stream_pattern_se loc act ekont spsel)))
-    ([se . _]
-         (error se "parser_case"))))
-  ((stream_pattern_se loc act ekont)
-   (lambda_match
-    ([] act)
-    ([se . sel]
-         (let* ((ckont (lambda err <:expr< raise (Stream.Error $err$) >>))
-                (skont (stream_pattern_se loc act ckont sel)))
-           (stream_pattern_component skont ekont <:expr< "" >> se)))))
-  ((stream_pattern_component skont ekont err)
-   (lambda_match
-    ((Sexpr loc [(Slid _ "`") se . wol])
-     (let* ((wo (match wol
-                       ([se] (Some (expr_se se)))
-                       ([] None)
-                       (_ (error_loc loc "stream_pattern_component"))))
-            (e (peek_fun loc))
-            (p (patt_se se))
-            (j (junk_fun loc))
-            (k (ekont err)))
-       <:expr< match $e$ $lid:strm_n$ with
-               [ Some $p$ $when:wo$ -> do { $j$ $lid:strm_n$ ; $skont$ }
-               | _ -> $k$ ] >>))
-    ((Sexpr loc [se1 se2])
-     (let* ((p (patt_se se1))
-            (e (let ((e (expr_se se2)))
-       <:expr< try Some ($e$ $lid:strm_n$) with [ Stream.Failure -> None ] >>))
-            (k (ekont err)))
-       <:expr< match $e$ with [ Some $p$ -> $skont$ | _ -> $k$ ] >>))
-    ((Sexpr loc [(Slid _ "?") se1 se2])
-     (stream_pattern_component skont ekont (expr_se se2) se1))
-    ((Slid loc s)
-     (let ((s (Pcaml.rename_id.val s)))
-        <:expr< let $lid:s$ = $lid:strm_n$ in $skont$ >>))
-    (se
-     (error se "stream_pattern_component"))))
-  (patt_se
-   (lambda_match
-    ((Sacc loc se1 se2)
-     (let* ((p1 (patt_se se1)) (p2 (patt_se se2))) <:patt< $p1$ . $p2$ >>))
-    ((Slid loc "_") <:patt< _ >>)
-    ((Slid loc s) <:patt< $lid:(Pcaml.rename_id.val s)$ >>)
-    ((Suid loc s) <:patt< $uid:(Pcaml.rename_id.val s)$ >>)
-    ((Sint loc s) <:patt< $int:s$ >>)
-    ((Sfloat loc s) <:patt< $flo:s$ >>)
-    ((Schar loc s) <:patt< $chr:s$ >>)
-    ((Sstring loc s) <:patt< $str:s$ >>)
-    ((Stid loc _) (error_loc loc "patt"))
-    ((Sqid loc _) (error_loc loc "patt"))
-    ((Srec loc sel)
-     (let ((lpl (List.map (label_patt_se loc) sel)))
-        <:patt< { $list:lpl$ } >>))
-    ((Sexpr loc [(Slid _ ":") se1 se2])
-     (let* ((p (patt_se se1)) (t (ctyp_se se2))) <:patt< ($p$ : $t$) >>))
-    ((Sexpr loc [(Slid _ "or") se . sel])
-     (List.fold_left
-      (lambda (p se) (let ((p1 (patt_se se))) <:patt< $p$ | $p1$ >>))
-      (patt_se se) sel))
-    ((Sexpr loc [(Slid _ "range") se1 se2])
-     (let* ((p1 (patt_se se1)) (p2 (patt_se se2))) <:patt< $p1$ .. $p2$ >>))
-    ((Sexpr loc [(Slid _ "values") . sel])
-     (let ((pl (List.map patt_se sel))) <:patt< ( $list:pl$ ) >>))
-    ((Sexpr loc [(Slid _ "as") se1 se2])
-     (let* ((p1 (patt_se se1))
-            (p2 (patt_se se2)))
-       <:patt< ($p1$ as $p2$) >>))
-    ((Sexpr loc [se . sel])
-     (List.fold_left
-      (lambda (p se) (let ((p1 (patt_se se))) <:patt< $p$ $p1$ >>))
-      (patt_se se) sel))
-    ((Sexpr loc []) <:patt< () >>)
-    ((Slist loc sel)
-     (letrec ((loop
-                (lambda_match
-                 ([] <:patt< [] >>)
-                 ([se1 (Slid _ ".") se2]
-                  (let* ((p (patt_se se1))
-                         (pl (patt_se se2)))
-                    <:patt< [$p$ :: $pl$] >>))
-                 ([se . sel]
-                  (let* ((p (patt_se se))
-                         (pl (loop sel)))
-                    <:patt< [$p$ :: $pl$] >>)))))
-          (loop sel)))
-    ((Squot loc typ txt)
-     (Pcaml.handle_patt_quotation loc (values typ txt)))))
-  ((ipatt_se se)
-   (match (ipatt_opt_se se)
-          ((Left p) p)
-          ((Right (values se _)) (error se "ipatt"))))
-  (ipatt_opt_se
-   (lambda_match
-    ((Slid loc "_") (Left <:patt< _ >>))
-    ((Slid loc s) (Left <:patt< $lid:(Pcaml.rename_id.val s)$ >>))
-    ((Stid loc s) (Left <:patt< ~ $(Pcaml.rename_id.val s)$ >>))
-    ((Sqid loc s) (Left <:patt< ? $(Pcaml.rename_id.val s)$ >>))
-    ((Sexpr loc [(Sqid _ s) se])
-     (let* ((s (Pcaml.rename_id.val s))
-            (e (expr_se se)))
-        (Left <:patt< ? ( $lid:s$ = $e$ ) >>)))
-    ((Sexpr loc [(Slid _ ":") se1 se2])
-     (let* ((p (ipatt_se se1)) (t (ctyp_se se2)))
-        (Left <:patt< ($p$ : $t$) >>)))
-    ((Sexpr loc [(Slid _ "values") . sel])
-     (let ((pl (List.map ipatt_se sel))) (Left <:patt< ( $list:pl$ ) >>)))
-    ((Sexpr loc []) (Left <:patt< () >>))
-    ((Sexpr loc [se . sel]) (Right (values se sel)))
-    (se (error se "ipatt"))))
-  (type_declaration_list_se
-   (lambda_match
-    ([se1 se2 . sel]
-     (let (((values n1 loc1 tpl)
-            (match se1
-                   ((Sexpr _ [(Slid loc n) . sel])
-                    (values n loc (List.map type_parameter_se sel)))
-                   ((Slid loc n)
-                    (values n loc []))
-                   ((se)
-                    (error se "type declaration")))))
-       [(values (values loc1 (Pcaml.rename_id.val n1)) tpl (ctyp_se se2) []) .
-        (type_declaration_list_se sel)]))
-    ([] [])
-    ([se . _] (error se "type_declaration"))))
-  (type_parameter_se
-   (lambda_match
-    ((when (Slid _ s) (and (>= (String.length s) 2) (= s.[0] ''')))
-     (values (String.sub s 1 (- (String.length s) 1)) (values False False)))
-    (se
-     (error se "type_parameter"))))
-  (ctyp_se
-   (lambda_match
-    ((Sexpr loc [(Slid _ "sum") . sel])
-     (let ((cdl (List.map constructor_declaration_se sel)))
-       <:ctyp< [ $list:cdl$ ] >>))
-    ((Srec loc sel)
-     (let ((ldl (List.map label_declaration_se sel)))
-       <:ctyp< { $list:ldl$ } >>))
-    ((Sexpr loc [(Slid _ "->") . (as [_ _ . _] sel)])
-     (letrec
-        ((loop
-            (lambda_match
-             ([] (assert False))
-             ([se] (ctyp_se se))
-             ([se . sel]
-               (let* ((t1 (ctyp_se se))
-                      (loc (values (fst (loc_of_sexpr se)) (snd loc)))
-                      (t2 (loop sel)))
-                   <:ctyp< $t1$ -> $t2$ >>)))))
-        (loop sel)))
-    ((Sexpr loc [(Slid _ "*") . sel])
-     (let ((tl (List.map ctyp_se sel))) <:ctyp< ($list:tl$) >>))
-    ((Sexpr loc [se . sel])
-     (List.fold_left
-      (lambda (t se) (let ((t2 (ctyp_se se))) <:ctyp< $t$ $t2$ >>))
-      (ctyp_se se) sel))
-    ((Sacc loc se1 se2)
-     (let* ((t1 (ctyp_se se1)) (t2 (ctyp_se se2))) <:ctyp< $t1$ . $t2$ >>))
-    ((Slid loc "_") <:ctyp< _ >>)
-    ((Slid loc s)
-     (if (= s.[0] ''')
-         (let ((s (String.sub s 1 (- (String.length s) 1))))
-           <:ctyp< '$s$ >>)
-         <:ctyp< $lid:(Pcaml.rename_id.val s)$ >>))
-    ((Suid loc s) <:ctyp< $uid:(Pcaml.rename_id.val s)$ >>)
-    (se (error se "ctyp"))))
-  (constructor_declaration_se
-   (lambda_match
-    ((Sexpr loc [(Suid _ ci) . sel])
-     (values loc (Pcaml.rename_id.val ci) (List.map ctyp_se sel)))
-    (se
-     (error se "constructor_declaration"))))
-  (label_declaration_se
-   (lambda_match
-    ((Sexpr loc [(Slid _ lab) (Slid _ "mutable") se])
-     (values loc (Pcaml.rename_id.val lab) True (ctyp_se se)))
-    ((Sexpr loc [(Slid _ lab) se])
-     (values loc (Pcaml.rename_id.val lab) False (ctyp_se se)))
-    (se
-     (error se "label_declaration")))))
-
-(define directive_se
-  (lambda_match
-   ((Sexpr _ [(Slid _ s)]) (values s None))
-   ((Sexpr _ [(Slid _ s) se]) (let ((e (expr_se se))) (values s (Some e))))
-   (se (error se "directive"))))
-
-; Parser
-
-(:= Pcaml.syntax_name.val "Scheme")
-(:= Pcaml.no_constructors_arity.val False)
-
-(begin
- (Grammar.Unsafe.gram_reinit gram (lexer_gmake ()))
- (Grammar.Unsafe.clear_entry interf)
- (Grammar.Unsafe.clear_entry implem)
- (Grammar.Unsafe.clear_entry top_phrase)
- (Grammar.Unsafe.clear_entry use_file)
- (Grammar.Unsafe.clear_entry module_type)
- (Grammar.Unsafe.clear_entry module_expr)
- (Grammar.Unsafe.clear_entry sig_item)
- (Grammar.Unsafe.clear_entry str_item)
- (Grammar.Unsafe.clear_entry expr)
- (Grammar.Unsafe.clear_entry patt)
- (Grammar.Unsafe.clear_entry ctyp)
- (Grammar.Unsafe.clear_entry let_binding)
- (Grammar.Unsafe.clear_entry type_declaration)
- (Grammar.Unsafe.clear_entry class_type)
- (Grammar.Unsafe.clear_entry class_expr)
- (Grammar.Unsafe.clear_entry class_sig_item)
- (Grammar.Unsafe.clear_entry class_str_item))
-
-(:= Pcaml.parse_interf.val (Grammar.Entry.parse interf))
-(:= Pcaml.parse_implem.val (Grammar.Entry.parse implem))
-
-(define sexpr (Grammar.Entry.create gram "sexpr"))
-
-(definerec leftify
-  (lambda_match
-    ((Sacc loc1 se1 se2)
-     (match (leftify se2)
-       ((Sacc loc2 se2 se3) (Sacc loc1 (Sacc loc2 se1 se2) se3))
-       (se2 (Sacc loc1 se1 se2))))
-    (x x)))
-
-EXTEND
-  GLOBAL : implem interf top_phrase use_file str_item sig_item expr
-    patt sexpr /
-  implem :
-    [ [ "#" / se = sexpr ->
-          (let (((values n dp) (directive_se se)))
-             (values [(values <:str_item< # $n$ $opt:dp$ >> loc)] True))
-      | si = str_item / x = SELF ->
-          (let* (((values sil stopped) x)
-                 (loc (MLast.loc_of_str_item si)))
-             (values [(values si loc) . sil] stopped))
-      | EOI -> (values [] False) ] ]
-  /
-  interf :
-    [ [ "#" / se = sexpr ->
-          (let (((values n dp) (directive_se se)))
-             (values [(values <:sig_item< # $n$ $opt:dp$ >> loc)] True))
-      | si = sig_item / x = SELF ->
-          (let* (((values sil stopped) x)
-                 (loc (MLast.loc_of_sig_item si)))
-             (values [(values si loc) . sil] stopped))
-      | EOI -> (values [] False) ] ]
-  /
-  top_phrase :
-    [ [ "#" / se = sexpr ->
-          (let (((values n dp) (directive_se se)))
-             (Some <:str_item< # $n$ $opt:dp$ >>))
-      | se = sexpr -> (Some (str_item_se se))
-      | EOI -> None ] ]
-  /
-  use_file :
-    [ [ "#" / se = sexpr ->
-          (let (((values n dp) (directive_se se)))
-             (values [<:str_item< # $n$ $opt:dp$ >>] True))
-      | si = str_item / x = SELF ->
-          (let (((values sil stopped) x)) (values [si . sil] stopped))
-      | EOI -> (values [] False) ] ]
-  /
-  str_item :
-    [ [ se = sexpr -> (str_item_se se)
-      | e = expr -> <:str_item< $exp:e$ >> ] ]
-  /
-  sig_item :
-    [ [ se = sexpr -> (sig_item_se se) ] ]
-  /
-  expr :
-    [ "top"
-      [ se = sexpr -> (expr_se se) ] ]
-  /
-  patt :
-    [ [ se = sexpr -> (patt_se se) ] ]
-  /
-  sexpr :
-    [ [ se1 = sexpr_dot / se2 = sexpr -> (leftify (Sacc loc se1 se2)) ]
-    | [ "(" / sl = LIST0 sexpr / ")" -> (Sexpr loc sl)
-      | "(" / sl = LIST0 sexpr / ")." / se = sexpr ->
-          (leftify (Sacc loc (Sexpr loc sl) se))
-      | "[" / sl = LIST0 sexpr / "]" -> (Slist loc sl)
-      | "{" / sl = LIST0 sexpr / "}" -> (Srec loc sl)
-      | a = pa_extend_keyword -> (Slid loc a)
-      | s = LIDENT -> (Slid loc s)
-      | s = UIDENT -> (Suid loc s)
-      | s = TILDEIDENT -> (Stid loc s)
-      | s = QUESTIONIDENT -> (Sqid loc s)
-      | s = INT -> (Sint loc s)
-      | s = FLOAT -> (Sfloat loc s)
-      | s = CHAR -> (Schar loc s)
-      | s = STRING -> (Sstring loc s)
-      | s = QUOT ->
-          (let* ((i (String.index s ':'))
-                 (typ (String.sub s 0 i))
-                 (txt (String.sub s (+ i 1) (- (- (String.length s) i) 1))))
-            (Squot loc typ txt)) ] ]
-  /
-  sexpr_dot :
-    [ [ s = LIDENTDOT -> (Slid loc s)
-      | s = UIDENTDOT -> (Suid loc s) ] ]
-  /
-  pa_extend_keyword :
-    [ [ "_" -> "_"
-      | "," -> ","
-      | "=" -> "="
-      | ":" -> ":"
-      | "." -> "."
-      | "/" -> "/" ] ]
-  /
-END
diff --git a/camlp4/unmaintained/scheme/pr_scheme.ml b/camlp4/unmaintained/scheme/pr_scheme.ml
deleted file mode 100644 (file)
index a9cf348..0000000
+++ /dev/null
@@ -1,826 +0,0 @@
-(* pa_r.cmo q_MLast.cmo pa_extfun.cmo pr_dump.cmo *)
-(***********************************************************************)
-(*                                                                     *)
-(*                               Camlp4                                *)
-(*                                                                     *)
-(*    Daniel de Rauglaudre, projet Cristal, INRIA Rocquencourt         *)
-(*                                                                     *)
-(*  Copyright 2002 Institut National de Recherche en Informatique et   *)
-(*  en Automatique.  All rights reserved.  This file is distributed    *)
-(*  under the terms of the GNU Library General Public License, with    *)
-(*  the special exception on linking described in file                 *)
-(*   ../../../LICENSE.                                                 *)
-(*                                                                     *)
-(***********************************************************************)
-
-
-open Pcaml;
-open Format;
-
-type printer_t 'a =
-  { pr_fun : mutable string -> next 'a;
-    pr_levels : mutable list (pr_level 'a) }
-and pr_level 'a =
-  { pr_label : string;
-    pr_box : formatter -> (formatter -> unit) -> 'a -> unit;
-    pr_rules : mutable pr_rule 'a }
-and pr_rule 'a =
-  Extfun.t 'a (formatter -> curr 'a -> next 'a -> string -> kont -> unit)
-and curr 'a = formatter -> ('a * string * kont) -> unit
-and next 'a = formatter -> ('a * string * kont) -> unit
-and kont = formatter -> unit;
-
-value not_impl name x ppf k =
-  let desc =
-    if Obj.is_block (Obj.repr x) then
-      "tag = " ^ string_of_int (Obj.tag (Obj.repr x))
-    else "int_val = " ^ string_of_int (Obj.magic x)
-  in
-  fprintf ppf "<pr_scheme: not impl: %s; %s>%t" name desc k
-;
-
-value pr_fun name pr lab =
-  loop False pr.pr_levels where rec loop app =
-    fun
-    [ [] -> fun ppf (x, dg, k) -> failwith ("unable to print " ^ name)
-    | [lev :: levl] ->
-        if app || lev.pr_label = lab then
-          let next = loop True levl in
-          let rec curr ppf (x, dg, k) =
-            Extfun.apply lev.pr_rules x ppf curr next dg k
-          in
-          fun ppf ((x, _, _) as n) -> lev.pr_box ppf (fun ppf -> curr ppf n) x
-        else loop app levl ]
-;
-
-value rec find_pr_level lab =
-  fun
-  [ [] -> failwith ("level " ^ lab ^ " not found")
-  | [lev :: levl] ->
-      if lev.pr_label = lab then lev else find_pr_level lab levl ]
-;
-
-value pr_constr_decl = {pr_fun = fun []; pr_levels = []};
-value constr_decl ppf (x, k) = pr_constr_decl.pr_fun "top" ppf (x, "", k);
-pr_constr_decl.pr_fun := pr_fun "constr_decl" pr_constr_decl;
-
-value pr_ctyp = {pr_fun = fun []; pr_levels = []};
-pr_ctyp.pr_fun := pr_fun "ctyp" pr_ctyp;
-value ctyp ppf (x, k) = pr_ctyp.pr_fun "top" ppf (x, "", k);
-
-value pr_expr = {pr_fun = fun []; pr_levels = []};
-pr_expr.pr_fun := pr_fun "expr" pr_expr;
-value expr ppf (x, k) = pr_expr.pr_fun "top" ppf (x, "", k);
-
-value pr_label_decl = {pr_fun = fun []; pr_levels = []};
-value label_decl ppf (x, k) = pr_label_decl.pr_fun "top" ppf (x, "", k);
-pr_label_decl.pr_fun := pr_fun "label_decl" pr_label_decl;
-
-value pr_let_binding = {pr_fun = fun []; pr_levels = []};
-pr_let_binding.pr_fun := pr_fun "let_binding" pr_let_binding;
-value let_binding ppf (x, k) = pr_let_binding.pr_fun "top" ppf (x, "", k);
-
-value pr_match_assoc = {pr_fun = fun []; pr_levels = []};
-pr_match_assoc.pr_fun := pr_fun "match_assoc" pr_match_assoc;
-value match_assoc ppf (x, k) = pr_match_assoc.pr_fun "top" ppf (x, "", k);
-
-value pr_mod_ident = {pr_fun = fun []; pr_levels = []};
-pr_mod_ident.pr_fun := pr_fun "mod_ident" pr_mod_ident;
-value mod_ident ppf (x, k) = pr_mod_ident.pr_fun "top" ppf (x, "", k);
-
-value pr_module_binding = {pr_fun = fun []; pr_levels = []};
-pr_module_binding.pr_fun := pr_fun "module_binding" pr_module_binding;
-value module_binding ppf (x, k) =
-  pr_module_binding.pr_fun "top" ppf (x, "", k);
-
-value pr_module_expr = {pr_fun = fun []; pr_levels = []};
-pr_module_expr.pr_fun := pr_fun "module_expr" pr_module_expr;
-value module_expr ppf (x, k) = pr_module_expr.pr_fun "top" ppf (x, "", k);
-
-value pr_module_type = {pr_fun = fun []; pr_levels = []};
-pr_module_type.pr_fun := pr_fun "module_type" pr_module_type;
-value module_type ppf (x, k) = pr_module_type.pr_fun "top" ppf (x, "", k);
-
-value pr_patt = {pr_fun = fun []; pr_levels = []};
-pr_patt.pr_fun := pr_fun "patt" pr_patt;
-value patt ppf (x, k) = pr_patt.pr_fun "top" ppf (x, "", k);
-
-value pr_sig_item = {pr_fun = fun []; pr_levels = []};
-pr_sig_item.pr_fun := pr_fun "sig_item" pr_sig_item;
-value sig_item ppf (x, k) = pr_sig_item.pr_fun "top" ppf (x, "", k);
-
-value pr_str_item = {pr_fun = fun []; pr_levels = []};
-pr_str_item.pr_fun := pr_fun "str_item" pr_str_item;
-value str_item ppf (x, k) = pr_str_item.pr_fun "top" ppf (x, "", k);
-
-value pr_type_decl = {pr_fun = fun []; pr_levels = []};
-value type_decl ppf (x, k) = pr_type_decl.pr_fun "top" ppf (x, "", k);
-pr_type_decl.pr_fun := pr_fun "type_decl" pr_type_decl;
-
-value pr_type_params = {pr_fun = fun []; pr_levels = []};
-value type_params ppf (x, k) = pr_type_params.pr_fun "top" ppf (x, "", k);
-pr_type_params.pr_fun := pr_fun "type_params" pr_type_params;
-
-value pr_with_constr = {pr_fun = fun []; pr_levels = []};
-value with_constr ppf (x, k) = pr_with_constr.pr_fun "top" ppf (x, "", k);
-pr_with_constr.pr_fun := pr_fun "with_constr" pr_with_constr;
-
-(* general functions *)
-
-value nok ppf = ();
-value ks s k ppf = fprintf ppf "%s%t" s k;
-
-value rec list f ppf (l, k) =
-  match l with
-  [ [] -> k ppf
-  | [x] -> f ppf (x, k)
-  | [x :: l] -> fprintf ppf "%a@ %a" f (x, nok) (list f) (l, k) ]
-;
-
-value rec listwb b f ppf (l, k) =
-  match l with
-  [ [] -> k ppf
-  | [x] -> f ppf ((b, x), k)
-  | [x :: l] -> fprintf ppf "%a@ %a" f ((b, x), nok) (listwb "" f) (l, k) ]
-;
-
-(* specific functions *)
-
-value rec is_irrefut_patt =
-  fun
-  [ <:patt< $lid:_$ >> -> True
-  | <:patt< () >> -> True
-  | <:patt< _ >> -> True
-  | <:patt< ($x$ as $y$) >> -> is_irrefut_patt x && is_irrefut_patt y
-  | <:patt< { $list:fpl$ } >> ->
-      List.for_all (fun (_, p) -> is_irrefut_patt p) fpl
-  | <:patt< ($p$ : $_$) >> -> is_irrefut_patt p
-  | <:patt< ($list:pl$) >> -> List.for_all is_irrefut_patt pl
-  | <:patt< ? $_$ : ( $p$ ) >> -> is_irrefut_patt p
-  | <:patt< ? $_$ : ($p$ = $_$) >> -> is_irrefut_patt p
-  | <:patt< ~ $_$ >> -> True
-  | <:patt< ~ $_$ : $p$ >> -> is_irrefut_patt p
-  | _ -> False ]
-;
-
-value expr_fun_args ge = Extfun.apply pr_expr_fun_args.val ge;
-
-pr_expr_fun_args.val :=
-  extfun Extfun.empty with
-  [ <:expr< fun [$p$ -> $e$] >> as ge ->
-      if is_irrefut_patt p then
-        let (pl, e) = expr_fun_args e in
-        ([p :: pl], e)
-      else ([], ge)
-  | ge -> ([], ge) ];
-
-value sequence ppf (e, k) =
-  match e with
-  [ <:expr< do { $list:el$ } >> ->
-      fprintf ppf "@[<hv>%a@]" (list expr) (el, k)
-  | _ -> expr ppf (e, k) ]
-;
-
-value string ppf (s, k) = fprintf ppf "\"%s\"%t" s k;
-
-value int_repr s =
-  if String.length s > 2 && s.[0] = '0' then
-    match s.[1] with
-    [ 'b' | 'o' | 'x' | 'B' | 'O' | 'X' ->
-        "#" ^ String.sub s 1 (String.length s - 1)
-    | _ -> s ]
-  else s  
-;
-
-value assoc_left_parsed_op_list = ["+"; "*"; "land"; "lor"; "lxor"];
-value assoc_right_parsed_op_list = ["and"; "or"; "^"; "@"];
-value and_by_couple_op_list = ["="; "<>"; "<"; ">"; "<="; ">="; "=="; "!="];
-
-(* extensible pretty print functions *)
-
-pr_constr_decl.pr_levels :=
-  [{pr_label = "top";
-    pr_box ppf f x = fprintf ppf "@[%t@]" f;
-    pr_rules =
-      extfun Extfun.empty with
-      [ (loc, c, []) ->
-          fun ppf curr next dg k -> fprintf ppf "(@[<hv>%s%t@]" c (ks ")" k)
-      | (loc, c, tl) ->
-          fun ppf curr next dg k ->
-            fprintf ppf "(@[<hv>%s@ %a@]" c (list ctyp) (tl, ks ")" k) ]}];
-
-pr_ctyp.pr_levels :=
-  [{pr_label = "top";
-    pr_box ppf f x = fprintf ppf "@[%t@]" f;
-    pr_rules =
-      extfun Extfun.empty with
-      [ <:ctyp< [ $list:cdl$ ] >> ->
-          fun ppf curr next dg k ->
-            fprintf ppf "(@[<hv>sum@ %a@]" (list constr_decl) (cdl, ks ")" k)
-      | <:ctyp< { $list:cdl$ } >> ->
-          fun ppf curr next dg k ->
-            fprintf ppf "{@[<hv>%a@]" (list label_decl) (cdl, ks "}" k)
-      | <:ctyp< ( $list:tl$ ) >> ->
-          fun ppf curr next dg k ->
-            fprintf ppf "(@[* @[<hv>%a@]@]" (list ctyp) (tl, ks ")" k)
-      | <:ctyp< $t1$ -> $t2$ >> ->
-          fun ppf curr next dg k ->
-            let tl =
-              loop t2 where rec loop =
-                fun
-                [ <:ctyp< $t1$ -> $t2$ >> -> [t1 :: loop t2]
-                | t -> [t] ]
-            in
-            fprintf ppf "(@[-> @[<hv>%a@]@]" (list ctyp)
-              ([t1 :: tl], ks ")" k)
-      | <:ctyp< $t1$ $t2$ >> ->
-          fun ppf curr next dg k ->
-            let (t, tl) =
-              loop [t2] t1 where rec loop tl =
-                fun
-                [ <:ctyp< $t1$ $t2$ >> -> loop [t2 :: tl] t1
-                | t1 -> (t1, tl) ]
-            in
-            fprintf ppf "(@[%a@ %a@]" ctyp (t, nok) (list ctyp) (tl, ks ")" k)
-      | <:ctyp< $t1$ . $t2$ >> ->
-          fun ppf curr next dg k ->
-            fprintf ppf "%a.%a" ctyp (t1, nok) ctyp (t2, k)
-      | <:ctyp< $lid:s$ >> | <:ctyp< $uid:s$ >> ->
-          fun ppf curr next dg k -> fprintf ppf "%s%t" s k
-      | <:ctyp< ' $s$ >> ->
-          fun ppf curr next dg k -> fprintf ppf "'%s%t" s k
-      | <:ctyp< _ >> ->
-          fun ppf curr next dg k -> fprintf ppf "_%t" k
-      | x ->
-          fun ppf curr next dg k -> not_impl "ctyp" x ppf k ]}];
-
-pr_expr.pr_levels :=
-  [{pr_label = "top";
-    pr_box ppf f x = fprintf ppf "@[%t@]" f;
-    pr_rules =
-      extfun Extfun.empty with
-      [ <:expr< fun [] >> ->
-          fun ppf curr next dg k ->
-            fprintf ppf "(lambda%t" (ks ")" k)
-      | <:expr< fun $lid:s$ -> $e$ >> ->
-          fun ppf curr next dg k ->
-            fprintf ppf "(lambda@ %s@;<1 1>%a" s expr (e, ks ")" k)
-      | <:expr< fun [ $list:pwel$ ] >> ->
-          fun ppf curr next dg k ->
-            fprintf ppf "(@[<hv>lambda_match@ %a@]" (list match_assoc)
-              (pwel, ks ")" k)
-      | <:expr< match $e$ with [ $list:pwel$ ] >> ->
-          fun ppf curr next dg k ->
-            fprintf ppf "(@[<hv>@[<b 2>match@ %a@]@ %a@]" expr (e, nok)
-              (list match_assoc) (pwel, ks ")" k)
-      | <:expr< try $e$ with [ $list:pwel$ ] >> ->
-          fun ppf curr next dg k ->
-            fprintf ppf "(@[<hv>@[<b 2>try@ %a@]@ %a@]" expr (e, nok)
-              (list match_assoc) (pwel, ks ")" k)
-      | <:expr< let $p1$ = $e1$ in $e2$ >> ->
-          fun ppf curr next dg k ->
-            let (pel, e) =
-              loop [(p1, e1)] e2 where rec loop pel =
-                fun
-                [ <:expr< let $p1$ = $e1$ in $e2$ >> ->
-                    loop [(p1, e1) :: pel] e2
-                | e -> (List.rev pel, e) ]
-            in
-            let b =
-              match pel with
-              [ [_] -> "let"
-              | _ -> "let*" ]
-            in
-            fprintf ppf "(@[@[%s (@[<v>%a@]@]@;<1 2>%a@]" b
-              (listwb "" let_binding) (pel, ks ")" nok)
-                 sequence (e, ks ")" k)
-      | <:expr< let $opt:rf$ $list:pel$ in $e$ >> ->
-          fun ppf curr next dg k ->
-            let b = if rf then "letrec" else "let" in
-            fprintf ppf "(@[<hv>%s@ (@[<hv>%a@]@ %a@]" b
-              (listwb "" let_binding) (pel, ks ")" nok) expr (e, ks ")" k)
-      | <:expr< if $e1$ then $e2$ else () >> ->
-          fun ppf curr next dg k ->
-            fprintf ppf "(if @[%a@;<1 0>%a@]" expr (e1, nok)
-              expr (e2, ks ")" k)
-      | <:expr< if $e1$ then $e2$ else $e3$ >> ->
-          fun ppf curr next dg k ->
-            fprintf ppf "(if @[%a@ %a@ %a@]" expr (e1, nok)
-              expr (e2, nok) expr (e3, ks ")" k)
-      | <:expr< do { $list:el$ } >> ->
-          fun ppf curr next dg k ->
-            fprintf ppf "(begin@;<1 1>@[<hv>%a@]" (list expr) (el, ks ")" k)
-      | <:expr< for $i$ = $e1$ to $e2$ do { $list:el$ } >> ->
-          fun ppf curr next dg k ->
-            fprintf ppf "(@[for %s@ %a@ %a %a@]" i expr (e1, nok)
-              expr (e2, nok) (list expr) (el, ks ")" k)
-      | <:expr< ($e$ : $t$) >> ->
-          fun ppf curr next dg k ->
-            fprintf ppf "(:@ %a@ %a" expr (e, nok) ctyp (t, ks ")" k)
-      | <:expr< ($list:el$) >> ->
-          fun ppf curr next dg k ->
-            fprintf ppf "(values @[%a@]" (list expr) (el, ks ")" k)
-      | <:expr< { $list:fel$ } >> ->
-          fun ppf curr next dg k ->
-            let record_binding ppf ((p, e), k) =
-              fprintf ppf "(@[%a@ %a@]" patt (p, nok) expr (e, ks ")" k)
-            in
-            fprintf ppf "{@[<hv>%a@]" (list record_binding) (fel, ks "}" k)
-      | <:expr< { ($e$) with $list:fel$ } >> ->
-          fun ppf curr next dg k ->
-            let record_binding ppf ((p, e), k) =
-              fprintf ppf "(@[%a@ %a@]" patt (p, nok) expr (e, ks ")" k)
-            in
-            fprintf ppf "{@[@[with@ %a@]@ @[%a@]@]" expr (e, nok)
-              (list record_binding) (fel, ks "}" k)
-      | <:expr< $e1$ := $e2$ >> ->
-          fun ppf curr next dg k ->
-            fprintf ppf "(:=@;<1 1>%a@;<1 1>%a" expr (e1, nok)
-              expr (e2, ks ")" k)
-      | <:expr< [$_$ :: $_$] >> as e ->
-          fun ppf curr next dg k ->
-            let (el, c) =
-              make_list e where rec make_list e =
-                match e with
-                [ <:expr< [$e$ :: $y$] >> ->
-                    let (el, c) = make_list y in
-                    ([e :: el], c)
-                | <:expr< [] >> -> ([], None)
-                | x -> ([], Some e) ]
-            in
-            match c with
-            [ None ->
-                fprintf ppf "[%a" (list expr) (el, ks "]" k)
-            | Some x ->
-                fprintf ppf "[%a@ %a" (list expr) (el, ks " ." nok)
-                  expr (x, ks "]" k) ]
-      | <:expr< lazy ($x$) >> ->
-          fun ppf curr next dg k ->
-            fprintf ppf "(@[lazy@ %a@]" expr (x, ks ")" k)
-      | <:expr< $lid:s$ $e1$ $e2$ >>
-        when List.mem s assoc_right_parsed_op_list ->
-          fun ppf curr next dg k ->
-            let el =
-              loop [e1] e2 where rec loop el =
-                fun
-                [ <:expr< $lid:s1$ $e1$ $e2$ >> when s1 = s ->
-                    loop [e1 :: el] e2
-                | e -> List.rev [e :: el] ]
-            in
-            fprintf ppf "(@[%s %a@]" s (list expr) (el, ks ")" k)
-      | <:expr< $e1$ $e2$ >> ->
-          fun ppf curr next dg k ->
-            let (f, el) =
-              loop [e2] e1 where rec loop el =
-                fun
-                [ <:expr< $e1$ $e2$ >> -> loop [e2 :: el] e1
-                | e1 -> (e1, el) ]
-            in
-            fprintf ppf "(@[%a@ %a@]" expr (f, nok) (list expr) (el, ks ")" k)
-      | <:expr< ~ $s$ : ($e$) >> ->
-          fun ppf curr next dg k ->
-            fprintf ppf "(~%s@ %a" s expr (e, ks ")" k)
-      | <:expr< $e1$ .[ $e2$ ] >> ->
-          fun ppf curr next dg k ->
-            fprintf ppf "%a.[%a" expr (e1, nok) expr (e2, ks "]" k)
-      | <:expr< $e1$ .( $e2$ ) >> ->
-          fun ppf curr next dg k ->
-            fprintf ppf "%a.(%a" expr (e1, nok) expr (e2, ks ")" k)
-      | <:expr< $e1$ . $e2$ >> ->
-          fun ppf curr next dg k ->
-            fprintf ppf "%a.%a" expr (e1, nok) expr (e2, k)
-      | <:expr< $int:s$ >> ->
-          fun ppf curr next dg k -> fprintf ppf "%s%t" (int_repr s) k
-      | <:expr< $lid:s$ >> | <:expr< $uid:s$ >> ->
-          fun ppf curr next dg k -> fprintf ppf "%s%t" s k
-      | <:expr< ` $s$ >> ->
-          fun ppf curr next dg k -> fprintf ppf "`%s%t" s k
-      | <:expr< $str:s$ >> ->
-          fun ppf curr next dg k -> fprintf ppf "\"%s\"%t" s k
-      | <:expr< $chr:s$ >> ->
-          fun ppf curr next dg k -> fprintf ppf "'%s'%t" s k
-      | x ->
-          fun ppf curr next dg k -> not_impl "expr" x ppf k ]}];
-
-pr_label_decl.pr_levels :=
-  [{pr_label = "top";
-    pr_box ppf f x = fprintf ppf "@[%t@]" f;
-    pr_rules =
-      extfun Extfun.empty with
-      [ (loc, f, m, t) ->
-          fun ppf curr next dg k ->
-            fprintf ppf "(@[<hv>%s%t@ %a@]" f
-              (fun ppf -> if m then fprintf ppf "@ mutable" else ())
-              ctyp (t, ks ")" k) ]}];
-
-pr_let_binding.pr_levels :=
-  [{pr_label = "top";
-    pr_box ppf f x = fprintf ppf "@[%t@]" f;
-    pr_rules =
-      extfun Extfun.empty with
-      [ (b, (p, e)) ->
-          fun ppf curr next dg k ->
-            let (pl, e) = expr_fun_args e in
-            match pl with
-            [ [] ->
-                fprintf ppf "(@[<b 1>%s%s%a@ %a@]" b
-                  (if b = "" then "" else " ") patt (p, nok)
-                  sequence (e, ks ")" k)
-            | _ ->
-                fprintf ppf "(@[<b 1>%s%s(%a)@ %a@]" b
-                  (if b = "" then "" else " ") (list patt) ([p :: pl], nok)
-                  sequence (e, ks ")" k) ] ]}];
-
-pr_match_assoc.pr_levels :=
-  [{pr_label = "top";
-    pr_box ppf f x = fprintf ppf "@[%t@]" f;
-    pr_rules =
-      extfun Extfun.empty with
-      [ (p, we, e) ->
-          fun ppf curr next dg k ->
-            fprintf ppf "(@[%t@ %a@]"
-              (fun ppf ->
-                 match we with
-                 [ Some e ->
-                     fprintf ppf "(when@ %a@ %a" patt (p, nok)
-                       expr (e, ks ")" nok)
-                 | None -> patt ppf (p, nok) ])
-              sequence (e, ks ")" k) ]}];
-
-pr_mod_ident.pr_levels :=
-  [{pr_label = "top";
-    pr_box ppf f x = fprintf ppf "@[%t@]" f;
-    pr_rules =
-      extfun Extfun.empty with
-      [ [s] ->
-          fun ppf curr next dg k ->
-            fprintf ppf "%s%t" s k
-      | [s :: sl] ->
-          fun ppf curr next dg k ->
-            fprintf ppf "%s.%a" s curr (sl, "", k)
-      | x ->
-          fun ppf curr next dg k -> not_impl "mod_ident" x ppf k ]}];
-
-pr_module_binding.pr_levels :=
-  [{pr_label = "top";
-    pr_box ppf f x = fprintf ppf "@[%t@]" f;
-    pr_rules =
-      extfun Extfun.empty with
-      [ (b, s, me) ->
-          fun ppf curr next dg k ->
-            fprintf ppf "%s@ %s@ %a" b s module_expr (me, k) ]}];
-
-pr_module_expr.pr_levels :=
-  [{pr_label = "top";
-    pr_box ppf f x = fprintf ppf "@[%t@]" f;
-    pr_rules =
-      extfun Extfun.empty with
-      [ <:module_expr< functor ($i$ : $mt$) -> $me$ >> ->
-          fun ppf curr next dg k ->
-            fprintf ppf "(@[@[@[functor@ %s@]@ %a@]@ %a@]"
-              i module_type (mt, nok) module_expr (me, ks ")" k)
-      | <:module_expr< struct $list:sil$ end >> ->
-          fun ppf curr next dg k ->
-            fprintf ppf "(@[struct@ @[<hv>%a@]@]" (list str_item)
-              (sil, ks ")" k)
-      | <:module_expr< $me1$ $me2$ >> ->
-          fun ppf curr next dg k ->
-            fprintf ppf "(@[%a@ %a@]" module_expr (me1, nok)
-              module_expr (me2, ks ")" k)
-      | <:module_expr< $uid:s$ >> ->
-          fun ppf curr next dg k -> fprintf ppf "%s%t" s k
-      | x ->
-          fun ppf curr next dg k -> not_impl "module_expr" x ppf k ]}];
-
-pr_module_type.pr_levels :=
-  [{pr_label = "top";
-    pr_box ppf f x = fprintf ppf "@[%t@]" f;
-    pr_rules =
-      extfun Extfun.empty with
-      [ <:module_type< functor ($i$ : $mt1$) -> $mt2$ >> ->
-          fun ppf curr next dg k ->
-            fprintf ppf "(@[@[@[functor@ %s@]@ %a@]@ %a@]"
-              i module_type (mt1, nok) module_type (mt2, ks ")" k)
-      | <:module_type< sig $list:sil$ end >> ->
-          fun ppf curr next dg k ->
-            fprintf ppf "(@[sig@ @[<hv>%a@]@]" (list sig_item) (sil, ks ")" k)
-      | <:module_type< $mt$ with $list:wcl$ >> ->
-          fun ppf curr next dg k ->
-            fprintf ppf "(@[with@;<1 2>@[%a@ (%a@]@]" module_type (mt, nok)
-              (list with_constr) (wcl, ks "))" k)
-      | <:module_type< $uid:s$ >> ->
-          fun ppf curr next dg k -> fprintf ppf "%s%t" s k
-      | x ->
-          fun ppf curr next dg k -> not_impl "module_type" x ppf k ]}];
-
-pr_patt.pr_levels :=
-  [{pr_label = "top";
-    pr_box ppf f x = fprintf ppf "@[%t@]" f;
-    pr_rules =
-      extfun Extfun.empty with
-      [ <:patt< $p1$ | $p2$ >> ->
-          fun ppf curr next dg k ->
-            let (f, pl) =
-              loop [p2] p1 where rec loop pl =
-                fun
-                [ <:patt< $p1$ | $p2$ >> -> loop [p2 :: pl] p1
-                | p1 -> (p1, pl) ]
-            in
-            fprintf ppf "(@[or@ %a@ %a@]" patt (f, nok) (list patt)
-              (pl, ks ")" k)
-      | <:patt< ($p1$ as $p2$) >> ->
-          fun ppf curr next dg k ->
-            fprintf ppf "(@[as@ %a@ %a@]" patt (p1, nok) patt (p2, ks ")" k)
-      | <:patt< $p1$ .. $p2$ >> ->
-          fun ppf curr next dg k ->
-            fprintf ppf "(@[range@ %a@ %a@]" patt (p1, nok) patt (p2, ks ")" k)
-      | <:patt< [$_$ :: $_$] >> as p ->
-          fun ppf curr next dg k ->
-            let (pl, c) =
-              make_list p where rec make_list p =
-                match p with
-                [ <:patt< [$p$ :: $y$] >> ->
-                    let (pl, c) = make_list y in
-                    ([p :: pl], c)
-                | <:patt< [] >> -> ([], None)
-                | x -> ([], Some p) ]
-            in
-            match c with
-            [ None ->
-                fprintf ppf "[%a" (list patt) (pl, ks "]" k)
-            | Some x ->
-                fprintf ppf "[%a@ %a" (list patt) (pl, ks " ." nok)
-                  patt (x, ks "]" k) ]
-      | <:patt< $p1$ $p2$ >> ->
-          fun ppf curr next dg k ->
-            let pl =
-              loop [p2] p1 where rec loop pl =
-                fun
-                [ <:patt< $p1$ $p2$ >> -> loop [p2 :: pl] p1
-                | p1 -> [p1 :: pl] ]
-            in
-            fprintf ppf "(@[%a@]" (list patt) (pl, ks ")" k)
-      | <:patt< ($p$ : $t$) >> ->
-          fun ppf curr next dg k ->
-            fprintf ppf "(:@ %a@ %a" patt (p, nok) ctyp (t, ks ")" k)
-      | <:patt< ($list:pl$) >> ->
-          fun ppf curr next dg k ->
-            fprintf ppf "(values @[%a@]" (list patt) (pl, ks ")" k)
-      | <:patt< { $list:fpl$ } >> ->
-          fun ppf curr next dg k ->
-            let record_binding ppf ((p1, p2), k) =
-              fprintf ppf "(@[%a@ %a@]" patt (p1, nok) patt (p2, ks ")" k)
-            in
-            fprintf ppf "(@[<hv>{}@ %a@]" (list record_binding) (fpl, ks ")" k)
-      | <:patt< ? $x$ >> ->
-          fun ppf curr next dg k -> fprintf ppf "?%s%t" x k
-      | <:patt< ? ($lid:x$ = $e$) >> ->
-          fun ppf curr next dg k -> fprintf ppf "(?%s@ %a" x expr (e, ks ")" k)
-      | <:patt< $p1$ . $p2$ >> ->
-          fun ppf curr next dg k ->
-            fprintf ppf "%a.%a" patt (p1, nok) patt (p2, k)
-      | <:patt< $lid:s$ >> | <:patt< $uid:s$ >> ->
-          fun ppf curr next dg k -> fprintf ppf "%s%t" s k
-      | <:patt< $str:s$ >> ->
-          fun ppf curr next dg k -> fprintf ppf "\"%s\"%t" s k
-      | <:patt< $chr:s$ >> ->
-          fun ppf curr next dg k -> fprintf ppf "'%s'%t" s k
-      | <:patt< $int:s$ >> ->
-          fun ppf curr next dg k -> fprintf ppf "%s%t" (int_repr s) k
-      | <:patt< $flo:s$ >> ->
-          fun ppf curr next dg k -> fprintf ppf "%s%t" s k
-      | <:patt< _ >> ->
-          fun ppf curr next dg k -> fprintf ppf "_%t" k
-      | x ->
-          fun ppf curr next dg k -> not_impl "patt" x ppf k ]}];
-
-pr_sig_item.pr_levels :=
-  [{pr_label = "top";
-    pr_box ppf f x = fprintf ppf "@[%t@]" f;
-    pr_rules =
-      extfun Extfun.empty with
-      [ <:sig_item< type $list:tdl$ >> ->
-          fun ppf curr next dg k ->
-            match tdl with
-            [ [td] -> fprintf ppf "(%a" type_decl (("type", td), ks ")" k)
-            | tdl ->
-                fprintf ppf "(@[<hv>type@ %a@]" (listwb "" type_decl)
-                  (tdl, ks ")" k) ]
-      | <:sig_item< exception $c$ of $list:tl$ >> ->
-          fun ppf curr next dg k ->
-            match tl with
-            [ [] -> fprintf ppf "(@[exception@ %s%t@]" c (ks ")" k)
-            | tl ->
-                fprintf ppf "(@[@[exception@ %s@]@ %a@]" c
-                  (list ctyp) (tl, ks ")" k) ]
-      | <:sig_item< value $i$ : $t$ >> ->
-          fun ppf curr next dg k ->
-            fprintf ppf "(@[@[value %s@]@ %a@]" i ctyp (t, ks ")" k)
-      | <:sig_item< external $i$ : $t$ = $list:pd$ >> ->
-          fun ppf curr next dg k ->
-            fprintf ppf "(@[@[external@ %s@]@ %a@ %a@]" i ctyp (t, nok)
-              (list string) (pd, ks ")" k)
-      | <:sig_item< module $s$ : $mt$ >> ->
-          fun ppf curr next dg k ->
-            fprintf ppf "(@[@[module@ %s@]@ %a@]" s
-              module_type (mt, ks ")" k)
-      | <:sig_item< module type $s$ = $mt$ >> ->
-          fun ppf curr next dg k ->
-            fprintf ppf "(@[@[moduletype@ %s@]@ %a@]" s
-              module_type (mt, ks ")" k)
-      | <:sig_item< declare $list:s$ end >> ->
-          fun ppf curr next dg k ->
-            if s = [] then fprintf ppf "; ..."
-            else fprintf ppf "%a" (list sig_item) (s, k)
-      | MLast.SgUse _ _ _ ->
-          fun ppf curr next dg k -> ()
-      | x ->
-          fun ppf curr next dg k -> not_impl "sig_item" x ppf k ]}];
-
-pr_str_item.pr_levels :=
-  [{pr_label = "top";
-    pr_box ppf f x = fprintf ppf "@[%t@]" f;
-    pr_rules =
-      extfun Extfun.empty with
-      [ <:str_item< open $i$ >> ->
-          fun ppf curr next dg k ->
-            fprintf ppf "(open@ %a" mod_ident (i, ks ")" k)
-      | <:str_item< type $list:tdl$ >> ->
-          fun ppf curr next dg k ->
-            match tdl with
-            [ [td] -> fprintf ppf "(%a" type_decl (("type", td), ks ")" k)
-            | tdl ->
-                fprintf ppf "(@[<hv>type@ %a@]" (listwb "" type_decl)
-                  (tdl, ks ")" k) ]
-      | <:str_item< exception $c$ of $list:tl$ >> ->
-          fun ppf curr next dg k ->
-            match tl with
-            [ [] -> fprintf ppf "(@[exception@ %s%t@]" c (ks ")" k)
-            | tl ->
-                fprintf ppf "(@[@[exception@ %s@]@ %a@]" c
-                  (list ctyp) (tl, ks ")" k) ]
-      | <:str_item< value $opt:rf$ $list:pel$ >> ->
-          fun ppf curr next dg k ->
-            let b = if rf then "definerec" else "define" in
-            match pel with
-            [ [(p, e)] ->
-                fprintf ppf "%a" let_binding ((b, (p, e)), k)
-            | pel ->
-                fprintf ppf "(@[<hv 1>%s*@ %a@]" b (listwb "" let_binding)
-                  (pel, ks ")" k) ]
-      | <:str_item< module $s$ = $me$ >> ->
-          fun ppf curr next dg k ->
-            fprintf ppf "(%a" module_binding (("module", s, me), ks ")" k)
-      | <:str_item< module type $s$ = $mt$ >> ->
-          fun ppf curr next dg k ->
-            fprintf ppf "(@[@[moduletype@ %s@]@ %a@]" s
-              module_type (mt, ks ")" k)
-      | <:str_item< external $i$ : $t$ = $list:pd$ >> ->
-          fun ppf curr next dg k ->
-            fprintf ppf "(@[external@ %s@ %a@ %a@]" i ctyp (t, nok)
-              (list string) (pd, ks ")" k)
-      | <:str_item< $exp:e$ >> ->
-          fun ppf curr next dg k ->
-            fprintf ppf "%a" expr (e, k)
-      | <:str_item< # $s$ $opt:x$ >> ->
-          fun ppf curr next dg k ->
-            match x with
-            [ Some e -> fprintf ppf "; # (%s %a" s expr (e, ks ")" k)
-            | None -> fprintf ppf "; # (%s%t" s (ks ")" k) ]
-      | <:str_item< declare $list:s$ end >> ->
-          fun ppf curr next dg k ->
-            if s = [] then fprintf ppf "; ..."
-            else fprintf ppf "%a" (list str_item) (s, k)
-      | MLast.StUse _ _ _ ->
-          fun ppf curr next dg k -> ()
-      | x ->
-          fun ppf curr next dg k -> not_impl "str_item" x ppf k ]}];
-
-pr_type_decl.pr_levels :=
-  [{pr_label = "top";
-    pr_box ppf f x = fprintf ppf "@[%t@]" f;
-    pr_rules =
-      extfun Extfun.empty with
-      [ (b, ((_, tn), tp, te, cl)) ->
-          fun ppf curr next dg k ->
-            fprintf ppf "%t%t@;<1 1>%a"
-              (fun ppf ->
-                 if b <> "" then fprintf ppf "%s@ " b
-                 else ())
-              (fun ppf ->
-                 match tp with
-                 [ [] -> fprintf ppf "%s" tn
-                 | tp -> fprintf ppf "(%s%a)" tn type_params (tp, nok) ])
-               ctyp (te, k) ]}];
-
-pr_type_params.pr_levels :=
-  [{pr_label = "top";
-    pr_box ppf f x = fprintf ppf "@[%t@]" f;
-    pr_rules =
-      extfun Extfun.empty with
-      [ [(s, vari) :: tpl] ->
-          fun ppf curr next dg k ->
-            fprintf ppf "@ '%s%a" s type_params (tpl, k)
-      | [] ->
-          fun ppf curr next dg k -> () ]}];
-
-pr_with_constr.pr_levels :=
-  [{pr_label = "top";
-    pr_box ppf f x = fprintf ppf "@[%t@]" f;
-    pr_rules =
-      extfun Extfun.empty with
-      [ MLast.WcTyp _ m tp te ->
-          fun ppf curr next dg k ->
-            fprintf ppf "(type@ %t@;<1 1>%a"
-              (fun ppf ->
-                 match tp with
-                 [ [] -> fprintf ppf "%a" mod_ident (m, nok)
-                 | tp ->
-                     fprintf ppf "(%a@ %a)" mod_ident (m, nok)
-                       type_params (tp, nok) ])
-               ctyp (te, ks ")" k)
-      | x ->
-          fun ppf curr next dg k -> not_impl "with_constr" x ppf k ]}];
-
-(* main *)
-
-value output_string_eval ppf s =
-  loop 0 where rec loop i =
-    if i == String.length s then ()
-    else if i == String.length s - 1 then pp_print_char ppf s.[i]
-    else
-      match (s.[i], s.[i + 1]) with
-      [ ('\\', 'n') -> do { pp_print_char ppf '\n'; loop (i + 2) }
-      | (c, _) -> do { pp_print_char ppf c; loop (i + 1) } ]
-;
-
-value sep = Pcaml.inter_phrases;
-
-value input_source ic len =
-  let buff = Buffer.create 20 in
-  try
-    let rec loop i =
-      if i >= len then Buffer.contents buff
-      else do { let c = input_char ic in Buffer.add_char buff c; loop (i + 1) }
-    in
-    loop 0
-  with
-  [ End_of_file ->
-      let s = Buffer.contents buff in
-      if s = "" then
-        match sep.val with
-        [ Some s -> s
-        | None -> "\n" ]
-      else s ]
-;
-
-value copy_source ppf (ic, first, bp, ep) =
-  match sep.val with
-  [ Some str ->
-      if first then ()
-      else if ep == in_channel_length ic then pp_print_string ppf "\n"
-      else output_string_eval ppf str
-  | None ->
-      do {
-        seek_in ic bp;
-        let s = input_source ic (ep - bp) in pp_print_string ppf s
-      } ]
-;
-
-value copy_to_end ppf (ic, first, bp) =
-  let ilen = in_channel_length ic in
-  if bp < ilen then copy_source ppf (ic, first, bp, ilen)
-  else pp_print_string ppf "\n"
-;
-
-value apply_printer printer ast =
-  let ppf = std_formatter in
-  if Pcaml.input_file.val <> "-" && Pcaml.input_file.val <> "" then do {
-    let ic = open_in_bin Pcaml.input_file.val in
-    try
-      let (first, last_pos) =
-        List.fold_left
-          (fun (first, last_pos) (si, (bp, ep)) ->
-             do {
-               fprintf ppf "@[%a@]@?" copy_source (ic, first, last_pos.Lexing.pos_cnum, bp.Lexing.pos_cnum);
-               fprintf ppf "@[%a@]@?" printer (si, nok);
-               (False, ep)
-             })
-          (True, Token.nowhere) ast
-      in
-      fprintf ppf "@[%a@]@?" copy_to_end (ic, first, last_pos.Lexing.pos_cnum)
-    with x ->
-      do { fprintf ppf "@."; close_in ic; raise x };
-    close_in ic;
-  }
-  else failwith "not implemented"
-;
-
-Pcaml.print_interf.val := apply_printer sig_item;
-Pcaml.print_implem.val := apply_printer str_item;
-
-Pcaml.add_option "-l" (Arg.Int (fun x -> set_margin x))
-  "<length> Maximum line length for pretty printing.";
-
-Pcaml.add_option "-sep" (Arg.String (fun x -> sep.val := Some x))
-  "<string> Use this string between phrases instead of reading source.";
diff --git a/camlp4/unmaintained/scheme/pr_schp_main.ml b/camlp4/unmaintained/scheme/pr_schp_main.ml
deleted file mode 100644 (file)
index 4d3a6fb..0000000
+++ /dev/null
@@ -1,132 +0,0 @@
-(* pa_r.cmo q_MLast.cmo pa_extfun.cmo pr_dump.cmo *)
-(***********************************************************************)
-(*                                                                     *)
-(*                               Camlp4                                *)
-(*                                                                     *)
-(*    Daniel de Rauglaudre, projet Cristal, INRIA Rocquencourt         *)
-(*                                                                     *)
-(*  Copyright 2002 Institut National de Recherche en Informatique et   *)
-(*  en Automatique.  All rights reserved.  This file is distributed    *)
-(*  under the terms of the GNU Library General Public License, with    *)
-(*  the special exception on linking described in file                 *)
-(*   ../../../LICENSE.                                                 *)
-(*                                                                     *)
-(***********************************************************************)
-
-
-open Format;
-open Pcaml;
-open Parserify;
-
-value nok = Pr_scheme.nok;
-value ks = Pr_scheme.ks;
-value patt = Pr_scheme.patt;
-value expr = Pr_scheme.expr;
-value find_pr_level = Pr_scheme.find_pr_level;
-value pr_expr = Pr_scheme.pr_expr;
-type printer_t 'a = Pr_scheme.printer_t 'a ==
-  { pr_fun : mutable string -> Pr_scheme.next 'a;
-    pr_levels : mutable list (pr_level 'a) }
-and pr_level 'a = Pr_scheme.pr_level 'a ==
-  { pr_label : string;
-    pr_box : formatter -> (formatter -> unit) -> 'a -> unit;
-    pr_rules : mutable Pr_scheme.pr_rule 'a }
-;
-
-(* extensions for rebuilding syntax of parsers *)
-
-value parser_cases ppf (spel, k) =
-  let rec parser_cases ppf (spel, k) =
-    match spel with
-    [ [] -> fprintf ppf "[: `HVbox [: b; k :] :]"
-    | [(sp, epo, e)] -> parser_case ppf (sp, epo, e, k)
-    | [(sp, epo, e) :: spel] ->
-        fprintf ppf "%a@ %a" parser_case (sp, epo, e, nok)
-          parser_cases (spel, k) ]
-  and parser_case ppf (sp, epo, e, k) =
-    fprintf ppf "(@[@[(%a)%t@]@ %a@]" stream_patt (sp, nok)
-      (fun ppf ->
-         match epo with
-         [ Some p -> fprintf ppf "@ %a" patt (p, nok)
-         | None -> () ])
-      expr (e, ks ")" k)
-  and stream_patt ppf (sp, k) =
-    match sp with
-    [ [] -> k ppf
-    | [(spc, None)] -> fprintf ppf "%a" stream_patt_comp (spc, k)
-    | [(spc, Some e)] ->
-        fprintf ppf "(@[? %a@ %a@]" stream_patt_comp (spc, nok)
-          expr (e, ks ")" k)
-    | [(spc, None) :: spcl] ->
-        fprintf ppf "%a@ %a" stream_patt_comp (spc, nok) stream_patt (spcl, k)
-    | [(spc, Some e) :: spcl] ->
-        fprintf ppf "(@[? %a@ %a@]@ %a" stream_patt_comp (spc, nok)
-          expr (e, ks ")" nok) stream_patt (spcl, k) ]
-  and stream_patt_comp ppf (spc, k) =
-    match spc with
-    [ SPCterm (p, w) ->
-        match w with
-        [ Some e ->
-            fprintf ppf "(` %a@ %a" patt (p, nok) expr (e, ks ")" k)
-        | None -> fprintf ppf "(` %a" patt (p, ks ")" k) ]
-    | SPCnterm p e ->
-        fprintf ppf "(@[%a %a@]" patt (p, nok) expr (e, ks ")" k)
-    | SPCsterm p -> fprintf ppf "%a" patt (p, k)  ]
-  in
-  parser_cases ppf (spel, k)
-;
-
-value parser_body ppf (e, k) =
-  let (bp, e) =
-    match e with
-    [ <:expr< let $bp$ = Stream.count __strm in $e$ >> -> (Some bp, e)
-    | e -> (None, e) ]
-  in
-  match parser_of_expr e with
-  [ [] ->
-      fprintf ppf "(parser%t%t"
-        (fun ppf ->
-           match bp with
-           [ Some p -> fprintf ppf "@ %a" patt (p, nok)
-           | _ -> ()])
-        (ks ")" k)
-  | spel ->
-      fprintf ppf "(@[<v>@[parser%t@]@ @[<v 0>%a@]@]"
-        (fun ppf ->
-           match bp with
-           [ Some p -> fprintf ppf "@ %a" patt (p, nok)
-           | _ -> ()])
-        parser_cases (spel, ks ")" k) ]
-;
-
-value pmatch ppf (e, k) =
-  let (me, e) =
-    match e with
-    [ <:expr< let (__strm : Stream.t _) = $me$ in $e$ >> -> (me, e)
-    | _ -> failwith "Pr_schp_main.pmatch" ]
-  in
-  let (bp, e) =
-    match e with
-    [ <:expr< let $bp$ = Stream.count __strm in $e$ >> -> (Some bp, e)
-    | e -> (None, e) ]
-  in
-  let spel = parser_of_expr e in
-  fprintf ppf "(@[@[match_with_parser@ %a@]%t@ @[<v 0>%a@]@]" expr (me, nok)
-    (fun ppf ->
-       match bp with
-       [ Some p -> fprintf ppf "@ %a" patt (p, nok)
-       | _ -> () ])
-    parser_cases (spel, ks ")" k)
-;
-
-pr_expr_fun_args.val :=
-  extfun pr_expr_fun_args.val with
-  [ <:expr< fun [(__strm : $_$) -> $_$] >> as ge -> ([], ge) ];
-
-let lev = find_pr_level "top" pr_expr.pr_levels in
-lev.pr_rules :=
-  extfun lev.pr_rules with
-  [ <:expr< fun (__strm : $_$) -> $x$ >> ->
-      fun ppf curr next dg k -> fprintf ppf "%a" parser_body (x, k)
-  | <:expr< let (__strm : Stream.t _) = $_$ in $_$ >> as e ->
-      fun ppf curr next dg k -> fprintf ppf "%a" pmatch (e, k) ];
diff --git a/camlp4/unmaintained/sml/.depend b/camlp4/unmaintained/sml/.depend
deleted file mode 100644 (file)
index e69de29..0000000
diff --git a/camlp4/unmaintained/sml/Makefile b/camlp4/unmaintained/sml/Makefile
deleted file mode 100644 (file)
index 80b1724..0000000
+++ /dev/null
@@ -1,69 +0,0 @@
-#########################################################################
-#                                                                       #
-#                                 OCaml                                 #
-#                                                                       #
-#                                Camlp4                                 #
-#                                                                       #
-#   Copyright 2004 Institut National de Recherche en Informatique et    #
-#   en Automatique.  All rights reserved.  This file is distributed     #
-#   under the terms of the GNU Library General Public License, with     #
-#   the special exception on linking described in file ../../../LICENSE.#
-#                                                                       #
-#########################################################################
-#
-# Makefile for pa_sml
-# M.Mauny
-#
-
-include ../../config/Makefile.cnf
-
-OCAMLTOP=../../..
-
-OCAMLC=$(OCAMLTOP)/ocamlc$(EXE) -nostdlib -I $(OCAMLTOP)/stdlib
-OCAMLOPT=$(OCAMLTOP)/ocamlopt$(EXE) -nostdlib -I $(OCAMLTOP)/stdlib
-
-P4INCLUDES=-I ../../meta -I ../../etc -I ../../lib -I ../../camlp4
-OCAMLINCLUDES=-I ../../meta -I ../../lib  -I ../../camlp4
-
-CAMLP4=camlp4$(EXE) -nolib
-OCAMLCFLAGS=-warn-error A $(OCAMLINCLUDES)
-
-SRC=pa_sml.ml
-OBJS=$(SRC:.ml=.cmo)
-OBJSX=$(SRC:.ml=.cmx)
-
-all: $(OBJS) smllib.cmo
-
-opt: $(OBJSX) smllib.cmx
-
-depend:
-       cp .depend .depend.bak
-       > .depend
-       for file in $(SRC); do \
-         $(CAMLP4) $(P4INCLUDES) `awk 'NR == 1 { ORS=" "; for (i=2; i < NF; i++) print $$i; } ' $$file` pr_depend.cmo $$i | \
-         sed -e 's| \.\./\.\./\.\.| $$(OCAMLTOP)|g' >> .depend; \
-       done
-
-clean:
-       rm -f *.cm* *.o *.bak .*.bak
-
-
-.SUFFIXES: .cmx .cmo .cmi .ml .mli .sml
-
-.mli.cmi:
-       $(OCAMLC) $(OCAMLCFLAGS) -c $<
-
-
-.sml.cmo:
-       $(OCAMLC) -I ../../../otherlibs/unix -pp "$(CAMLP4) ./pa_sml.cmo ../../meta/pr_dump.cmo -impl" -c -o $*.cmo -impl $<
-
-.sml.cmx:
-       $(OCAMLOPT)  -I ../../../otherlibs/unix -pp "$(CAMLP4) ./pa_sml.cmo ../../meta/pr_dump.cmo -impl" -c -o $*.cmx -impl $<
-
-.ml.cmo:
-       $(OCAMLC) $(OCAMLCFLAGS) -pp "$(CAMLP4)  $(P4INCLUDES) `awk 'NR == 1 { ORS=" "; for (i=2; i < NF; i++) print $$i; } ' $<`" -c $<
-
-.ml.cmx:
-       $(OCAMLOPT) $(OCAMLCFLAGS) -pp "$(CAMLP4)  $(P4INCLUDES) `awk 'NR == 1 { ORS=" "; for (i=2; i < NF; i++) print $$i; } ' $<`" -c $<
-
-include .depend
diff --git a/camlp4/unmaintained/sml/README b/camlp4/unmaintained/sml/README
deleted file mode 100644 (file)
index 830402b..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-This is an application of or an extension for Camlp4. Although it is
-currently distributed with OCaml/Camlp4, it may or may not be
-actively maintained.
-
-It probably won't be part of future OCaml/Camlp4 distributions but be
-accessible from the Camlp4 hump. If you are interested in developing
-this package further and/or actively maintain it, please let us know
-(caml@inria.fr)
-
-This package is distributed under the same license as the OCaml
-Library (that is, LGPL with a special exception allowing both
-static and dynamic link).
-
--- Michel Mauny
-
diff --git a/camlp4/unmaintained/sml/pa_sml.ml b/camlp4/unmaintained/sml/pa_sml.ml
deleted file mode 100644 (file)
index 1808cde..0000000
+++ /dev/null
@@ -1,952 +0,0 @@
-(* pa_r.cmo pa_rp.cmo pa_extend.cmo q_MLast.cmo pr_dump.cmo *)
-(***********************************************************************)
-(*                                                                     *)
-(*                               Camlp4                                *)
-(*                                                                     *)
-(*    Daniel de Rauglaudre, projet Cristal, INRIA Rocquencourt         *)
-(*                                                                     *)
-(*  Copyright 2002 Institut National de Recherche en Informatique et   *)
-(*  en Automatique.  All rights reserved.  This file is distributed    *)
-(*  under the terms of the GNU Library General Public License, with    *)
-(*  the special exception on linking described in file                 *)
-(*   ../../../LICENSE.                                                 *)
-(*                                                                     *)
-(***********************************************************************)
-
-
-
-open Stdpp;
-open Pcaml;
-
-value ocaml_records = ref False;
-
-Pcaml.no_constructors_arity.val := True;
-
-value lexer = Plexer.gmake ();
-
-do {
-  Grammar.Unsafe.gram_reinit gram lexer;
-  Grammar.Unsafe.clear_entry interf;
-  Grammar.Unsafe.clear_entry implem;
-  Grammar.Unsafe.clear_entry top_phrase;
-  Grammar.Unsafe.clear_entry use_file;
-  Grammar.Unsafe.clear_entry module_type;
-  Grammar.Unsafe.clear_entry module_expr;
-  Grammar.Unsafe.clear_entry sig_item;
-  Grammar.Unsafe.clear_entry str_item;
-  Grammar.Unsafe.clear_entry expr;
-  Grammar.Unsafe.clear_entry patt;
-  Grammar.Unsafe.clear_entry ctyp;
-  Grammar.Unsafe.clear_entry let_binding;
-};
-
-Pcaml.parse_interf.val := Grammar.Entry.parse interf;
-Pcaml.parse_implem.val := Grammar.Entry.parse implem;
-
-value not_impl loc s =
-  raise_with_loc loc (Stream.Error ("not implemented feature [" ^ s ^ "]"))
-;
-
-type altern 'a 'b = [ Left of 'a | Right of 'b ];
-
-value get_seq =
-  fun
-  [ <:expr< do { $list:el$ } >> -> el
-  | e -> [e] ]
-;
-
-value choose_tvar tpl =
-  let rec find_alpha v =
-    let s = String.make 1 v in
-    if List.mem_assoc s tpl then
-      if v = 'z' then None else find_alpha (Char.chr (Char.code v + 1))
-    else Some (String.make 1 v)
-  in
-  let rec make_n n =
-    let v = "a" ^ string_of_int n in
-    if List.mem_assoc v tpl then make_n (succ n) else v
-  in
-  match find_alpha 'a' with
-  [ Some x -> x
-  | None -> make_n 1 ]
-;
-
-value mklistexp loc last =
-  loop True where rec loop top =
-    fun
-    [ [] ->
-        match last with
-        [ Some e -> e
-        | None -> <:expr< [] >> ]
-    | [e1 :: el] ->
-        let loc = if top then loc else (fst (MLast.loc_of_expr e1), snd loc) in
-        <:expr< [$e1$ :: $loop False el$] >> ]
-;
-
-value mklistpat loc last =
-  loop True where rec loop top =
-    fun
-    [ [] ->
-        match last with
-        [ Some p -> p
-        | None -> <:patt< [] >> ]
-    | [p1 :: pl] ->
-        let loc = if top then loc else (fst (MLast.loc_of_patt p1), snd loc) in
-        <:patt< [$p1$ :: $loop False pl$] >> ]
-;
-
-value expr_of_patt p =
-  let loc = MLast.loc_of_patt p in
-  match p with
-  [ <:patt< $lid:x$ >> -> <:expr< $lid:x$ >>
-  | _ -> Stdpp.raise_with_loc loc (Stream.Error "identifier expected") ]
-;
-
-value apply_bind loc e bl =
-  let rec loop e =
-    fun
-    [ [] -> e
-    | [<:str_item< value $p1$ = $e1$ >> :: list] ->
-        loop_let e [(p1, e1)] list
-    | [<:str_item< value rec $p1$ = $e1$ >> :: list] ->
-        loop_letrec e [(p1, e1)] list
-    | [<:str_item< module $s$ = $me$ >> :: list] ->
-        let e = <:expr< let module $s$ = $me$ in $e$ >> in
-        loop e list
-    | [si :: list] ->
-        raise Exit ]
-  and loop_let e pel =
-    fun
-    [ [<:str_item< value $p1$ = $e1$ >> :: list] ->
-        loop_let e [(p1, e1) :: pel] list
-    | list ->
-        let e = <:expr< let $list:pel$ in $e$ >> in
-        loop e list ]
-  and loop_letrec e pel =
-    fun
-    [ [<:str_item< value rec $p1$ = $e1$ >> :: list] ->
-        loop_letrec e [(p1, e1) :: pel] list
-    | list ->
-        let e = <:expr< let rec $list:pel$ in $e$ >> in
-        loop e list ]
-  in
-  loop e (List.rev bl)
-;
-
-value make_local loc sl1 sl2 =
-  try
-    let pl =
-      List.map
-        (fun
-         [ <:str_item< value $opt:_$ $p$ = $_$ >> -> p
-         | _ -> raise Exit ])
-        sl2
-      in
-    let e1 =
-      match List.map expr_of_patt pl with
-      [ [e] -> e
-      | el -> <:expr< ($list:el$) >> ]
-    in
-    let p1 =
-      match pl with
-      [ [p] -> p
-      | pl -> <:patt< ($list:pl$) >> ]
-    in
-    let e = apply_bind loc e1 sl2 in
-    let e = apply_bind loc e sl1 in
-    <:str_item< value $p1$ = $e$ >>
-  with
-  [ Exit ->
-      do {
-        Printf.eprintf "\
-*** Warning: a 'local' statement will be defined global because of bindings
-which cannot be defined as first class values (modules, exceptions, ...)\n";
-        flush stderr;
-        <:str_item< declare $list:sl1 @ sl2$ end >>
-      } ]
-;
-
-value str_declare loc =
-  fun
-  [ [d] -> d
-  | dl -> <:str_item< declare $list:dl$ end >> ]
-;
-
-value sig_declare loc =
-  fun
-  [ [d] -> d
-  | dl -> <:sig_item< declare $list:dl$ end >> ]
-;
-
-value extract_label_types loc tn tal cdol =
-  let (cdl, aux) =
-    List.fold_right
-      (fun (loc, c, tl, aux_opt) (cdl, aux) ->
-         match aux_opt with
-         [ Some anon_record_type ->
-             let new_tn = tn ^ "_" ^ c in
-             let loc = MLast.loc_of_ctyp anon_record_type in
-             let aux_def = ((loc, new_tn), [], anon_record_type, []) in
-             let tl = [<:ctyp< $lid:new_tn$ >>] in
-             ([(loc, c, tl) :: cdl], [aux_def :: aux])
-         | None -> ([(loc, c, tl) :: cdl], aux) ])
-      cdol ([], [])
-  in
-  [((loc, tn), tal, <:ctyp< [ $list:cdl$ ] >>, []) :: aux]
-;
-
-value function_of_clause_list loc xl =
-  let (fname, fname_loc, nbpat, l) =
-    List.fold_left
-      (fun (fname, fname_loc, nbpat, l) ((x1, loc), x2, x3, x4) ->
-         let (fname, fname_loc, nbpat) =
-           if fname = "" then (x1, loc, List.length x2)
-           else if x1 <> fname then
-             raise_with_loc loc
-               (Stream.Error ("'" ^ fname ^ "' expected"))
-           else if List.length x2 <> nbpat then
-             raise_with_loc loc
-               (Stream.Error "bad number of patterns in that clause")
-           else (fname, fname_loc, nbpat)
-         in
-         let x4 =
-           match x3 with
-           [ Some t -> <:expr< ($x4$ : $t$) >>
-           | _ -> x4 ]
-         in
-         let l = [(x2, x4) :: l] in
-         (fname, fname_loc, nbpat, l))
-      ("", loc, 0, []) xl
-  in
-  let l = List.rev l in
-  let e =
-    match l with
-    [ [(pl, e)] ->
-        List.fold_right (fun p e -> <:expr< fun $p$ -> $e$ >>) pl e
-    | _ ->
-        if nbpat = 1 then
-          let pwel =
-            List.map
-              (fun (pl, e) -> (<:patt< $List.hd pl$ >>, None, e)) l
-          in
-          <:expr< fun [ $list:pwel$ ] >>
-        else
-          let sl =
-            loop 0 where rec loop n =
-              if n = nbpat then []
-              else ["a" ^ string_of_int (n + 1) :: loop (n + 1)]
-          in
-          let e =
-            let el = List.map (fun s -> <:expr< $lid:s$ >>) sl in
-            let pwel =
-              List.map
-                (fun (pl, e) -> (<:patt< ($list:pl$) >>, None, e)) l
-            in
-            <:expr< match ($list:el$) with [ $list:pwel$ ] >>
-          in
-          List.fold_right (fun s e -> <:expr< fun $lid:s$ -> $e$ >>) sl e ]
-  in
-  (let loc = fname_loc in <:patt< $lid:fname$ >>, e)
-;
-
-value record_expr loc x1 =
-  if ocaml_records.val then <:expr< { $list:x1$ } >>
-  else
-    let list1 =
-      List.map
-        (fun (l, v) ->
-           let id =
-             match l with
-             [ <:patt< $lid:l$ >> -> l
-             | _ -> "" ]
-           in
-           let loc = MLast.loc_of_expr v in
-           <:class_str_item< value $id$ = $v$ >>)
-        x1
-    in
-    let list2 =
-      List.map
-        (fun (l, v) ->
-           let id =
-             match l with
-             [ <:patt< $lid:l$ >> -> l
-             | _ -> "" ]
-           in
-           let loc = MLast.loc_of_patt l in
-           <:class_str_item< method $id$ = $lid:id$ >>)
-        x1
-    in
-    <:expr<
-      let module M =
-        struct
-          class a = object $list:list1 @ list2$ end; 
-        end
-      in
-      new M.a
-    >>
-;
-
-value record_match_assoc loc lpl e =
-  if ocaml_records.val then (<:patt< { $list:lpl$ } >>, e)
-  else
-    let pl = List.map (fun (_, p) -> p) lpl in
-    let e =
-      let el =
-        List.map
-          (fun (l, _) ->
-             let s =
-               match l with
-               [ <:patt< $lid:l$ >> -> l
-               | _ -> "" ]
-             in
-             let loc = MLast.loc_of_patt l in
-             <:expr< v # $lid:s$ >>)
-          lpl
-      in
-      let loc = MLast.loc_of_expr e in
-      <:expr< let v = $e$ in ($list:el$) >>
-    in
-    let p = <:patt< ($list:pl$) >> in
-    (p, e)
-;
-
-value op =
-  Grammar.Entry.of_parser gram "op"
-    (parser [: `("", "op"); `(_, x) :] -> x)
-;
-lexer.Token.tok_using ("", "op");
-
-value special x =
-  if String.length x >= 2 then
-    match x.[0] with
-    [ '+' | '<' | '^' -> True
-    | _ -> False ]
-  else False
-;
-
-value idd =
-  let p =
-    parser
-    [ [: `("LIDENT", x) :] -> x
-    | [: `("UIDENT", x) :] -> x
-    | [: `("", "op"); `(_, x) :] -> x
-    | [: `("", x) when special x :] -> x ]
-  in
-  Grammar.Entry.of_parser Pcaml.gram "ID" p
-;
-
-value uncap s = String.uncapitalize s;
-
-EXTEND
-  GLOBAL: implem interf top_phrase use_file sig_item str_item ctyp patt expr
-    module_type module_expr;
-
-  implem:
-    [ [ x = interdec; EOI -> x ] ]
-  ;
-  interf:
-    [ [ x = LIST1 [ s = sig_item; OPT ";" -> (s, loc) ] -> (x, False) ] ]
-  ;
-  top_phrase:
-    [ [ ph = phrase; ";" -> Some ph
-      | EOI -> None ] ]
-  ;
-  use_file:
-    [ [ l = LIST0 phrase; EOI -> (l, False) ] ]
-  ;
-  phrase:
-    [ [ x = str_item -> x
-      | x = expr -> <:str_item< $exp:x$ >>
-      | "#"; n = LIDENT; dp = dir_param -> MLast.StDir loc n dp ] ]
-  ;
-  dir_param:
-    [ [ -> None
-      | e = expr -> Some e ] ]
-  ;
-  sdecs:
-    [ [ x = sdec; l = sdecs -> [x :: l]
-      | ";"; l = sdecs -> l
-      | -> [] ] ]
-  ;
-
-  fsigb: [ [ -> not_impl loc "fsigb" ] ];
-  fsigconstraint_op: [ [ -> not_impl loc "fsigconstraint_op" ] ];
-  fct_exp: [ [ -> not_impl loc "fct_exp" ] ];
-  exp_pa: [ [ -> not_impl loc "exp_pa" ] ];
-  rvb: [ [ -> not_impl loc "rvb" ] ];
-  tyvarseq: [ [ -> not_impl loc "tyvarseq" ] ];
-
-  tyvar_pc:
-    [ [ "'"; x1 = LIDENT -> [(x1, (False, False))]
-      | "'"; x1 = LIDENT; ","; l = tyvar_pc -> [(x1, (False, False)) :: l] ] ]
-  ;
-  id:
-    [ [ x1 = idd -> x1
-      | "*" -> "*" ] ]
-  ;
-  ident:
-    [ [ x1 = idd -> x1
-      | "*" -> "*"
-      | "=" -> "="
-      | "<" -> "<"
-      | ">" -> ">"
-      | "<=" -> "<="
-      | ">=" -> ">="
-      | "^" -> "^" ] ]
-  ;
-  op_op:
-    [ [ x1 = op -> not_impl loc "op_op 1"
-      | -> () ] ]
-  ;
-  qid:
-    [ [ x1 = idd; "."; x2 = qid -> <:module_expr< $uid:x1$ . $x2$ >>
-      | x1 = idd -> <:module_expr< $uid:x1$ >>
-      | x1 = "*" -> <:module_expr< $uid:x1$ >>
-      | x1 = "=" -> <:module_expr< $uid:x1$ >> ] ]
-  ;
-  eqid:
-    [ [ x1 = UIDENT; "."; x2 = eqid -> <:expr< $uid:x1$ . $x2$ >>
-      | x1 = UIDENT -> <:expr< $uid:x1$ >>
-      | x1 = idd -> <:expr< $lid:x1$ >>
-      | x1 = "*" -> <:expr< $lid:x1$ >>
-      | x1 = "=" -> <:expr< $lid:x1$ >> ] ]
-  ;
-  sqid:
-    [ [ x1 = idd; "."; x2 = sqid -> [x1 :: x2]
-      | x1 = idd -> [x1]
-      | x1 = "*" -> [x1]
-      | x1 = "=" -> [x1] ] ]
-  ;
-  tycon:
-    [ [ LIDENT "real" -> <:ctyp< float >>
-      | x1 = idd; "."; x2 = tycon ->
-          let r = <:ctyp< $uid:x1$ . $x2$ >> in
-          loop r where rec loop =
-            fun
-            [ <:ctyp< $a$ . ($b$ . $c$) >> -> <:ctyp< $a$ . $b$ . $loop c$ >>
-            | x -> x ]
-      | x1 = idd -> <:ctyp< $lid:uncap x1$ >> ] ]
-  ;
-  selector:
-    [ [ x1 = id -> x1
-      | x1 = INT -> not_impl loc "selector 1" ] ]
-  ;
-  tlabel:
-    [ [ x1 = selector; ":"; x2 = ctyp -> (loc, x1, False, x2) ] ]
-  ;
-  tuple_ty:
-    [ [ x1 = ctyp LEVEL "ty'"; "*"; x2 = tuple_ty -> [x1 :: x2]
-      | x1 = ctyp LEVEL "ty'" -> [x1] ] ]
-  ;
-  ctyp:
-    [ RIGHTA
-      [ x1 = ctyp; "->"; x2 = ctyp -> <:ctyp< $x1$ -> $x2$ >> ]
-    | [ x1 = ctyp; "*"; x2 = tuple_ty -> <:ctyp< ($list:[x1 :: x2]$) >> ]
-    | "ty'"
-      [ "'"; x1 = LIDENT -> <:ctyp< '$x1$ >>
-      | "'"; "'"; x1 = LIDENT -> <:ctyp< '$x1$ >>
-      | "{"; x1 = LIST1 tlabel SEP ","; "}" ->
-          if ocaml_records.val then <:ctyp< { $list:x1$ } >>
-          else
-            let list = List.map (fun (_, l, _, t) -> (l, t)) x1 in
-            <:ctyp< < $list:list$ > >>
-      | "{"; "}" -> not_impl loc "ty' 3"
-      | "("; x1 = ctyp; ","; x2 = LIST1 ctyp SEP ","; ")"; x3 = tycon ->
-          List.fold_left (fun t1 t2 -> <:ctyp< $t1$ $t2$ >>) x3 [x1 :: x2]
-      | "("; x1 = ctyp; ")" -> x1
-      | x1 = ctyp; x2 = tycon -> <:ctyp< $x2$ $x1$ >>
-      | x1 = tycon -> x1 ] ]
-  ;
-  rule:
-    [ [ x1 = patt; "=>"; x2 = expr -> (x1, None, x2) ] ]
-  ;
-  elabel:
-    [ [ x1 = selector; "="; x2 = expr -> (<:patt< $lid:x1$ >>, x2) ] ]
-  ;
-  exp_ps:
-    [ [ x1 = expr -> x1
-      | x1 = expr; ";"; x2 = exp_ps ->
-          <:expr< do { $list:[x1 :: get_seq x2]$ } >> ] ]
-  ;
-  expr:
-    [ [ "if"; x1 = expr; "then"; x2 = expr; "else"; x3 = expr ->
-          <:expr< if $x1$ then $x2$ else $x3$ >>
-      | "fn"; x1 = LIST1 rule SEP "|" -> <:expr< fun [$list:x1$] >>
-      | "case"; x1 = expr; "of"; x2 = LIST1 rule SEP "|" ->
-          <:expr< match $x1$ with [$list:x2$] >>
-      | "while"; x1 = expr; "do"; x2 = expr ->
-          <:expr< while $x1$ do { $x2$ } >>
-      | x1 = expr; "handle"; x2 = LIST1 rule SEP "|" ->
-          <:expr< try $x1$ with [$list:x2$] >> ]
-    | RIGHTA
-      [ "raise"; x1 = expr -> <:expr< raise $x1$ >> ]
-    | [ e1 = expr; ":="; e2 = expr -> <:expr< $e1$.val := $e2$ >> ]
-    | LEFTA
-      [ x1 = expr; "orelse"; x2 = expr -> <:expr< $x1$ || $x2$ >> ]
-    | LEFTA
-      [ x1 = expr; "andalso"; x2 = expr -> <:expr< $x1$ && $x2$ >> ]
-    | LEFTA
-      [ x1 = expr; ":"; x2 = ctyp -> <:expr< ($x1$ : $x2$) >> ]
-    | "4" NONA
-      [ x1 = expr; "<"; x2 = expr -> <:expr< $x1$ < $x2$ >>
-      | x1 = expr; ">"; x2 = expr -> <:expr< $x1$ > $x2$ >>
-      | x1 = expr; "<>"; x2 = expr -> <:expr< $x1$ <> $x2$ >>
-      | x1 = expr; "="; x2 = expr -> <:expr< $x1$ = $x2$ >>
-      | x1 = expr; ">="; x2 = expr -> <:expr< $x1$ >= $x2$ >>
-      | x1 = expr; "<="; x2 = expr -> <:expr< $x1$ <= $x2$ >> ]
-    | RIGHTA
-      [ x1 = expr; "^"; x2 = expr -> <:expr< $x1$ ^ $x2$ >>
-      | x1 = expr; "@"; x2 = expr -> <:expr< $x1$ @ $x2$ >>
-      | x1 = expr; "o"; x2 = expr -> <:expr< ooo $x1$ $x2$ >> ]
-    | "5" RIGHTA
-      [ x1 = expr; "::"; x2 = expr -> <:expr< [$x1$ :: $x2$] >> ]
-    | "6" LEFTA
-      [ x1 = expr; "+"; x2 = expr -> <:expr< $x1$ + $x2$ >>
-      | x1 = expr; "-"; x2 = expr -> <:expr< $x1$ - $x2$ >> ]
-    | "7" LEFTA
-      [ x1 = expr; "*"; x2 = expr -> <:expr< $x1$ * $x2$ >>
-      | x1 = expr; "/"; x2 = expr -> <:expr< $x1$ / $x2$ >>
-      | x1 = expr; "div"; x2 = expr -> <:expr< $x1$ / $x2$ >>
-      | x1 = expr; "mod"; x2 = expr -> <:expr< $x1$ mod $x2$ >> ]
-    | LEFTA
-      [ x1 = expr; x2 = expr -> <:expr< $x1$ $x2$ >> ]
-    | [ "#"; x1 = STRING -> <:expr< $chr:x1$ >>
-      | "#"; x1 = selector; x2 = expr ->
-          if ocaml_records.val then <:expr< $x2$ . $lid:x1$ >>
-          else <:expr< $x2$ # $lid:x1$ >>
-      | x1 = expr; "ocaml_record_access"; x2 = expr -> <:expr< $x1$ . $x2$ >> ]
-    | [ "!"; x1 = expr -> <:expr< $x1$ . val >>
-      | "~"; x1 = expr -> <:expr< - $x1$ >> ]
-    | [ x1 = LIDENT ->
-          match x1 with
-          [ "true" | "false" -> <:expr< $uid:String.capitalize x1$ >>
-          | "nil" -> <:expr< [] >>
-          | _ -> <:expr< $lid:x1$ >> ]
-      | x1 = UIDENT -> <:expr< $uid:x1$ >>
-      | x1 = UIDENT; "."; x2 = eqid -> <:expr< $uid:x1$ . $x2$ >>
-      | x1 = INT -> <:expr< $int:x1$ >>
-      | x1 = FLOAT -> <:expr< $flo:x1$ >>
-      | x1 = STRING -> <:expr< $str:x1$ >>
-      | "~"; x1 = INT -> <:expr< $int:"-"^x1$ >>
-      | i = op ->
-          if i = "::" then <:expr< fun (x, y) -> [x :: y] >>
-          else <:expr< fun (x, y) -> $lid:i$ x y >>
-      | "let"; x1 = ldecs; "in"; x2 = exp_ps; "end" ->
-          List.fold_right
-            (fun pel x2 ->
-               let loc =
-                 match pel with
-                 [ [(p, _) :: _] ->
-                     (fst (MLast.loc_of_patt p), snd (MLast.loc_of_expr x2))
-                 | _ -> loc ]
-               in
-               match pel with
-               [ [(_, <:expr< fun [$list:_$] >>) :: _] ->
-                   <:expr< let rec $list:pel$ in $x2$ >>
-               | _ ->
-                   let pel =
-                     List.map
-                       (fun (p, e) ->
-                          match p with
-                          [ <:patt< { $list:lpl$ } >> ->
-                              record_match_assoc (MLast.loc_of_patt p) lpl e
-                          | _ -> (p, e) ])
-                       pel
-                   in
-                   <:expr< let $list:pel$ in $x2$ >> ])
-            x1 x2
-      | "{"; x1 = LIST1 elabel SEP ","; "}" -> record_expr loc x1
-      | "["; "]" -> <:expr< [] >>
-      | "["; x1 = expr; "]" -> <:expr< [$x1$] >>
-      | "["; x1 = expr; ","; x2 = LIST1 SELF SEP ","; "]" ->
-          mklistexp loc None [x1 :: x2]
-      | "("; ")" -> <:expr< () >>
-      | "("; x1 = expr; ","; x2 = LIST1 SELF SEP ","; ")" ->
-          <:expr< ($list:[x1::x2]$) >>
-      | "("; x1 = expr; ";"; x2 = LIST1 SELF SEP ";"; ")" ->
-          <:expr< do { $list:[x1::x2]$ } >>
-      | "("; x1 = expr; ")" -> x1 ] ]
-  ;
-  fixity:
-    [ [ "infix" -> ("infix", None)
-      | "infix"; x1 = INT -> not_impl loc "fixity 2"
-      | "infixr" -> not_impl loc "fixity 3"
-      | "infixr"; x1 = INT -> ("infixr", Some x1)
-      | "nonfix" -> not_impl loc "fixity 5" ] ]
-  ;
-  patt:
-    [ [ x1 = patt; "as"; x2 = patt -> <:patt< ($x1$ as $x2$) >> ]
-    | LEFTA
-      [ x1 = patt; ":"; x2 = ctyp -> <:patt< ($x1$ : $x2$) >> ]
-    | RIGHTA
-      [ x1 = patt; "::"; x2 = patt -> <:patt< [$x1$ :: $x2$] >> ]
-    | [ x1 = patt; x2 = patt ->
-          match x1 with
-          [ <:patt< ref >> -> <:patt< {contents = $x2$} >>
-          | _ -> <:patt< $x1$ $x2$ >> ] ]
-    | "apat"
-      [ x1 = patt; "."; x2 = patt -> <:patt< $x1$ . $x2$ >>
-      | x1 = INT -> <:patt< $int:x1$ >>
-      | x1 = UIDENT -> <:patt< $uid:x1$ >>
-      | x1 = STRING -> <:patt< $str:x1$ >>
-      | "#"; x1 = STRING -> <:patt< $chr:x1$ >>
-      | "~"; x1 = INT -> <:patt< $int:"-"^x1$ >>
-      | LIDENT "nil" -> <:patt< [] >>
-      | LIDENT "false" -> <:patt< False >>
-      | LIDENT "true" -> <:patt< True >>
-      | x1 = id -> <:patt< $lid:x1$ >>
-      | x1 = op -> <:patt< $lid:x1$ >>
-      | "_" -> <:patt< _ >>
-      | "["; "]" -> <:patt< [] >>
-      | "["; x1 = patt; "]" -> <:patt< [$x1$] >>
-      | "["; x1 = patt; ","; x2 = LIST1 SELF SEP ","; "]" ->
-          mklistpat loc None [x1 :: x2]
-      | "{"; x1 = LIST1 plabel SEP ","; "}" -> <:patt< {$list:x1$} >>
-      | "("; ")" -> <:patt< () >>
-      | "("; x1 = patt; ","; x2 = LIST1 SELF SEP ","; ")" ->
-          <:patt< ($list:[x1::x2]$) >>
-      | "("; x1 = patt; ")" -> x1 ] ]
-  ;
-  plabel:
-    [ [ x1 = selector; "="; x2 = patt -> (<:patt< $lid:x1$ >>, x2)
-      | x1 = selector -> (<:patt< $lid:x1$ >>, <:patt< $lid:x1$ >>) ] ]
-  ;
-  vb:
-    [ [ "lazy"; x1 = patt; "="; x2 = expr -> not_impl loc "vb 1"
-      | x1 = patt; "="; x2 = expr -> (x1, x2) ] ]
-  ;
-  constrain:
-    [ [ -> None
-      | ":"; x1 = ctyp -> Some x1 ] ]
-  ;
-  fb:
-    [ [ xl = LIST1 clause SEP "|" -> function_of_clause_list loc xl
-      | "lazy"; x1 = LIST1 clause SEP "|" -> not_impl loc "fb 2" ] ]
-  ;
-  clause:
-    [ [ x1 = patt LEVEL "apat"; x2 = LIST1 (patt LEVEL "apat");
-        x3 = constrain; "="; x4 = expr ->
-          let x1 =
-            match x1 with
-            [ <:patt< $lid:id$ >> -> (id, MLast.loc_of_patt x1)
-            | _ -> not_impl loc "clause 1" ]
-          in
-          (x1, x2, x3, x4) ] ]
-  ;
-  tb:
-    [ [ x1 = tyvars; x2 = idd; "="; x3 = ctyp ->
-          ((loc, uncap x2), x1, x3, [])
-      | x1 = tyvars; x2 = idd; "="; x3 = ctyp; "=="; x4 = dbrhs ->
-          let x4 = List.map (fun (loc, c, tl, _) -> (loc, c, tl)) x4 in
-          ((loc, uncap x2), x1, <:ctyp< $x3$ == [ $list:x4$ ] >>, []) ] ]
-  ;
-  tyvars:
-    [ [ "'"; x1 = LIDENT -> [(x1, (False, False))]
-      | "("; x1 = tyvar_pc; ")" -> x1
-      | -> [] ] ]
-  ;
-  db1:
-    [ [ x1 = tyvars; x2 = ident; "="; x3 = dbrhs ->
-          let x2 = uncap x2 in
-          extract_label_types loc x2 x1 x3
-      | "lazy"; x1 = tyvars; x2 = ident; "="; x3 = dbrhs ->
-          not_impl loc "db 2" ] ]
-  ;
-  db:
-    [ [ x1 = LIST1 db1 SEP "and" ->
-          List.fold_right (fun td tdl -> td @ tdl) x1 [] ] ]
-  ;
-  dbrhs:
-    [ [ x1 = LIST1 constr SEP "|"  -> x1
-      | "datatype"; x1 = tycon -> not_impl loc "dbrhs 2" ] ]
-  ;
-  constr:
-    [ [ x1 = op_op; x2 = ident -> (loc, x2, [], None)
-      | x1 = op_op; x2 = ident; "of"; x3 = ctyp ->
-          match x3 with
-          [ <:ctyp< {$list:_$} >> -> (loc, x2, [], Some x3)
-          | _ -> (loc, x2, [x3], None) ] ] ]
-  ;
-  eb:
-    [ [ x1 = op_op; x2 = ident -> (x2, [], [])
-      | x1 = op_op; x2 = ident; "of"; x3 = ctyp -> (x2, [x3], [])
-      | x1 = op_op; x2 = ident; "="; x3 = sqid -> (x2, [], x3) ] ]
-  ;
-  ldec1:
-    [ [ "val"; x1 = LIST1 vb SEP "and" -> x1
-      | "fun"; x1 = LIST1 fb SEP "and" -> x1 ] ]
-  ;
-  ldecs:
-    [ [ -> []
-      | x1 = ldec1; x2 = ldecs -> [x1 :: x2]
-      | ";"; x1 = ldecs -> x1
-      | "local"; x1 = ldecs; "in"; x2 = ldecs; "end"; x3 = ldecs ->
-          not_impl loc "ldecs 4" ] ]
-  ;
-  spec_s:
-    [ [ -> []
-      | x1 = spec; x2 = spec_s -> [x1 :: x2]
-      | ";"; x1 = spec_s -> x1 ] ]
-  ;
-  spec:
-   [ [ "structure"; x1 = LIST1 strspec SEP "and" -> sig_declare loc x1
-     | "functor"; x1 = LIST1 fctspec SEP "and" -> sig_declare loc x1
-     | "datatype"; x1 = db -> <:sig_item< type $list:x1$ >>
-     | "type"; x1 = LIST1 tyspec SEP "and" -> <:sig_item< type $list:x1$ >>
-     | "eqtype"; x1 = LIST1 tyspec SEP "and" -> <:sig_item< type $list:x1$ >>
-     | "val"; x1 = LIST1 valspec SEP "and" -> sig_declare loc x1
-     | "exception"; x1 = LIST1 exnspec SEP "and" -> sig_declare loc x1
-     | "sharing"; x1 = LIST1 sharespec SEP "and" -> <:sig_item< declare end >>
-     | "include"; x1 = module_type -> <:sig_item< include $x1$ >> ] ]
-  ;
-  sig_item:
-    [ [ x = spec -> x ] ]
-  ;
-  strspec:
-    [ [ x1 = ident; ":"; x2 = module_type; x3 = LIST0 sharing_def ->
-          let x2 =
-            List.fold_left
-              (fun mt sdl ->
-                 List.fold_right
-                   (fun spl mt ->
-                      match spl with
-                      [ Right ([m1], m2) ->
-                          let (m1, m2) =
-                            match m2 with
-                            [ <:module_expr< $uid:x$ . $_$ >> ->
-                                if x = x1 then (m2, m1) else (m1, m2)
-                            | _ -> (m1, m2) ]
-                          in
-                          let m1 =
-                            loop m1 where rec loop =
-                              fun
-                              [ <:module_expr< $uid:x$ >> -> x
-                              | <:module_expr< $uid:x$ . $y$ >> -> loop y
-                              | _ -> not_impl loc "strspec 2" ]
-                          in
-                          <:module_type< $mt$ with module $[m1]$ = $m2$ >>
-                      | _ -> not_impl loc "strspec 1" ])
-                   sdl mt)
-              x2 x3
-          in
-          <:sig_item< module $x1$ : $x2$ >> ] ]
-  ;
-  sharing_def:
-    [ [ "sharing"; x3 = LIST1 sharespec SEP "and" -> x3 ] ]
-  ;
-  fctspec:
-    [ [ x1 = ident; x2 = fsig -> <:sig_item< module $x1$ : $x2$ >> ] ]
-  ;
-  tyspec:
-    [ [ x1 = tyvars; x2 = idd ->
-          ((loc, uncap x2), x1, <:ctyp< '$choose_tvar x1$ >>, [])
-      | x1 = tyvars; x2 = idd; "="; x3 = ctyp ->
-          ((loc, uncap x2), x1, x3, []) ] ]
-  ;
-  valspec:
-    [ [ x1 = op_op; x2 = ident; ":"; x3 = ctyp ->
-          <:sig_item< value $x2$ : $x3$ >> ] ]
-  ;
-  exnspec:
-    [ [ x1 = ident -> <:sig_item< exception $x1$ >>
-      | x1 = ident; "of"; x2 = ctyp ->
-          <:sig_item< exception $x1$ of $x2$ >> ] ]
-  ;
-  sharespec:
-    [ [ "type"; x1 = patheqn -> Left x1
-      | x1 = patheqn -> Right x1 ] ]
-  ;
-  patheqn:
-    [ [ l = patheqn1 -> l ] ]
-  ;
-  patheqn1:
-    [ [ (l, y) = patheqn1; "="; x = qid -> ([y :: l], x)
-      | x = qid -> ([], x) ] ]
-  ;
-  whspec:
-    [ [ "type"; x1 = tyvars; x2 = sqid; "="; x3 = ctyp ->
-          MLast.WcTyp loc x2 x1 x3
-      | x1 = sqid; "="; x2 = qid -> MLast.WcMod loc x1 x2 ] ]
-  ;
-  module_type:
-    [ [ x1 = ident -> <:module_type< $uid:x1$ >>
-      | "sig"; x1 = spec_s; "end" -> <:module_type< sig $list:x1$ end >>
-      | x1 = module_type; "where"; x2 = LIST1 whspec SEP "and" ->
-          <:module_type< $x1$ with $list:x2$ >> ] ]
-  ;
-  sigconstraint_op:
-    [ [ -> None
-      | ":"; x1 = module_type -> Some x1
-      | ":>"; x1 = module_type -> not_impl loc "sigconstraint_op 3" ] ]
-  ;
-  sigb:
-    [ [ x1 = ident; "="; x2 = module_type ->
-          <:str_item< module type $x1$ = $x2$ >> ] ]
-  ;
-  fsig:
-    [ [ ":"; x1 = ident -> not_impl loc "fsig 1"
-      | x1 = fparamList; ":"; x2 = module_type -> not_impl loc "fsig 2" ] ]
-  ;
-  module_expr:
-    [ [ x1 = qid -> x1
-      | "struct"; x1 = strdecs; "end" -> <:module_expr< struct $list:x1$ end >>
-      | x1 = qid; x2 = arg_fct ->
-          match x2 with
-          [ Left [] -> x1
-          | Left x2 -> <:module_expr< $x1$ (struct $list:x2$ end) >>
-          | Right x2 -> <:module_expr< $x1$ $x2$ >> ]
-      | "let"; x1 = strdecs; "in"; x2 = module_expr; "end" ->
-          not_impl loc "str 4"
-      | x1 = module_expr; ":"; x2 = module_type -> not_impl loc "str 5"
-      | x1 = module_expr; x2 = ":>"; x3 = module_type ->
-          not_impl loc "str 6" ] ]
-  ;
-  arg_fct:
-    [ [ "("; x1 = strdecs; ")"; x2 = arg_fct -> not_impl loc "arg_fct 1"
-      | "("; x1 = module_expr; ")"; x2 = arg_fct -> not_impl loc "arg_fct 2"
-      | "("; x1 = module_expr; ")" -> Right x1
-      | "("; x2 = strdecs; ")" -> Left x2 ] ]
-  ;
-  strdecs:
-    [ [ x1 = str_item LEVEL "strdec"; x2 = strdecs -> [x1 :: x2]
-      | ";"; x1 = strdecs -> x1
-      | -> [] ] ]
-  ;
-  str_item:
-    [ [ "signature"; x1 = LIST1 sigb SEP "and" -> str_declare loc x1
-      | "funsig"; x1 = fsigb -> not_impl loc "sdec 3" ]
-    | "strdec"
-      [ "structure"; x1 = LIST1 strb SEP "and" -> str_declare loc x1
-      | "functor"; x1 = LIST1 fctb SEP "and" -> str_declare loc x1
-      | "local"; x1 = sdecs; "in"; x2 = sdecs; "end" ->
-          make_local loc x1 x2 ]
-    | [ "val"; x1 = LIST1 vb SEP "and" -> <:str_item< value $list:x1$ >>
-      | "val"; x1 = tyvarseq; x3 = LIST1 vb SEP "and" ->
-          not_impl loc "ldec 2"
-      | "val"; "rec"; x1 = rvb -> not_impl loc "ldec 3"
-      | "val"; "rec"; x1 = tyvarseq; x2 = rvb -> not_impl loc "ldec 4"
-      | "fun"; x1 = LIST1 fb SEP "and" -> <:str_item< value rec $list:x1$ >>
-      | "fun"; x1 = tyvarseq; x2 = fb -> not_impl loc "ldec 6"
-      | "type"; x1 = LIST1 tb SEP "and" -> <:str_item< type $list:x1$ >>
-      | "datatype"; x1 = db -> <:str_item< type $list:x1$ >>
-      | "datatype"; x1 = db; "withtype"; x2 = tb ->
-          <:str_item< type $list:x1 @ [x2]$ >>
-      | "abstype"; x1 = db; "with"; x2 = ldecs; "end" -> not_impl loc "ldec 10"
-      | "abstype"; x1 = db; "withtype"; x2 = tb; "with"; x3 = ldecs; "end" ->
-          not_impl loc "ldec 11"
-      | "exception"; x1 = LIST1 eb SEP "and" ->
-          let dl =
-            List.map
-              (fun (s, tl, eqn) ->
-                 <:str_item< exception $s$ of $list:tl$ = $eqn$ >>)
-              x1
-          in
-          str_declare loc dl
-      | "open"; x1 = LIST1 sqid ->
-          let dl = List.map (fun sl -> <:str_item< open $sl$ >>) x1 in
-          str_declare loc dl
-      | LIDENT "use"; s = STRING ->
-          <:str_item< #use $str:s$ >>
-      | x1 = fixity; list = LIST1 idd ->
-          match x1 with
-          [ ("infixr", Some n) ->
-              do {
-                List.iter
-                  (fun s ->
-                     EXTEND
-                       expr: LEVEL $n$
-                         [ [ x1 = expr; $s$; x2 = expr ->
-                               <:expr< $lid:s$ ($x1$, $x2$) >> ] ]
-                       ;
-                     END)
-                  list;
-                  str_declare loc []
-              }
-          | ("infix", None) ->
-              do {
-                List.iter
-                  (fun s ->
-                     EXTEND
-                       expr: LEVEL "4"
-                         [ [ x1 = expr; $s$; x2 = expr ->
-                               <:expr< $lid:s$ ($x1$, $x2$) >> ] ]
-                       ;
-                       clause:
-                         [ [ x1 = patt LEVEL "apat"; $s$;
-                             x2 = patt LEVEL "apat"; "="; x4 = expr ->
-                               ((s, loc), [<:patt< ($x1$, $x2$) >>],
-                                None, x4) ] ]
-                       ;
-                     END)
-                  list;
-                  str_declare loc []
-              }
-          | _ -> not_impl loc "ldec 14" ]
-      | "overload"; x1 = ident; ":"; x2 = ctyp; "as"; x3 = exp_pa ->
-          not_impl loc "ldec 15"
-      | x = expr -> <:str_item< $exp:x$ >> ] ]
-  ;
-  sdec:
-    [ [ x = str_item -> x ] ]
-  ;
-  strb:
-    [ [ x1 = ident; x2 = sigconstraint_op; "="; x3 = module_expr ->
-          let x3 =
-            match x2 with
-            [ Some x2 -> <:module_expr< ($x3$ : $x2$) >>
-            | None -> x3 ]
-          in
-          <:str_item< module $x1$ = $x3$ >> ] ]
-  ;
-  fparam:
-    [ [ x1 = idd; ":"; x2 = module_type -> [<:sig_item< module $x1$ : $x2$ >>]
-      | x1 = spec_s -> x1 ] ]
-  ;
-  fparamList:
-    [ [ "("; x1 = fparam; ")" -> [x1]
-      | "("; x1 = fparam; ")"; x2 = fparamList -> [x1 :: x2] ] ]
-  ;
-  fctb:
-    [ [ x1 = ident; x2 = fparamList; x3 = sigconstraint_op; "=";
-        x4 = module_expr ->
-          let list = List.flatten x2 in
-          let x4 =
-            if list = [] then x4
-            else
-              match x4 with
-              [ <:module_expr< struct $list:list$ end >> ->
-                  let si =
-                    let loc = (Token.nowhere, Token.nowhere) in
-                    <:str_item< open AAA >> in
-                  <:module_expr< struct $list:[si :: list]$ end >>
-              | _ -> not_impl loc "fctb 1" ]
-          in
-          let x4 =
-            match x3 with
-            [ Some x3 -> <:module_expr< ($x4$ : $x3$) >>
-            | None -> x4 ]
-          in
-          let x4 =
-            if list = [] then x4
-            else
-              let mt =
-                let loc =
-                  (fst (MLast.loc_of_sig_item (List.hd list)),
-                   snd (MLast.loc_of_sig_item (List.hd (List.rev list))))
-                in
-                <:module_type< sig $list:list$ end >>
-              in
-              <:module_expr< functor (AAA : $mt$) -> $x4$ >>
-          in
-          <:str_item< module $x1$ = $x4$ >>
-      | x1 = ident; x2 = fsigconstraint_op; "="; x3 = fct_exp ->
-          not_impl loc "fctb 2" ] ]
-  ;
-  interdec:
-    [ [ x = LIST1 [ s = str_item; OPT ";" -> (s, loc) ] -> (x, False)
-      | x = expr; OPT ";" -> not_impl loc "interdec 2" ] ]
-  ;
-END;
-
-Pcaml.add_option "-records" (Arg.Set ocaml_records)
-  "Convert record into OCaml records, instead of objects";
diff --git a/camlp4/unmaintained/sml/smllib.sml b/camlp4/unmaintained/sml/smllib.sml
deleted file mode 100644 (file)
index 5ecd093..0000000
+++ /dev/null
@@ -1,395 +0,0 @@
-(***********************************************************************)
-(*                                                                     *)
-(*                             Camlp4                                  *)
-(*                                                                     *)
-(*        Daniel de Rauglaudre, projet Cristal, INRIA Rocquencourt     *)
-(*                                                                     *)
-(*  Copyright 2002 Institut National de Recherche en Informatique et   *)
-(*  Automatique.  Distributed only by permission.                      *)
-(*                                                                     *)
-(***********************************************************************)
-
-
-
-datatype 'a option = SOME of 'a | NONE
-exception Fail of string
-exception Domain
-exception Subscript
-type 'a vector = 'a array
-
-structure OCaml =
-  struct
-    structure List = List
-    structure String = String
-  end
-
-structure Time =
-  struct
-    datatype time = TIME of { sec : int, usec : int }
-    fun toString _ = failwith "not implemented Time.toString"
-    fun now _ = failwith "not implemented Time.now"
-  end
-
-datatype cpu_timer =
-  CPUT of { gc : Time.time, sys : Time.time, usr : Time.time }
-
-datatype real_timer =
-  RealT of Time.time
-
-structure Char =
-  struct
-    val ord = Char.code
-  end
-
-structure General =
-  struct
-    datatype order = LESS | EQUAL | GREATER
-  end
-type order = General.order == LESS | EQUAL | GREATER
-
-structure OS =
-  struct
-    exception SysErr
-    structure Path =
-      struct
-        fun dir s =
-          let val r = Filename.dirname s in
-            if r = "." then "" else r
-          end
-        val file = Filename.basename
-        fun ext s =
-          let fun loop i =
-            if i < 0 then NONE
-            else if String.get s i = #"." then
-              let val len = String.length s - i - 1 in
-                if len = 0 then NONE else SOME (String.sub s (i + 1) len)
-              end
-            else loop (i - 1)
-          in
-            loop (String.length s - 1)
-          end
-        fun splitDirFile s =
-          {dir = Filename.dirname s,
-           file = Filename.basename s}
-        fun joinDirFile x =
-          let val {dir,file} = x in Filename.concat dir file end
-      end
-    structure FileSys =
-      struct
-        datatype access_mode = A_READ | A_WRITE | A_EXEC
-        val chDir = Sys.chdir
-        fun isDir s =
-          (Unix.stat s) ocaml_record_access Unix.st_kind = Unix.S_DIR
-          handle Unix.Unix_error _ => raise SysErr
-        fun access (s, accs) =
-          let val st = Unix.stat s
-              val prm = st ocaml_record_access Unix.st_perm
-              val prm =
-                if st ocaml_record_access Unix.st_uid = Unix.getuid () then
-                  lsr prm 6
-                else if st ocaml_record_access Unix.st_uid = Unix.getgid ()
-                then
-                  lsr prm 3
-                else prm
-              val rf =
-                if List.mem A_READ accs then land prm 4 <> 0 else true
-              val wf =
-                if List.mem A_WRITE accs then land prm 2 <> 0 else true
-              val xf =
-                if List.mem A_EXEC accs then land prm 1 <> 0 else true
-          in
-            rf andalso wf andalso xf
-          end
-          handle Unix.Unix_error (_, f, _) =>
-            if f = "stat" then false else raise SysErr
-      end
-    structure Process =
-      struct
-        fun system s = (flush stdout; flush stderr; Sys.command s)
-        fun getEnv s = SOME (Sys.getenv s) handle Not_found => NONE
-        val success = 0
-      end
-  end
-
-exception SysErr = OS.SysErr
-
-structure IO =
-  struct
-    exception Io of {cause:exn, function:string, name:string}
-  end
-
-structure TextIO =
-  struct
-    type instream = in_channel * char option option ref
-    type outstream = out_channel
-    type elem = char
-    type vector = string
-    fun openIn fname =
-      (open_in fname, ref NONE) handle exn =>
-        raise IO.Io {cause = exn, function = "openIn", name = fname}
-    val openOut = open_out
-    fun closeIn (ic, ahc) = (ahc := SOME NONE; close_in ic)
-    val closeOut = close_out
-    val stdIn = (stdin, ref (NONE : char option option))
-    fun endOfStream (ic, _) = pos_in ic = in_channel_length ic
-    fun inputLine (ic, ahc) =
-      case !ahc of
-        NONE =>
-          (input_line ic ^ "\n" handle End_of_file => (ahc := SOME NONE; ""))
-      | SOME NONE => ""
-      | SOME (SOME c) =>
-          (ahc := NONE;
-           if c = #"\n" then "\n"
-           else
-             String.make 1 c ^ input_line ic ^ "\n" handle
-               End_of_file => (ahc := SOME NONE; ""))
-    fun input1 (ic, ahc) =
-      case !ahc of
-        NONE =>
-          (SOME (input_char ic) handle End_of_file => (ahc := SOME NONE; NONE))
-      | SOME NONE => NONE
-      | SOME x => (ahc := NONE; x)
-    fun inputN (ins, n) =
-      let fun loop n =
-        if n <= 0 then ""
-        else
-          case input1 ins of
-            SOME c => String.make 1 c ^ loop (n - 1)
-          | NONE => ""
-      in
-        loop n
-      end
-    fun output (oc, v) = output_string oc v
-    fun inputAll ic = failwith "not implemented TextIO.inputAll"
-    fun lookahead (ic, ahc) =
-      case !ahc of
-        NONE => let val r = SOME (input_char ic) in ahc := SOME r; r end
-      | SOME x => x
-    fun print s = (print_string s; flush stdout)
-  end
-
-structure Timer =
-  struct
-    fun startRealTimer () = failwith "not implemented Timer.startRealTimer"
-    fun startCPUTimer () = failwith "not implemented Timer.startCPUTimer"
-    fun checkRealTimer _ = failwith "not implemented Timer.checkRealTimer"
-    fun checkCPUTimer _ = failwith "not implemented Timer.checkCPUTimer"
-  end
-
-structure Date =
-  struct
-    datatype month =
-      Jan | Feb | Mar | Apr | May | Jun | Jul | Sep | Oct | Nov | Dec
-    datatype wday = Sun | Mon | Tue | Wed | Thu | Fri | Sat
-    datatype date =
-      DATE of
-        {day : int, hour : int, isDst : bool option, minute : int,
-         month : month, offset : int option, second : int, wday : wday,
-         yday : int, year : int}
-    fun fmt _ _ = failwith "not implemented Date.fmt"
-    fun fromTimeLocal _ = failwith "not implemented Date.fromTimeLocal"
-  end
-
-structure Posix =
-  struct
-    structure ProcEnv =
-      struct
-        fun getenv s = SOME (Sys.getenv s) handle Not_found => NONE
-      end
-  end
-
-structure SMLofNJ =
-  struct
-    fun exportML s = failwith ("not implemented exportML " ^ s)
-  end
-
-fun null x = x = []
-fun explode s =
-  let fun loop i =
-    if i = String.length s then []
-    else String.get s i :: loop (i + 1)
-  in
-    loop 0
-  end
-
-val app = List.iter
-fun implode [] = ""
-  | implode (c :: l) = String.make 1 c ^ implode l
-
-fun ooo f g x = f (g x)
-
-structure Array =
-  struct
-    fun array (len, v) = Array.create len v
-    fun sub _ = failwith "not implemented Array.sub"
-    fun update _ = failwith "not implemented Array.update"
-    (* for make the profiler work *)
-    val set = Array.set
-    val get = Array.get
-  end
-
-structure Vector =
-  struct
-    fun tabulate _ = failwith "not implemented Vector.tabulate"
-    fun sub _ = failwith "not implemented Vector.sub"
-  end
-
-structure Bool =
-  struct
-    val toString = string_of_bool
-  end
-
-structure String =
-  struct
-    val size = String.length
-    fun substring (s, beg, len) =
-      String.sub s beg len handle Invalid_argument _ => raise Subscript
-    val concat = String.concat ""
-    fun sub (s, i) = String.get s i
-    val str = String.make 1
-    fun compare (s1, s2) =
-      if s1 < s2 then LESS
-      else if s1 > s2 then GREATER
-      else EQUAL
-    fun isPrefix s1 s2 =
-      let fun loop i1 i2 =
-        if i1 >= String.length s1 then true
-        else if i2 >= String.length s2 then false
-        else if String.get s1 i1 = String.get s2 i2 then loop (i1 + 1) (i2 + 1)
-        else false
-      in
-        loop 0 0
-      end
-    fun tokens p s =
-      let fun loop tok i =
-        if i >= String.length s then
-          if tok = "" then [] else [tok]
-        else if p (String.get s i) then
-          if tok <> "" then tok :: loop "" (i + 1)
-          else loop "" (i + 1)
-        else loop (tok ^ String.make 1 (String.get s i)) (i + 1)
-      in
-        loop "" 0
-      end
-    fun extract _ = failwith "not implemented String.extract"
-  end
-
-structure Substring =
-  struct
-    type substring = string * int * int
-    fun string (s : substring) = String.substring s
-    fun all s : substring = (s, 0, String.size s)
-    fun splitl f ((s, beg, len) : substring) : substring * substring =
-      let fun loop di =
-        if di = len then ((s, beg, len), (s, 0, 0))
-        else if f (String.sub (s, beg + di)) then loop (di + 1)
-        else ((s, beg, di), (s, beg + di, len - di))
-      in
-        loop 0
-      end
-    fun getc (s, i, len) =
-      if len > 0 andalso i < String.size s then
-        SOME (String.sub (s, i), (s, i+1, len-1))
-      else NONE
-    fun slice _ = failwith "not implemented: Substring.slice"
-    fun isEmpty (s, beg, len) = len = 0
-    fun concat sl = String.concat (List.map string sl)
-  end
-type substring = Substring.substring
-
-structure StringCvt =
-  struct
-    datatype radix = BIN | OCT | DEC | HEX
-    type ('a, 'b) reader = 'b -> ('a * 'b) option 
-  end
-
-structure ListPair =
-  struct
-    fun zip (a1::l1, a2::l2) = (a1, a2) :: zip (l1, l2)
-      | zip _ = []
-    val unzip = List.split
-    fun all f (x1 :: l1, x2 :: l2) = f (x1, x2) andalso all f (l1, l2)
-      | all _ _ = true
-    fun map f (a1::l1, a2::l2) =
-          let val r = f (a1, a2) in r :: map f (l1, l2) end
-      | map _ _ = []
-  end
-
-structure ListMergeSort =
-  struct
-    fun uniqueSort cmp l =
-      List.sort
-       (fn x => fn y =>
-          case cmp (x, y) of
-            LESS => ~1
-          | EQUAL => 0
-          | GREATER => 1)
-       l
-  end
-
-structure List =
-  struct
-    exception Empty
-    fun hd [] = raise Empty
-      | hd (x :: l) = x
-    fun tl [] = raise Empty
-      | tl (x :: l) = l
-    fun foldr f a l =
-      let fun loop a [] = a
-            | loop a (x :: l) = loop (f (x, a)) l
-      in
-        loop a (List.rev l)
-      end
-    fun foldl f a l = List.fold_left (fn a => fn x => f (x, a)) a l
-    val concat = List.flatten
-    val exists = List.exists
-    val filter = List.filter
-    val length = List.length
-    val map = List.map
-    val rev = List.rev
-    val all = List.for_all
-    fun find f [] = NONE
-      | find f (x :: l) = if f x then SOME x else find f l
-    fun last s =
-      case List.rev s of
-        [] => raise Empty
-      | x :: _ => x
-    fun take _ = failwith "not implemented: List.take"
-    fun partition _ = failwith "not implemented: List.partition"
-    fun mapPartial f [] = []
-      | mapPartial f (x :: l) =
-          case f x of
-            NONE => mapPartial f l
-          | SOME y => y :: mapPartial f l
-    fun op @ l1 l2 = List.rev_append (List.rev l1) l2
-  end
-
-structure Int =
-  struct
-    type int1 = int
-    type int = int1
-    val toString = string_of_int
-    fun fromString s = SOME (int_of_string s) handle Failure _ => NONE
-    fun min (x, y) = if x < y then x else y
-    fun max (x, y) = if x > y then x else y
-    fun scan radix getc src = failwith "not impl: Int.scan"
-  end
-
-val foldr = List.foldr
-val exists = List.exists
-val size = String.size
-val substring = String.substring
-val concat = String.concat
-val length = List.length
-val op @ = List.op @
-val hd = List.hd
-val tl = List.tl
-val map = List.map
-val rev = List.rev
-val use_hook = ref (fn (s : string) => (failwith "no defined directive use" : unit))
-fun use s = !use_hook s
-fun isSome (SOME _) = true
-  | isSome NONE = false
-fun valOf (SOME x) = x
-  | valOf NONE = failwith "valOf"
-val print = TextIO.print
index 626d30e84293361a5849b2efe7662336aef2cc1a..c82137a9a364ad615e2fba3f8b85c7f02f72572a 100644 (file)
@@ -11,7 +11,7 @@
 #                                                                       #
 #########################################################################
 
-# $Id$
+# $Id: Makefile-templ 12027 2012-01-16 09:05:37Z frisch $
 
 ### Compile-time configuration
 
index ddbc62872792fd429b6f3c3dec16ef0da2e43126..2b92475b19c6b5e608fc9e8f09300701f1fcc8f7 100644 (file)
@@ -11,7 +11,7 @@
 #                                                                       #
 #########################################################################
 
-# $Id$
+# $Id: Makefile.mingw 12461 2012-05-15 14:18:16Z frisch $
 
 # Configuration for Windows, Mingw compiler
 
@@ -72,7 +72,6 @@ ASM=$(TOOLPREF)as
 ASPP=gcc
 ASPPPROFFLAGS=
 PROFILING=noprof
-RUNTIMED=noruntimed
 DYNLINKOPTS=
 DEBUGGER=ocamldebugger
 CC_PROFILE=
index 86dd90a06426846da5a3a485ee9133e6494dd1e5..0823be5fe9afcf11aad499f15acb04dfa5412017 100644 (file)
@@ -19,6 +19,9 @@
 
 PREFIX=C:/ocamlmgw64
 
+### Remove this to disable compiling camlp4
+CAMLP4=camlp4
+
 ### Where to install the binaries
 BINDIR=$(PREFIX)/bin
 
@@ -69,7 +72,6 @@ ASM=$(TOOLPREF)as
 ASPP=gcc
 ASPPPROFFLAGS=
 PROFILING=noprof
-RUNTIMED=noruntimed
 DYNLINKOPTS=
 DEBUGGER=ocamldebugger
 CC_PROFILE=
@@ -78,6 +80,7 @@ EXTRALIBS=
 NATDYNLINK=true
 CMXS=cmxs
 RUNTIMED=noruntimed
+ASM_CFI_SUPPORTED=false
 
 ########## Configuration for the bytecode compiler
 
index ff96ea27dc577f890af7c19979f5759f743eda16..db3da6d18e27ae74e8c286cc93fc329dfc6d6eb5 100644 (file)
@@ -11,7 +11,7 @@
 #                                                                       #
 #########################################################################
 
-# $Id$
+# $Id: Makefile.msvc 12461 2012-05-15 14:18:16Z frisch $
 
 # Configuration for Windows, Visual C++ compiler
 
@@ -72,6 +72,7 @@ EXTRALIBS=
 CMXS=cmxs
 NATDYNLINK=true
 RUNTIMED=noruntimed
+ASM_CFI_SUPPORTED=false
 
 ########## Configuration for the bytecode compiler
 
index b6c2c6bc197d6146b215e62f916b53c9a69cd243..c832f301510ec89b2ba93b6c8ccca306e0d5171c 100644 (file)
@@ -11,7 +11,7 @@
 #                                                                       #
 #########################################################################
 
-# $Id$
+# $Id: Makefile.msvc64 12461 2012-05-15 14:18:16Z frisch $
 
 # Configuration for Windows, Visual C++ compiler
 
@@ -72,6 +72,7 @@ SYSTHREAD_SUPPORT=true
 CMXS=cmxs
 NATDYNLINK=true
 RUNTIMED=noruntimed
+ASM_CFI_SUPPORTED=false
 
 ########## Configuration for the bytecode compiler
 
@@ -146,6 +147,13 @@ NATIVECCLINKOPTS=
 ### Build partially-linked object file
 PACKLD=link /lib /nologo /machine:AMD64 /out:# there must be no space after this '/out:'
 
+############# Configuration for camlp4
+
+# This variable controls whether camlp4 will be built.
+# If it is set to camlp4, then it will be built.
+# If it is set to the empty string, then it will not be built.
+CAMLP4=camlp4
+
 ############# Configuration for the contributed libraries
 
 OTHERLIBRARIES=win32unix systhreads str num win32graph dynlink bigarray
index a04684b48391286737b7311f17a483306988f378..0fd7631fd01a6dd6ff4b8212948a66690472b027 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: align.c 11156 2011-07-27 14:17:02Z doligez $ */
 
 #include <stdio.h>
 #include <signal.h>
index 2ce3da725aceeb0b437e8a7ebe50a40328086e18..fb1188a0a80dc76e340d71c389103f6ea4a6b691 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: async_io.c 11156 2011-07-27 14:17:02Z doligez $ */
 
 #include <stdio.h>
 #include <fcntl.h>
index 2006147fd7454c54373be7444ee4e0391a1acde5..bdac9e94da6ba3f36e9be55b69893f2fff6d7629 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: bytecopy.c 11156 2011-07-27 14:17:02Z doligez $ */
 
 char buffer[27];
 
index 91d4194c09acc93ca86ea18c0be74d10e72479e9..3eb0939711824c172ab7751fdea67e8673a5ec97 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: dblalign.c 11156 2011-07-27 14:17:02Z doligez $ */
 
 #include <stdio.h>
 #include <signal.h>
index d59bf31cc9c84ad7cffee300df1de533633fa579..fe6d672d50433108f9a34df118a8a892cd13b0b2 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: divmod.c 11156 2011-07-27 14:17:02Z doligez $ */
 
 /* Test semantics of division and modulus for negative arguments */
 
index 27be98d6b734845fac5fa69c3ad26093a24fcbcd..dec1bd585901d3945cac7d26cfe6695aaac4590d 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: elf.c 11156 2011-07-27 14:17:02Z doligez $ */
 
 #include <stdio.h>
 
index b019eb1c7a6d0a6dc1683f2403a649b5690e0bc0..7276cf8759094be393117e149cc906d2d188b239 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: endian.c 11156 2011-07-27 14:17:02Z doligez $ */
 
 #include "m.h"
 
index b69b0be41f27e2bd8f5c2264a63680994df416ca..24cfd395fd87f00d60c20472993efe9965e0321c 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: getgroups.c 11156 2011-07-27 14:17:02Z doligez $ */
 
 #include <sys/types.h>
 #include <limits.h>
index f6d36a7f3b7831438c1049f30539f679f5542323..67beee9bae30e34856e7b3eab6e737abb8956d66 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: gethostbyaddr.c 11156 2011-07-27 14:17:02Z doligez $ */
 
 #ifndef _REENTRANT
 /* This helps detection on Digital Unix... */
index 96a39438d515554f52398ba13aad1a0efeb4d903..9db83c11683623358b661d64dfaecf32a796e12b 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: gethostbyname.c 11156 2011-07-27 14:17:02Z doligez $ */
 
 #ifndef _REENTRANT
 /* This helps detection on Digital Unix... */
index 8ba81601b6e46f50f4f96daef1afdbcf4f730a93..28960e74d34037d092f7fd9c797b0871023f9235 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: ia32sse2.c 11156 2011-07-27 14:17:02Z doligez $ */
 
 /* Test whether IA32 assembler supports SSE2 instructions */
 
index 7b9c2398348e58351f01b7fb2c9d6826fdc09902..2634aaf7aa254fd3200fa799d4b9c7714a946f6f 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: initgroups.c 11156 2011-07-27 14:17:02Z doligez $ */
 
 #include <errno.h>
 
index b087a3d66b6140c00963729f87d5311d1006eef8..0d281f76b4ee397192ca505886890debb5b80d1a 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: int64align.c 11156 2011-07-27 14:17:02Z doligez $ */
 
 #include <stdio.h>
 #include <signal.h>
index 424e540fdfb08573b94d9047c64105f1c6a18745..fe5ad7fd05bc6c0b48776c51b36b5d51ca0ac329 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: longlong.c 11156 2011-07-27 14:17:02Z doligez $ */
 
 #include <stdio.h>
 #include <string.h>
index e3e81e395eb58bb795dc285c35917fe00944dcb1..fc2199c21b5673965e9d73217bd9bb54e33f470b 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: schar.c 11156 2011-07-27 14:17:02Z doligez $ */
 
 char foo[]="\377";
 
index d041af1830dc2d63d2a113ed4b4bf294268f9ea7..7295d608020fc58404b7e03294c67861b687eeef 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: schar2.c 11156 2011-07-27 14:17:02Z doligez $ */
 
 signed char foo[]="\377";
 
index 63ac1b8c34e15a6682fdb6d23977622208293bed..0d5cc7f60c2f64da03807262a8855d371f220c13 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: setgroups.c 11156 2011-07-27 14:17:02Z doligez $ */
 
 #include <errno.h>
 
index b36557c5f06e3c016bbfa7b79d2ca85f3a68f8da..bbd34b9a9ff8436bf4c4b29f0371c77431dfb64e 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: sighandler.c 11156 2011-07-27 14:17:02Z doligez $ */
 
 #include <signal.h>
 
index 78ba8de69d5775241a6185c9e2ada701fe2e9cf4..f102208e69fce15ca39775980e738357432c1914 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: signals.c 11156 2011-07-27 14:17:02Z doligez $ */
 
 /* To determine the semantics of signal handlers
    (System V: signal is reset to default behavior on entrance to the handler
index 58fd6b23fc049cb39f7ce6e63eb96f715e52cefe..df8fe638c5585a292ea09e2a74ca9b61dc875342 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: sizes.c 11156 2011-07-27 14:17:02Z doligez $ */
 
 #include <stdio.h>
 
index 47f252aa670531cf32399360eb4b3531000b87b6..69e0e9ae8ce4b4420602485c64bde3e579dc19c4 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: stackov.c 11156 2011-07-27 14:17:02Z doligez $ */
 
 #include <stdio.h>
 #include <signal.h>
index 84a94033c69fe2f9ea6fea436a837872bd1b602f..335a4b6e8bd67cc0d7ec5f4fc12145becf449bf1 100644 (file)
@@ -14,7 +14,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: tclversion.c 11156 2011-07-27 14:17:02Z doligez $ */
 
 #include <stdio.h>
 #include <tcl.h>
index 80e0b5ee6a6383a52187d445a58e34d7d7e0f329..3ed75721598dbfb4e44c7aeec527b7dbffb4cd36 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: m-nt.h 11156 2011-07-27 14:17:02Z doligez $ */
 
 /* Machine configuration, Intel x86 processors, Win32,
    Visual C++ or Mingw compiler */
index 6e09f64e4a23454a5fcdf321430462e528e89ac8..3101163d63b1d3edfb792e468f618080f80a2c23 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: m-templ.h 11156 2011-07-27 14:17:02Z doligez $ */
 
 /* Processor dependencies */
 
index b21b7158a9d5b7bdbea3e956865b84a93abf335c..020d6c944a7b8bff16e2c7866ab6598a190ad49d 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: s-nt.h 12030 2012-01-16 10:23:51Z frisch $ */
 
 /* Operating system dependencies, Intel x86 processors, Windows NT */
 
index 971bc48f1e2eddfc5abea6375dd1147c5ef4386b..057e40e050656508bf8fc7f86f8259a144c5ecd4 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: s-templ.h 11156 2011-07-27 14:17:02Z doligez $ */
 
 /* Operating system and standard library dependencies. */
 
index 4ed6ce1b209a174337f238e739ec2c42e0dd7239..72f4240848846b204d6d5aa9b12bb27fb819bfb2 100755 (executable)
--- a/configure
+++ b/configure
@@ -13,7 +13,7 @@
 #                                                                       #
 #########################################################################
 
-# $Id$
+# $Id: configure 12567 2012-06-04 17:01:09Z doligez $
 
 configure_options="$*"
 prefix=/usr/local
@@ -256,6 +256,7 @@ esac
 
 bytecc="$cc"
 mkexe="\$(BYTECC)"
+mkexedebugflag="-g"
 bytecccompopts=""
 bytecclinkopts=""
 dllccompopts=""
@@ -328,6 +329,7 @@ case "$bytecc,$host" in
       else
         iflexdir="-I\"$flexdir\""
         mkexe="$flexlink -exe"
+        mkexedebugflag="-link -g"
       fi
     fi
     exe=".exe"
@@ -1628,6 +1630,7 @@ echo "TOOLCHAIN=cc" >> Makefile
 echo "NATDYNLINK=$natdynlink" >> Makefile
 echo "CMXS=$cmxs" >> Makefile
 echo "MKEXE=$mkexe" >> Makefile
+echo "MKEXEDEBUGFLAG=$mkexedebugflag" >> Makefile
 echo "MKDLL=$mksharedlib" >> Makefile
 echo "MKMAINDLL=$mkmaindll" >> Makefile
 echo "RUNTIMED=${debugruntime}" >>Makefile
@@ -1717,8 +1720,8 @@ fi
 if test $has_tk = true; then
 echo "Configuration for the \"labltk\" library:"
 echo "        use tcl/tk version ....... $tcl_version"
-echo "        options for compiling .... $tk_defs $x11_includes"
-echo "        options for linking ...... $tk_libs $x11_link"
+echo "        options for compiling .... $tk_defs $tk_x11_include"
+echo "        options for linking ...... $tk_libs $tk_x11_libs"
 else
 echo "The \"labltk\" library: not supported"
 fi
index e3c107ab3fc5fd0f054efbef3e3049a16f917745..3c5afe90e3263f1adad17a2b782c1e41a3007aac 100644 (file)
@@ -71,11 +71,11 @@ debugger_config.cmx : int64ops.cmx debugger_config.cmi
 dynlink.cmo : ../bytecomp/symtable.cmi ../bytecomp/opcodes.cmo \
     ../utils/misc.cmi ../bytecomp/meta.cmi ../bytecomp/dll.cmi \
     ../utils/consistbl.cmi ../utils/config.cmi ../bytecomp/cmo_format.cmi \
-    dynlink.cmi
+    ../typing/cmi_format.cmi dynlink.cmi
 dynlink.cmx : ../bytecomp/symtable.cmx ../bytecomp/opcodes.cmx \
     ../utils/misc.cmx ../bytecomp/meta.cmx ../bytecomp/dll.cmx \
     ../utils/consistbl.cmx ../utils/config.cmx ../bytecomp/cmo_format.cmi \
-    dynlink.cmi
+    ../typing/cmi_format.cmx dynlink.cmi
 envaux.cmo : ../typing/types.cmi ../typing/subst.cmi ../typing/printtyp.cmi \
     ../typing/path.cmi ../typing/mtype.cmi ../utils/misc.cmi \
     ../bytecomp/instruct.cmi ../typing/env.cmi envaux.cmi
@@ -126,12 +126,14 @@ main.cmo : unix_tools.cmi $(UNIXDIR)/unix.cmi time_travel.cmi \
     show_information.cmi question.cmi program_management.cmi primitives.cmi \
     parameters.cmi ../utils/misc.cmi input_handling.cmi frames.cmi exec.cmi \
     ../typing/env.cmi debugger_config.cmi ../utils/config.cmi \
-    command_line.cmi ../utils/clflags.cmi checkpoints.cmi
+    command_line.cmi ../typing/cmi_format.cmi ../utils/clflags.cmi \
+    checkpoints.cmi
 main.cmx : unix_tools.cmx $(UNIXDIR)/unix.cmx time_travel.cmx \
     show_information.cmx question.cmx program_management.cmx primitives.cmx \
     parameters.cmx ../utils/misc.cmx input_handling.cmx frames.cmx exec.cmx \
     ../typing/env.cmx debugger_config.cmx ../utils/config.cmx \
-    command_line.cmx ../utils/clflags.cmx checkpoints.cmx
+    command_line.cmx ../typing/cmi_format.cmx ../utils/clflags.cmx \
+    checkpoints.cmx
 parameters.cmo : primitives.cmi envaux.cmi debugger_config.cmi \
     ../utils/config.cmi parameters.cmi
 parameters.cmx : primitives.cmx envaux.cmx debugger_config.cmx \
index 45440f86d73ab93193d28cdf75bfa5b9d7b77fff..45eec7cceb2dec1ea5e126cbfa938ee4da6d785d 100644 (file)
@@ -2,5 +2,6 @@ lexer.ml
 parser.ml
 parser.mli
 ocamldebug
+ocamldebug.exe
 dynlink.ml
 dynlink.mli
index 2e6534c7303668020f69f862c377112c13a7daef..a2eb4116543a406a9753c7500be8f27bd54bb08c 100644 (file)
@@ -10,7 +10,7 @@
 #                                                                       #
 #########################################################################
 
-# $Id$
+# $Id: Makefile 11156 2011-07-27 14:17:02Z doligez $
 
 UNIXDIR=../otherlibs/unix
 include Makefile.shared
index 40034ef482a51ee1d27ff35c3057ee34d8389ab4..84619bace148717e8105b335228ba65f1c798a5e 100644 (file)
@@ -10,7 +10,7 @@
 #                                                                       #
 #########################################################################
 
-# $Id$
+# $Id: Makefile.nt 11156 2011-07-27 14:17:02Z doligez $
 
 UNIXDIR=../otherlibs/win32unix
 include Makefile.shared
index 820af9af9ebf9d3388c016bd63026e72f549d909..f27c776e2d490e6da8c457b27deb4cc453fdbcc8 100644 (file)
@@ -10,7 +10,7 @@
 #                                                                       #
 #########################################################################
 
-# $Id$
+# $Id: Makefile.shared 12526 2012-05-31 12:41:49Z lefessan $
 
 include ../config/Makefile
 
@@ -35,7 +35,7 @@ OTHEROBJS=\
   ../typing/ident.cmo ../typing/path.cmo ../typing/types.cmo \
   ../typing/btype.cmo ../typing/primitive.cmo ../typing/typedtree.cmo \
   ../typing/subst.cmo ../typing/predef.cmo \
-  ../typing/datarepr.cmo ../typing/env.cmo ../typing/oprint.cmo \
+  ../typing/datarepr.cmo ../typing/cmi_format.cmo ../typing/env.cmo ../typing/oprint.cmo \
   ../typing/ctype.cmo ../typing/printtyp.cmo ../typing/mtype.cmo \
   ../bytecomp/runtimedef.cmo ../bytecomp/bytesections.cmo \
   ../bytecomp/dll.cmo ../bytecomp/meta.cmo ../bytecomp/symtable.cmo \
index 5e84cc6ca6a72dc4938a0c0d772fd77736897775..bfab44d48e07559775f04bf09688bcb9e5a158dd 100644 (file)
@@ -11,7 +11,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: breakpoints.ml 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (******************************* Breakpoints ***************************)
 
index 855ef5e17bf7dadc4b670acd2474feb065d8ca01..075608eb62c1344ee3696c0b2a95a4bbf4704cac 100644 (file)
@@ -11,7 +11,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: breakpoints.mli 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (******************************* Breakpoints ***************************)
 
index e2371f17045b708846b5e5a6e7a44c73de5fa083..9ca303ad37cd22b02f633dcc5e785e553a2a03d9 100644 (file)
@@ -11,7 +11,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: checkpoints.ml 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (*************************** Checkpoints *******************************)
 
index b37d1ae55eda22362a67392abd8226d980530dd6..269aaf267b16d43aef5b783fed38d9c17812ff47 100644 (file)
@@ -11,7 +11,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: checkpoints.mli 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (***************************** Checkpoints *****************************)
 
index 9b0084daf29a164e4a56d64c792de4e3ebde12f7..ddc3c84fed51298f3951c70831d213e92aebd688 100644 (file)
@@ -11,7 +11,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: command_line.ml 12511 2012-05-30 13:29:48Z lefessan $ *)
 
 (************************ Reading and executing commands ***************)
 
@@ -209,8 +209,8 @@ let line_loop ppf line_buffer =
     with
     | Exit ->
         stop_user_input ()
-    | Sys_error s ->
-        error ("System error : " ^ s)
+(*    | Sys_error s ->
+        error ("System error : " ^ s) *)
 
 (** Instructions. **)
 let instr_cd ppf lexbuf =
index 422cf6a2422233773c9d2e247b7315a9c5af9c4c..aea8bfbb0029a3296c795daedae86360e8984e52 100644 (file)
@@ -11,7 +11,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: command_line.mli 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (************************ Reading and executing commands ***************)
 
index 1da00cbab86d00281476229b5305e3ed18750a97..1e95e42931dd75a72fb170a557f8a72661cb0c9d 100644 (file)
@@ -11,7 +11,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: debugcom.ml 12184 2012-02-23 19:54:44Z doligez $ *)
 
 (* Low-level communication with the debuggee *)
 
index 7d107ac5b81ef1fc0849ccf266e971e40aaf20f4..847e9d35acbf5d35bfc13b204ce60648ca4d79a4 100644 (file)
@@ -11,7 +11,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: debugcom.mli 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (* Low-level communication with the debuggee *)
 
index 29287593659f93aaffc2675506f53e8b8f67704a..46e0932cd4aa4ff3cb3d903e72add1b942ce0e3e 100644 (file)
@@ -11,7 +11,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: debugger_config.ml 12210 2012-03-08 19:52:03Z doligez $ *)
 
 (**************************** Configuration file ***********************)
 
index d3f1a2a7d9916b4af6ff683858257f715ba35f1f..25922ac4416a4369542b139438f0ca16e8dfd1b2 100644 (file)
@@ -11,7 +11,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: debugger_config.mli 12210 2012-03-08 19:52:03Z doligez $ *)
 
 (********************** Configuration file *****************************)
 
index 56786929ebbb99739baa43eff0a096445929263b..9a58fb69f4fca9507aeeea8b2c8ca514b4445a65 100644 (file)
@@ -11,7 +11,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: envaux.ml 12511 2012-05-30 13:29:48Z lefessan $ *)
 
 open Misc
 open Types
@@ -31,7 +31,7 @@ let reset_cache () =
 
 let extract_sig env mty =
   match Mtype.scrape env mty with
-    Tmty_signature sg -> sg
+    Mty_signature sg -> sg
   | _ -> fatal_error "Envaux.extract_sig"
 
 let rec env_from_summary sum subst =
index b78173c4a7f9a3ae9bdfe0fc1df0dd77b7ff0937..836a37c638a9b68ad6f37d5889dc2c22df97bda4 100644 (file)
@@ -11,7 +11,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: envaux.mli 11156 2011-07-27 14:17:02Z doligez $ *)
 
 open Format
 
index 0f8c8a056675b28079f6bdb78dcf049f29641923..5917f5707314c50c5b07d12cc7b120822e182edc 100644 (file)
@@ -11,7 +11,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: eval.ml 12511 2012-05-30 13:29:48Z lefessan $ *)
 
 open Misc
 open Path
@@ -149,7 +149,7 @@ and find_label lbl env ty path tydesc pos = function
     [] ->
       raise(Error(Wrong_label(ty, lbl)))
   | (name, mut, ty_arg) :: rem ->
-      if name = lbl then begin
+      if Ident.name name = lbl then begin
         let ty_res =
           Btype.newgenty(Tconstr(path, tydesc.type_params, ref Mnil))
         in
index 96661b2a3c71fc48ca99dee7f28c5462e7e6e18f..71ca75a1b559f889a3791d067f0d9c09f00fe70e 100644 (file)
@@ -11,7 +11,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: eval.mli 11156 2011-07-27 14:17:02Z doligez $ *)
 
 open Types
 open Parser_aux
index 78733bfc4efbca9f88accc43ba1c38c0d31ab6cb..ed59938d573801a1a2e36c9f7e8752a70cab8f5f 100644 (file)
@@ -11,7 +11,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: events.ml 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (********************************* Events ******************************)
 
index f795058cc7c9bf48db8ad607082e113e7a2739ec..4857aa5b566bbf5cf62d25e0d3923ff27974f651 100644 (file)
@@ -11,7 +11,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: events.mli 11156 2011-07-27 14:17:02Z doligez $ *)
 
 open Instruct
 
index 22d281bcc33d7b4a9bf5289e0699423542520f40..db2d3662366d769fda5e2b0a9ea3b8e2fdbecfcc 100644 (file)
@@ -11,7 +11,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: exec.ml 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (* Handling of keyboard interrupts *)
 
index c9d665ae05429541f5a59adedd6439dc220beb8c..71b855df8afd2ff1cea5e2fcc5c7001704dbd983 100644 (file)
@@ -11,7 +11,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: exec.mli 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (* Handling of keyboard interrupts *)
 
index 2a87ffdd8d5303020c4196acf5aad9d47397e3e2..9ec6e8cc9ead546109614c04ec4e2810f220fa49 100644 (file)
@@ -11,7 +11,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: frames.ml 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (***************************** Frames **********************************)
 
index 5023236cb8c6dd5f3fd90f86bf4b6a68f351df67..70dbf3dd443b9f5e519e77359d726d48cc63768f 100644 (file)
@@ -11,7 +11,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: frames.mli 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (****************************** Frames *********************************)
 
index 473ba80bb02db273b5a930164e48b4c31e214aa1..e84bfc80a4d91b932d4c99145aac36f1fe2c1740 100644 (file)
@@ -11,7 +11,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: history.ml 11156 2011-07-27 14:17:02Z doligez $ *)
 
 open Int64ops
 open Checkpoints
index 542b9ca04715c2f3e57604c6c97ac009a6fe1e7c..88b051dc0e330d0e4cacc6e9edfbff5a30931311 100644 (file)
@@ -11,7 +11,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: history.mli 11156 2011-07-27 14:17:02Z doligez $ *)
 
 val empty_history : unit -> unit
 
index 8bbc0d80f515eebe0fb122ce96eeaf54f14b7447..a28b6af17fb539f0745bff0b437166e0cc9291b8 100644 (file)
@@ -11,7 +11,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: input_handling.ml 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (**************************** Input control ****************************)
 
index 7ae190ee1bc7ab1047611af2e016a8e513b9ff88..0b1c2ea711a36743cf2cc3995ad50ca04fe8e7fc 100644 (file)
@@ -11,7 +11,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: input_handling.mli 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (***************************** Input control ***************************)
 
index a3dbdbe2cc90e9458c055def531731f96f6446a5..9a4752406e3242cfc6d8784f9e38d99863f16820 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: int64ops.ml 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (****************** arithmetic operators for Int64 *********************)
 
index f898f1431b7ce170dddc0ee82647222699bb2a3d..38174b46ed94710ffe74e98382466a681da092de 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: int64ops.mli 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (****************** arithmetic operators for Int64 *********************)
 
index 23f88e571f83da5df7a45618cd684d60279b2d9e..eeaf8905e52b0440d9e2863a9d0df1de1919c07e 100644 (file)
@@ -11,7 +11,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: lexer.mli 11156 2011-07-27 14:17:02Z doligez $ *)
 
 val line: Lexing.lexbuf -> string
 val lexeme: Lexing.lexbuf -> Parser.token
index 7dd51e70470e15d5c5fbe4033ba7e2b93d3e3da3..0cd2d6a45b2b770ece1c9b0fd3db746b7beb9360 100644 (file)
@@ -11,7 +11,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: lexer.mll 11156 2011-07-27 14:17:02Z doligez $ *)
 
 {
 
index 0395cfb307a0a9565305a2e15b48c00281fb2398..e3998fd6efc6a968f852f91022b2c9e4f1b124bc 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: loadprinter.ml 11284 2011-11-24 09:02:48Z garrigue $ *)
 
 (* Loading and installation of user-defined printer functions *)
 
index 77edfc53dc958661935e218103d28c9d99d817d0..147eebf2aea5378fd2df34ca861e43d22f1a6953 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: loadprinter.mli 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (* Loading and installation of user-defined printer functions *)
 
index 9dbb41ee60dd902f59318f102d1a5f947e59ccc2..8a07620dc22a6b3166470a4efc74ea04843da9e1 100644 (file)
@@ -11,7 +11,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: main.ml 12511 2012-05-30 13:29:48Z lefessan $ *)
 
 open Input_handling
 open Question
@@ -224,6 +224,11 @@ let main () =
       Env.report_error err_formatter e;
       eprintf "@]@.";
       exit 2
+  | Cmi_format.Error e ->
+      eprintf "Debugger [version %s] environment error:@ @[@;" Config.version;
+      Cmi_format.report_error err_formatter e;
+      eprintf "@]@.";
+      exit 2
 
 let _ =
   Printexc.catch (Unix.handle_unix_error main) ()
index fb816e4d5d913b42ada39f460a14c5f4a0d9a06e..e958e93c144fbb1c73b42750dbe753abcb2b9f36 100644 (file)
@@ -11,7 +11,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: parameters.ml 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (* Miscellaneous parameters *)
 
index eb055f7c5d4b42a80de4c320c09ea8f290f7eccf..4eeb1346ed2daefc5bc0da69b4e28b424c3ce82b 100644 (file)
@@ -11,7 +11,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: parameters.mli 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (* Miscellaneous parameters *)
 
index 5bba611b9da3434e9714c0c306a552524a3fbf8b..a48e2618bbd0dd70dff55b1ac4f2de6170405836 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: parser.mly 12210 2012-03-08 19:52:03Z doligez $ */
 
 %{
 
index 275281cc49434943a09cad5aecccf6fbbaa111fd..baa8e1520d22f20528cf12ab0b0ce1b17ff9bcf5 100644 (file)
@@ -11,7 +11,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: parser_aux.mli 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (*open Globals*)
 
index b921182657374a1192eb2bde3c2b64fd4e33aa22..e2a99856c416a171c939954315f67fa911e84a7c 100644 (file)
@@ -11,7 +11,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: pattern_matching.ml 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (************************ Simple pattern matching **********************)
 
index a7a525622bcdf7f2e0c3246089fd41f62eb5f06c..8cb532e7c8e315a258a55638572dc5c2875ad56c 100644 (file)
@@ -11,7 +11,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: pattern_matching.mli 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (************************ Simple pattern matching **********************)
 
index 9951686481c84b2613b26cbe35df6874f16c6073..d8fb38fbc19497aea0577223ecccbe1114d6e954 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: pos.ml 11166 2011-08-04 14:59:13Z doligez $ *)
 
 open Instruct;;
 open Lexing;;
index a4c8e9e8d5b2cace35df6f885e109b16681a7ad7..76835b669a44496c7e71c7eeaf939a123ad01b40 100644 (file)
@@ -10,6 +10,6 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: pos.mli 11156 2011-07-27 14:17:02Z doligez $ *)
 
 val get_desc : Instruct.debug_event -> string;;
index bfd2fdd8de654c222a48f8f6b5a98c1ef5ccae34..d259244e1cb32fead8cbe29a75680930589c7d32 100644 (file)
@@ -11,7 +11,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: primitives.ml 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (*********************** Basic functions and types *********************)
 
index 4d914da9842504404773ce0c526aef2d1c0152c6..ba994745457f18b414ed1fd36515ae15a5c2f665 100644 (file)
@@ -11,7 +11,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: primitives.mli 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (********************* Basic functions and types ***********************)
 
index 84a0f06e41614d27db0bbaaaf2223c4e6e71e989..20f2be7d1d901c7305e4ec72bbdd264addc2e21b 100644 (file)
@@ -11,7 +11,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: printval.ml 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (* To print values *)
 
index f1c4569bb83b94db3874d4ed0d19d63bb7a376ff..4cf651654270d5ddec3318560d4343d0c07cee0a 100644 (file)
@@ -11,7 +11,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: printval.mli 11156 2011-07-27 14:17:02Z doligez $ *)
 
 open Format
 
index bef9f80d173692fcc92d6c07fe8f3cb673c05950..7abaee856d2aa444887933668c53016ca896ef3e 100644 (file)
@@ -11,7 +11,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: program_loading.ml 12352 2012-04-13 12:43:24Z doligez $ *)
 
 (* Program loading *)
 
index 2814eb39cfd6fd111fcce37026762f7e0796da0f..a4bba181fd9e3e78d54838fcab371ef1c3fe0312 100644 (file)
@@ -11,7 +11,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: program_loading.mli 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (*** Debugging. ***)
 
index 3e6ffa81d153a094c23a81acfee9e97871b10737..86525eedb42aec70896a38bbb90564a4b7cee758 100644 (file)
@@ -11,7 +11,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: program_management.ml 12511 2012-05-30 13:29:48Z lefessan $ *)
 
 (* Manage the loading of the program *)
 
@@ -116,8 +116,10 @@ let ask_kill_program () =
 (*** Program loading and initializations. ***)
 
 let initialize_loading () =
-  if !debug_loading then
+  if !debug_loading then begin
     prerr_endline "Loading debugging information...";
+    Printf.fprintf Pervasives.stderr "\tProgram: [%s]\n%!" !program_name;
+  end;
   begin try access !program_name [F_OK]
   with Unix_error _ ->
     prerr_endline "Program not found.";
index 96f5a4382408b44947c1a4d76141cad55340afed..03fe9fa7da976687e15195518db9d88378c58bf9 100644 (file)
@@ -11,7 +11,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: program_management.mli 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (*** Program loading and initializations. ***)
 
index 86e9637a49c4bb4af3ea82a15a112928e29d1819..bc119eb28c68d39cc60fd496506d1de9200e20a5 100644 (file)
@@ -11,7 +11,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: show_information.ml 11156 2011-07-27 14:17:02Z doligez $ *)
 
 open Instruct
 open Format
index 7774721a94c47a70412ef95c8d43e0183b4fd918..43f454b06407b6df9a1ee9d31637ef39ec0648bd 100644 (file)
@@ -11,7 +11,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: show_information.mli 11156 2011-07-27 14:17:02Z doligez $ *)
 
 open Format;;
 
index 4a998f5201968400ddf51bdf36dad1bdd3055cd6..46ea59052a218fc6ad73425a73d54ca023f25e5c 100644 (file)
@@ -11,7 +11,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: show_source.ml 11156 2011-07-27 14:17:02Z doligez $ *)
 
 open Debugger_config
 open Instruct
index 3b136ab7471f08cfd9b1510328bf53e9f101db55..b41a3ac0937c32bc0258664a847335214a759a61 100644 (file)
@@ -11,7 +11,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: show_source.mli 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (* Print the line containing the point *)
 val show_point : Instruct.debug_event -> bool -> unit;;
index 0f705f25989c356e6aeabf47975a224576c8f24b..ecee85d3cf7460f4e7db2d4169faddd86804fba6 100644 (file)
@@ -11,7 +11,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: source.ml 12511 2012-05-30 13:29:48Z lefessan $ *)
 
 (************************ Source management ****************************)
 
@@ -28,7 +28,7 @@ let source_of_module pos mdle =
     try
       (String.sub m 0 len') = m' && (String.get m len') = '.'
     with
-      Invalid_argument _ -> false in
+        Invalid_argument _ -> false in
   let path =
     Hashtbl.fold
       (fun mdl dirs acc ->
@@ -39,7 +39,20 @@ let source_of_module pos mdle =
       Debugger_config.load_path_for
       !Config.load_path in
   let fname = pos.Lexing.pos_fname in
-  if Filename.is_implicit fname then
+  if fname = "" then
+    let innermost_module =
+      try
+        let dot_index = String.rindex mdle '.' in
+        String.sub mdle (succ dot_index) (pred ((String.length mdle) - dot_index))
+      with Not_found -> mdle in
+    let rec loop =
+      function
+        | [] -> raise Not_found
+        | ext :: exts ->
+          try find_in_path_uncap path (innermost_module ^ ext)
+          with Not_found -> loop exts
+    in loop source_extensions
+  else   if Filename.is_implicit fname then
     find_in_path path fname
   else
     fname
index 50fa3f02ad2d03053a8a7e935287a399504f08f4..75a7062e08d144e22060bb76db60e270c9289539 100644 (file)
@@ -11,7 +11,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: source.mli 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (************************ Source management ****************************)
 
index 9fba3e09c84a25a73406d33b3c97c8ae2ffaf189..3a7d9e5a1513b6d1d2bd19db89dea03f737dbc57 100644 (file)
@@ -11,7 +11,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: symbols.ml 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (* Handling of symbol tables (globals and events) *)
 
index 8823abd29c976ac5cd5ede240e7309b7ea6dad26..5a46b4a19f503eda520035379b17c911731b004f 100644 (file)
@@ -11,7 +11,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: symbols.mli 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (* Modules used by the program. *)
 val modules : string list ref
index e10e0396952f8b6f207ea34582930553317f453d..77b49a6a6ecaf2133744c5e75ae9c2f38da8efce 100644 (file)
@@ -11,7 +11,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: time_travel.ml 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (**************************** Time travel ******************************)
 
index dad47fedcafa3ff19305e85144633a89b5aeba48..0244f640a088f50cb14ac2ccf50f8221506836b3 100644 (file)
@@ -11,7 +11,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: time_travel.mli 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (**************************** Time travel ******************************)
 
index 6aa22b267c6bc15773c1764412d57a9b1b4c0a25..e7b859c59b5ceb79ebdc23ae6e8289fe1f3bfdc5 100644 (file)
@@ -11,7 +11,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: trap_barrier.ml 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (************************** Trap barrier *******************************)
 
index b12391af630cb31ca5a06ffd4019b73c768e5ffc..1d29c6ad3505bad6a8e68f14144fb92a93238576 100644 (file)
@@ -11,7 +11,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: trap_barrier.mli 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (************************* Trap barrier ********************************)
 
index dea47f99f8e319fa16e894a61bc9cfe2249d4959..e7a6949db292751fbedf53ecbfee799836afd5a5 100644 (file)
@@ -11,7 +11,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: unix_tools.ml 12511 2012-05-30 13:29:48Z lefessan $ *)
 
 (****************** Tools for Unix *************************************)
 
@@ -58,6 +58,7 @@ let report_error = function
 (* Return the full path if found. *)
 (* Raise `Not_found' otherwise. *)
 let search_in_path name =
+  Printf.fprintf Pervasives.stderr "search_in_path [%s]\n%!" name;
   let check name =
     try access name [X_OK]; name with Unix_error _ -> raise Not_found
   in
index bbea8447e0d5f94176237d0831f9517fdce206e0..c2ee8a3832e61bae9d42761b299e1c2319b4d704 100644 (file)
@@ -11,7 +11,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: unix_tools.mli 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (**************************** Tools for Unix ***************************)
 
index cf9c2a4a3c6f2e818160917fae68522c8827c944..501ca9030c67b07dcbfe2ba7e355d5d8af1deea4 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: compile.ml 12511 2012-05-30 13:29:48Z lefessan $ *)
 
 (* The batch compiler *)
 
@@ -79,17 +79,21 @@ let interface ppf sourcefile outputprefix =
   check_unit_name ppf sourcefile modulename;
   Env.set_unit_name modulename;
   let inputfile = Pparse.preprocess sourcefile in
+  let initial_env = initial_env () in
   try
     let ast =
       Pparse.file ppf inputfile Parse.interface ast_intf_magic_number in
     if !Clflags.dump_parsetree then fprintf ppf "%a@." Printast.interface ast;
-    let sg = Typemod.transl_signature (initial_env()) ast in
+    let tsg = Typemod.transl_signature initial_env ast in
     if !Clflags.print_types then
       fprintf std_formatter "%a@." Printtyp.signature
-                                   (Typemod.simplify_signature sg);
+                                   (Typemod.simplify_signature tsg.sig_type);
     Warnings.check_fatal ();
-    if not !Clflags.print_types then
-      Env.save_signature sg modulename (outputprefix ^ ".cmi");
+    if not !Clflags.print_types then begin
+      let sg = Env.save_signature tsg.sig_type modulename (outputprefix ^ ".cmi") in
+      Typemod.save_signature modulename tsg outputprefix sourcefile
+       initial_env sg ;
+    end;
     Pparse.remove_preprocessed inputfile
   with e ->
     Pparse.remove_preprocessed_if_ast inputfile;
@@ -119,10 +123,10 @@ let implementation ppf sourcefile outputprefix =
       ++ Typemod.type_implementation sourcefile outputprefix modulename env);
       Warnings.check_fatal ();
       Pparse.remove_preprocessed inputfile;
-      Stypes.dump (outputprefix ^ ".annot");
+      Stypes.dump (Some (outputprefix ^ ".annot"));
     with x ->
       Pparse.remove_preprocessed_if_ast inputfile;
-      Stypes.dump (outputprefix ^ ".annot");
+      Stypes.dump (Some (outputprefix ^ ".annot"));
       raise x
   end else begin
     let objfile = outputprefix ^ ".cmo" in
@@ -141,12 +145,12 @@ let implementation ppf sourcefile outputprefix =
       Warnings.check_fatal ();
       close_out oc;
       Pparse.remove_preprocessed inputfile;
-      Stypes.dump (outputprefix ^ ".annot");
+      Stypes.dump (Some (outputprefix ^ ".annot"));
     with x ->
       close_out oc;
       remove_file objfile;
       Pparse.remove_preprocessed_if_ast inputfile;
-      Stypes.dump (outputprefix ^ ".annot");
+      Stypes.dump (Some (outputprefix ^ ".annot"));
       raise x
   end
 
index 779239a8cc000105405c41df39d2bbc1326a6c96..a4965a416faff654d1d02690feca86c72d669e3c 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: compile.mli 12058 2012-01-20 14:23:34Z frisch $ *)
 
 (* Compile a .ml or .mli file *)
 
index 9400e9ebc5af2586d82eb4ecec231328efcae786..b717ba2e569b61276a16d8c51daba902835eac30 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: errors.ml 12511 2012-05-30 13:29:48Z lefessan $ *)
 
 (* WARNING: if you change something in this file, you must look at
    opterrors.ml and ocamldoc/odoc_analyse.ml
@@ -34,6 +34,9 @@ let report_error ppf exn =
   | Env.Error err ->
       Location.print_error_cur_file ppf;
       Env.report_error ppf err
+  | Cmi_format.Error err ->
+      Location.print_error_cur_file ppf;
+      Cmi_format.report_error ppf err
   | Ctype.Tags(l, l') ->
       Location.print_error_cur_file ppf;
       fprintf ppf
index 9f7020d08a3e9eea808afae6152009b5a2979cf8..faff2a48fe1f18aa67509b28ea619bb1f392c981 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: errors.mli 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (* Error report *)
 open Format
index 94b024eaa52310bf3c636f4da6bd42d508be357c..e0f5e0c905a065208dc79de77e00ad04a1558cd3 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: main.ml 12511 2012-05-30 13:29:48Z lefessan $ *)
 
 open Config
 open Clflags
@@ -93,6 +93,7 @@ module Options = Main_args.Make_bytecomp_options (struct
   let _a = set make_archive
   let _absname = set Location.absname
   let _annot = set annotations
+  let _binannot = set binary_annotations
   let _c = set compile_only
   let _cc s = c_compiler := Some s
   let _cclib s = ccobjs := Misc.rev_split_words s @ !ccobjs
index b949bb0fe9b29b8f5f9fe136cfa09cbb5903508d..56b54a16ab6afae89e37f98186be36a61ded86de 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: main.mli 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (*
   this "empty" file is here to speed up garbage collection in ocamlc.opt
index 75e3f164abba34cb58c8b07a2d2684d746883ecd..567afe1d32fda7e3ea445de26d1fd64a15691857 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: main_args.ml 12511 2012-05-30 13:29:48Z lefessan $ *)
 
 let mk_a f =
   "-a", Arg.Unit f, " Build a library"
@@ -24,6 +24,10 @@ let mk_annot f =
   "-annot", Arg.Unit f, " Save information in <filename>.annot"
 ;;
 
+let mk_binannot f =
+  "-bin-annot", Arg.Unit f, " Save typedtree in <filename>.cmt"
+;;
+
 let mk_c f =
   "-c", Arg.Unit f, " Compile only (do not link)"
 ;;
@@ -397,6 +401,7 @@ module type Bytecomp_options = sig
   val _a : unit -> unit
   val _absname : unit -> unit
   val _annot : unit -> unit
+  val _binannot : unit -> unit
   val _c : unit -> unit
   val _cc : string -> unit
   val _cclib : string -> unit
@@ -484,6 +489,7 @@ module type Optcomp_options = sig
   val _a : unit -> unit
   val _absname : unit -> unit
   val _annot : unit -> unit
+  val _binannot : unit -> unit
   val _c : unit -> unit
   val _cc : string -> unit
   val _cclib : string -> unit
@@ -606,6 +612,7 @@ struct
     mk_a F._a;
     mk_absname F._absname;
     mk_annot F._annot;
+    mk_binannot F._binannot;
     mk_c F._c;
     mk_cc F._cc;
     mk_cclib F._cclib;
@@ -705,6 +712,7 @@ struct
     mk_a F._a;
     mk_absname F._absname;
     mk_annot F._annot;
+    mk_binannot F._binannot;
     mk_c F._c;
     mk_cc F._cc;
     mk_cclib F._cclib;
index 4c9eacca53538b3c942e7a8c6d09c6a8ab939346..2cc301559af625efe748d48acf0f03e1963cbac7 100644 (file)
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: main_args.mli 12511 2012-05-30 13:29:48Z lefessan $ *)
 
 module type Bytecomp_options =
   sig
     val _a : unit -> unit
     val _absname : unit -> unit
     val _annot : unit -> unit
+    val _binannot : unit -> unit
     val _c : unit -> unit
     val _cc : string -> unit
     val _cclib : string -> unit
@@ -105,6 +106,7 @@ module type Optcomp_options = sig
   val _a : unit -> unit
   val _absname : unit -> unit
   val _annot : unit -> unit
+  val _binannot : unit -> unit
   val _c : unit -> unit
   val _cc : string -> unit
   val _cclib : string -> unit
index 1e6ab0ce3f9368e1d5bfcd032f44f1d42ba637e6..7cd18677701e830a420f10491949580821a8314c 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: optcompile.ml 12511 2012-05-30 13:29:48Z lefessan $ *)
 
 (* The batch compiler *)
 
@@ -76,22 +76,25 @@ let interface ppf sourcefile outputprefix =
   check_unit_name ppf sourcefile modulename;
   Env.set_unit_name modulename;
   let inputfile = Pparse.preprocess sourcefile in
+  let initial_env = initial_env() in
   try
     let ast =
       Pparse.file ppf inputfile Parse.interface ast_intf_magic_number in
     if !Clflags.dump_parsetree then fprintf ppf "%a@." Printast.interface ast;
-    let sg = Typemod.transl_signature (initial_env()) ast in
+    let tsg = Typemod.transl_signature initial_env ast in
     if !Clflags.print_types then
       fprintf std_formatter "%a@." Printtyp.signature
-                                   (Typemod.simplify_signature sg);
+                                   (Typemod.simplify_signature tsg.sig_type);
     Warnings.check_fatal ();
-    if not !Clflags.print_types then
-      Env.save_signature sg modulename (outputprefix ^ ".cmi");
+    if not !Clflags.print_types then begin
+      let sg = Env.save_signature tsg.sig_type modulename (outputprefix ^ ".cmi") in
+      Typemod.save_signature modulename tsg outputprefix sourcefile initial_env sg ;
+    end;
     Pparse.remove_preprocessed inputfile;
-    Stypes.dump (outputprefix ^ ".annot");
+    Stypes.dump (Some (outputprefix ^ ".annot"))
   with e ->
     Pparse.remove_preprocessed_if_ast inputfile;
-    Stypes.dump (outputprefix ^ ".annot");
+    Stypes.dump (Some (outputprefix ^ ".annot"));
     raise e
 
 (* Compile a .ml file *)
@@ -133,12 +136,12 @@ let implementation ppf sourcefile outputprefix =
     end;
     Warnings.check_fatal ();
     Pparse.remove_preprocessed inputfile;
-    Stypes.dump (outputprefix ^ ".annot");
+    Stypes.dump (Some (outputprefix ^ ".annot"));
   with x ->
     remove_file objfile;
     remove_file cmxfile;
     Pparse.remove_preprocessed_if_ast inputfile;
-    Stypes.dump (outputprefix ^ ".annot");
+    Stypes.dump (Some (outputprefix ^ ".annot"));
     raise x
 
 let c_file name =
index 779239a8cc000105405c41df39d2bbc1326a6c96..d1e3f6b519babba316349ed4a25bb3a17d68572f 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: optcompile.mli 12058 2012-01-20 14:23:34Z frisch $ *)
 
 (* Compile a .ml or .mli file *)
 
index f931990a4c797bdb26f8a600bedc0fd2d64f5a6e..04ea7dd37c5c05b5ca44398eb3a664bae0423e42 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: opterrors.ml 12511 2012-05-30 13:29:48Z lefessan $ *)
 
 (* WARNING: if you change something in this file, you must look at
    errors.ml to see if you need to make the same changes there.
@@ -33,6 +33,9 @@ let report_error ppf exn =
   | Env.Error err ->
       Location.print_error_cur_file ppf;
       Env.report_error ppf err
+  | Cmi_format.Error err ->
+      Location.print_error_cur_file ppf;
+      Cmi_format.report_error ppf err
   | Ctype.Tags(l, l') ->
       Location.print_error_cur_file ppf;
       fprintf ppf
index 94966741b7311318ff27f23bb79714fa56e35c8c..c2d8dccc9df5528d8fec76a9ebfb075329a7e99b 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: opterrors.mli 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (* Error report *)
 
index 87f4c75f06bb35e0d573ef045d57646b30eaa76e..108c1bea5b231e4edab85ba0bc6dc100ca80aefc 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: optmain.ml 12511 2012-05-30 13:29:48Z lefessan $ *)
 
 open Config
 open Clflags
@@ -104,6 +104,7 @@ module Options = Main_args.Make_optcomp_options (struct
   let _a = set make_archive
   let _absname = set Location.absname
   let _annot = set annotations
+  let _binannot = set binary_annotations
   let _c = set compile_only
   let _cc s = c_compiler := Some s
   let _cclib s = ccobjs := Misc.rev_split_words s @ !ccobjs
index 701508af28421a596eaffeed982aff320f81646e..43b1965db57939f1d095765e63e3f585ca2e87d7 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: optmain.mli 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (*
   this "empty" file is here to speed up garbage collection in ocamlopt.opt
index dae174cea23f96a1426a7bf550e0da8031084511..0ea62f359b8f701950450921bd52810f76133dc5 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: pparse.ml 12387 2012-04-20 15:33:56Z doligez $ *)
 
 open Format
 
@@ -22,7 +22,7 @@ let preprocess sourcefile =
   match !Clflags.preprocessor with
     None -> sourcefile
   | Some pp ->
-      let tmpfile = Filename.temp_file "camlpp" "" in
+      let tmpfile = Filename.temp_file "ocamlpp" "" in
       let comm = Printf.sprintf "%s %s > %s"
                                 pp (Filename.quote sourcefile) tmpfile
       in
index 96c2594f1e578e424badef7c602f93e67f0d08ef..754f5f245fcf84396127b705d6341258230d8e85 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: pparse.mli 12058 2012-01-20 14:23:34Z frisch $ *)
 
 open Format
 
index 6475be9070e0dca1ff8b5581ea9bf83a95d8d5ca..e01c34f67e011bc0be2736a87cdeb6821e17fc63 100644 (file)
@@ -10,7 +10,7 @@
 #                                                                       #
 #########################################################################
 
-# $Id$
+# $Id: Makefile 12118 2012-02-03 16:04:49Z doligez $
 
 include ../config/Makefile
 
index 9c30c8892d847b192fc9870f9ede499c72cb4036..0ec8e3e9bea23e905dad2e323e6f855c2f54e10d 100644 (file)
@@ -1,4 +1,4 @@
-        OCaml emacs mode, snapshot of $Date$
+        OCaml emacs mode, snapshot of $Date: 2012-02-10 17:15:24 +0100 (Fri, 10 Feb 2012) $
 
 The files in this archive define a caml-mode for emacs, for editing
 OCaml and Objective Label programs, as well as an
index da54cd0dc0f6d807fbd7a014c078e4014fdae853..a0edfd83b5043060a6317931118fe735dc358ba6 100644 (file)
@@ -10,7 +10,7 @@
 ;(*                                                                     *)
 ;(***********************************************************************)
 
-;(* $Id$ *)
+;(* $Id: caml-compat.el 11156 2011-07-27 14:17:02Z doligez $ *)
 
 ;; function definitions for old versions of emacs
 
index 06cabf30259928e2a4ca9f09c3210495cad2a2d5..b9a7fabc43e8bfa89821d234764f3eddfe7419b3 100644 (file)
@@ -10,7 +10,7 @@
 ;(*                                                                     *)
 ;(***********************************************************************)
 
-;(* $Id$ *)
+;(* $Id: caml-emacs.el 11156 2011-07-27 14:17:02Z doligez $ *)
 
 ;; for caml-help.el
 (defalias 'caml-info-other-window 'info-other-window)
index 12c318c90ff33bec2ea3d479baca110a55b6c31d..b48c0be5af42a5df3c91f142c2643d1cf61104a0 100644 (file)
@@ -10,7 +10,7 @@
 ;(*                                                                     *)
 ;(***********************************************************************)
 
-;(* $Id$ *)
+;(* $Id: caml-font-old.el 11156 2011-07-27 14:17:02Z doligez $ *)
 
 ;; useful colors
 
index 101963294fe864ffe01dd4ec365f90b75a2de23b..73497566bdb242bc6d9fbddfde1a0f5ff1b4615c 100644 (file)
@@ -10,7 +10,7 @@
 ;(*                                                                     *)
 ;(***********************************************************************)
 
-;(* $Id$ *)
+;(* $Id: caml-help.el 11156 2011-07-27 14:17:02Z doligez $ *)
 
 ;; caml-info.el --- contextual completion and help to caml-mode
 
index 25376eb2a4e98c8124fc62e5b1f9ffb86356d035..c8314a64f139e341e57db68138aa62c60f6de182 100644 (file)
@@ -10,7 +10,7 @@
 ;(*                                                                     *)
 ;(***********************************************************************)
 
-;(* $Id$ *)
+;(* $Id: caml-hilit.el 12149 2012-02-10 16:15:24Z doligez $ *)
 
 ; Highlighting patterns for hilit19 under caml-mode
 
index e42a0fc46de51534e03a41e6c1da7dcd4750b7c3..04e22373d5eff536ee3f2b2eadc1b85b57da98ac 100644 (file)
@@ -10,7 +10,7 @@
 ;(*                                                                     *)
 ;(***********************************************************************)
 
-;(* $Id$ *)
+;(* $Id: caml-types.el 12149 2012-02-10 16:15:24Z doligez $ *)
 
 ; An emacs-lisp complement to the "-annot" option of ocamlc and ocamlopt.
 
index 79321e0057219063ba3a74e49638a658ee3837bd..f9eac11ef7348fc54035f9470a8d79b47c965304 100644 (file)
@@ -10,7 +10,7 @@
 ;(*                                                                     *)
 ;(***********************************************************************)
 
-;(* $Id$ *)
+;(* $Id: caml-xemacs.el 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (require 'overlay)
 
index d1127f789c193f4957a5d188f9f94400ee0fe282..b1413234a2b20cc20eefbc3aae5e9c102ccea6f7 100644 (file)
@@ -10,7 +10,7 @@
 ;(*                                                                     *)
 ;(***********************************************************************)
 
-;(* $Id$ *)
+;(* $Id: caml.el 12152 2012-02-13 17:48:41Z doligez $ *)
 
 ;;; caml.el --- OCaml code editing commands for Emacs
 
index 0fd353aef0ac01029464021d81c16445324d72fa..b1b2660d8241c6fe23c50a5d90b49fde99789298 100644 (file)
@@ -10,7 +10,7 @@
 ;(*                                                                     *)
 ;(***********************************************************************)
 
-;(* $Id$ *)
+;(* $Id: camldebug.el 12149 2012-02-10 16:15:24Z doligez $ *)
 
 ;;; Run camldebug under Emacs
 ;;; Derived from gdb.el.
index 5b864efcb06e9d9172695e9fe6ef3d30f8f250c3..1b343d0049d1876e17ad5529e10be00e4161a5b0 100644 (file)
@@ -10,7 +10,7 @@
 ;(*                                                                     *)
 ;(***********************************************************************)
 
-;(* $Id$ *)
+;(* $Id: inf-caml.el 12149 2012-02-10 16:15:24Z doligez $ *)
 
 ;;; inf-caml.el --- run the OCaml toplevel in an Emacs buffer
 
index 2a6aadbfb7522a59110ddcaeaf98971f62aa51dc..47a4deb85acac15e65841099363cdb3a2ecf844b 100644 (file)
@@ -12,7 +12,7 @@
 ;(*                                                                     *)
 ;(***********************************************************************)
 
-;(* $Id$ *)
+;(* $Id: ocamltags.in 11156 2011-07-27 14:17:02Z doligez $ *)
 
 ;; Copyright (C) 1998 Ian Zimmerman <itz@transbay.net>
 ;;  This program is free software; you can redistribute it and/or
@@ -24,7 +24,7 @@
 ;;  but WITHOUT ANY WARRANTY; without even the implied warranty of
 ;;  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 ;;  General Public License for more details.
-;; $Id$
+;; $Id: ocamltags.in 11156 2011-07-27 14:17:02Z doligez $
 
 (require 'caml)
 
diff --git a/experimental/doligez/checkheaders b/experimental/doligez/checkheaders
deleted file mode 100755 (executable)
index 044080f..0000000
+++ /dev/null
@@ -1,159 +0,0 @@
-#!/bin/sh
-
-#######################################################################
-#                                                                     #
-#                                OCaml                                #
-#                                                                     #
-#          Damien Doligez, projet Gallium, INRIA Rocquencourt         #
-#                                                                     #
-#  Copyright 2011 Institut National de Recherche en Informatique et   #
-#  en Automatique.  All rights reserved.  This file is distributed    #
-#  under the terms of the Q Public License version 1.0.               #
-#                                                                     #
-#######################################################################
-
-(
-case $# in
-  0) find . -type f -print;;
-  *) echo $1;;
-esac
-) | \
-while read f; do 
-awk -f - "$f" <<\EOF
-
-function checkline (x) {
-  return ( $0 ~ ("^.{0,4}" x) );
-}
-
-function hrule () {
-  return (checkline("[*#]{69}"));
-}
-
-function blank () {
-  return (checkline(" {69}"));
-}
-
-function ocaml () {
-  return (checkline(" {32}OCaml {32}") \
-       || checkline(" {35}OCaml {32}") \
-       || checkline("                 MLTk, Tcl/Tk interface of OCaml                     ") \
-       || checkline("                         OCaml LablTk library                          ") \
-       || checkline("                             ocamlbuild                              ") \
-       || checkline("                             OCamldoc                                ") \
-  );
-}
-
-function any () {
-  return (checkline(".{69}"));
-}
-
-function copy1 () {
-  return (checkline("  Copyright +[-0-9]+ +Institut +National +de +Recherche +en +Informatique +et   "));
-}
-
-function copy2 () {
-  return (checkline("  en Automatique"));
-}
-
-function err () {
-  printf ("File \"%s\", line %d:\n", FILENAME, FNR);
-  printf ("  Error: line %d of header is wrong.\n", FNR + offset);
-  print $0;
-}
-
-function add_ignore_re (x) {
-    ignore_re[++ignore_re_index] = x;
-}
-
-function add_exception (x) {
-    exception[++exception_index] = x;
-}
-
-FNR == 1 {
-  offset = 0;
-  add_ignore_re("/\\.svn/");
-  add_ignore_re("/\\.depend(\\.nt)?$");
-  add_ignore_re("/\\.ignore$");
-  add_ignore_re("\\.gif$");
-  add_ignore_re("/[A-Z]*$");
-  add_ignore_re("/README\\.[^/]*$");
-  add_ignore_re("/Changes$");
-  add_ignore_re("\\.mlpack$");
-  add_ignore_re("\\.mllib$");
-  add_ignore_re("\\.mltop$");
-  add_ignore_re("\\.clib$");
-  add_ignore_re("\\.odocl$");
-  add_ignore_re("\\.itarget$");
-  add_ignore_re("^\\./boot/");
-  add_ignore_re("^\\./camlp4/test/");
-  add_ignore_re("^\\./camlp4/unmaintained/");
-  add_ignore_re("^\\./config/gnu/");
-  add_ignore_re("^\\./experimental/");
-  add_ignore_re("^\\./ocamlbuild/examples/");
-  add_ignore_re("^\\./ocamlbuild/test/");
-  add_ignore_re("^\\./otherlibs/labltk/builtin/");
-  add_ignore_re("^\\./otherlibs/labltk/examples_");
-  add_ignore_re("^\\./testsuite/");
-  for (i in ignore_re){
-      if (FILENAME ~ ignore_re[i]) { nextfile; }
-  }
-  add_exception("./asmrun/m68k.S");                     # obsolete
-  add_exception("./build/camlp4-bootstrap-recipe.txt");
-  add_exception("./build/new-build-system");
-  add_exception("./ocamlbuild/ChangeLog");
-  add_exception("./ocamlbuild/manual/myocamlbuild.ml"); # TeX input file ?
-  add_exception("./ocamlbuild/manual/trace.out");       # TeX input file
-  add_exception("./ocamldoc/Changes.txt");
-  add_exception("./ocamldoc/ocamldoc.sty");             # public domain
-  add_exception("./otherlibs/labltk/browser/help.txt");
-  add_exception("./otherlibs/labltk/camltk/modules");   # generated
-  add_exception("./otherlibs/labltk/labltk/modules");   # generated
-  add_exception("./tools/objinfo_helper.c");            # non-INRIA
-  add_exception("./tools/magic");                       # public domain ?
-  add_exception("./Upgrading");
-  add_exception("./win32caml/inriares.h");              # generated
-  add_exception("./win32caml/ocaml.rc");                # generated
-  add_exception("./win32caml/resource.h");              # generated
-  for (i in exception){
-      if (FILENAME == exception[i]) { nextfile; }
-  }
-}
-
-# 1 [!hrule]     #!
-# 2 [!hrule]     empty
-# 3 hrule
-# 4 [blank]
-# 5 ocaml        title
-# 6 blank
-# 7 any          author
-# 8 [!blank]     author
-# 9 [!blank]     author
-#10 blank
-#11 copy1        copyright
-#12 copy2        copyright
-#13 any          copyright
-#14 [!blank]     copyright
-#15 [!blank]     copyright
-#16 blank
-#17 hrule
-
-FNR + offset == 1 && hrule() { ++offset; }
-FNR + offset == 2 && hrule() { ++offset; }
-FNR + offset == 3 && ! hrule() { err(); nextfile; }
-FNR + offset == 4 && ! blank() { ++offset; }
-FNR + offset == 5 && ! ocaml() { err(); nextfile; }
-FNR + offset == 6 && ! blank() { err(); nextfile; }
-FNR + offset == 7 && ! any() { err(); nextfile; }
-FNR + offset == 8 && blank() { ++offset; }
-FNR + offset == 9 && blank() { ++offset; }
-FNR + offset ==10 && ! blank() { err(); nextfile; }
-FNR + offset ==11 && ! copy1() { err(); nextfile; }
-FNR + offset ==12 && ! copy2() { err(); nextfile; }
-FNR + offset ==13 && ! any() { err(); nextfile; }
-FNR + offset ==14 && blank() { ++offset; }
-FNR + offset ==15 && blank() { ++offset; }
-FNR + offset ==16 && ! blank() { err(); nextfile; }
-FNR + offset ==17 && ! hrule() { err(); nextfile; }
-
-EOF
-done
diff --git a/experimental/garrigue/.cvsignore b/experimental/garrigue/.cvsignore
deleted file mode 100644 (file)
index 4c57147..0000000
+++ /dev/null
@@ -1 +0,0 @@
-*.out *.out2
\ No newline at end of file
diff --git a/experimental/garrigue/caml_set_oid.diffs b/experimental/garrigue/caml_set_oid.diffs
deleted file mode 100644 (file)
index aaaa160..0000000
+++ /dev/null
@@ -1,141 +0,0 @@
-Index: byterun/intern.c
-===================================================================
---- byterun/intern.c   (revision 11929)
-+++ byterun/intern.c   (working copy)
-@@ -27,6 +27,7 @@
- #include "memory.h"
- #include "mlvalues.h"
- #include "misc.h"
-+#include "obj.h"
- #include "reverse.h"
- static unsigned char * intern_src;
-@@ -139,6 +140,14 @@
-         dest = (value *) (intern_dest + 1);
-         *intern_dest = Make_header(size, tag, intern_color);
-         intern_dest += 1 + size;
-+        /* For objects, we need to freshen the oid */
-+        if (tag == Object_tag) {
-+          intern_rec(dest++);
-+          intern_rec(dest++);
-+          caml_set_oid((value)(dest-2));
-+          size -= 2;
-+          if (size == 0) return;
-+        }
-         for(/*nothing*/; size > 1; size--, dest++)
-           intern_rec(dest);
-         goto tailcall;
-Index: byterun/obj.c
-===================================================================
---- byterun/obj.c      (revision 11929)
-+++ byterun/obj.c      (working copy)
-@@ -25,6 +25,7 @@
- #include "minor_gc.h"
- #include "misc.h"
- #include "mlvalues.h"
-+#include "obj.h"
- #include "prims.h"
- CAMLprim value caml_static_alloc(value size)
-@@ -212,6 +213,16 @@
-   return (tag == Field(meths,li) ? Field (meths, li-1) : 0);
- }
-+/* Generate ids on the C side, to avoid races */
-+
-+CAMLprim value caml_set_oid (value obj)
-+{
-+  static value last_oid = 1;
-+  Field(obj,1) = last_oid;
-+  last_oid += 2;
-+  return obj;
-+}
-+
- /* these two functions might be useful to an hypothetical JIT */
- #ifdef CAML_JIT
-Index: byterun/obj.h
-===================================================================
---- byterun/obj.h      (revision 0)
-+++ byterun/obj.h      (revision 0)
-@@ -0,0 +1,28 @@
-+/***********************************************************************/
-+/*                                                                     */
-+/*                                OCaml                                */
-+/*                                                                     */
-+/*        Jacques Garrigue, projet Cristal, INRIA Rocquencourt         */
-+/*                                                                     */
-+/*  Copyright 1996 Institut National de Recherche en Informatique et   */
-+/*  en Automatique.  All rights reserved.  This file is distributed    */
-+/*  under the terms of the GNU Library General Public License, with    */
-+/*  the special exception on linking described in file ../LICENSE.     */
-+/*                                                                     */
-+/***********************************************************************/
-+
-+/* $Id$ */
-+
-+/* Primitives for the Obj and CamlinternalOO modules */
-+
-+#ifndef CAML_OBJ_H
-+#define CAML_OBJ_H
-+
-+#include "misc.h"
-+#include "mlvalues.h"
-+
-+/* Set the OID of an object to a fresh value */
-+/* returns the same object as result */
-+value caml_set_oid (value obj);
-+
-+#endif /* CAML_OBJ_H */
-Index: stdlib/camlinternalOO.ml
-===================================================================
---- stdlib/camlinternalOO.ml   (revision 11929)
-+++ stdlib/camlinternalOO.ml   (working copy)
-@@ -15,23 +15,15 @@
- open Obj
--(**** Object representation ****)
-+(**** OID handling ****)
--let last_id = ref 0
--let new_id () =
--  let id = !last_id in incr last_id; id
-+external set_oid : t -> t = "caml_set_oid" "noalloc"
--let set_id o id =
--  let id0 = !id in
--  Array.unsafe_set (Obj.magic o : int array) 1 id0;
--  id := id0 + 1
--
- (**** Object copy ****)
- let copy o =
--  let o = (Obj.obj (Obj.dup (Obj.repr o))) in
--  set_id o last_id;
--  o
-+  let o =  Obj.dup (Obj.repr o) in
-+  Obj.obj (set_oid o)
- (**** Compression options ****)
- (* Parameters *)
-@@ -355,8 +347,7 @@
-   let obj = Obj.new_block Obj.object_tag table.size in
-   (* XXX Appel de [caml_modify] *)
-   Obj.set_field obj 0 (Obj.repr table.methods);
--  set_id obj last_id;
--  (Obj.obj obj)
-+  Obj.obj (set_oid obj)
- let create_object_opt obj_0 table =
-   if (Obj.magic obj_0 : bool) then obj_0 else begin
-@@ -364,8 +355,7 @@
-     let obj = Obj.new_block Obj.object_tag table.size in
-     (* XXX Appel de [caml_modify] *)
-     Obj.set_field obj 0 (Obj.repr table.methods);
--    set_id obj last_id;
--    (Obj.obj obj)
-+    Obj.obj (set_oid obj)
-   end
- let rec iter_f obj =
diff --git a/experimental/garrigue/coerce.diffs b/experimental/garrigue/coerce.diffs
deleted file mode 100644 (file)
index e90e1fc..0000000
+++ /dev/null
@@ -1,93 +0,0 @@
-Index: typing/ctype.ml
-===================================================================
-RCS file: /net/yquem/devel/caml/repository/csl/typing/ctype.ml,v
-retrieving revision 1.201
-diff -u -r1.201 ctype.ml
---- typing/ctype.ml    5 Apr 2006 02:28:13 -0000       1.201
-+++ typing/ctype.ml    17 May 2006 23:48:22 -0000
-@@ -490,6 +490,31 @@
-     unmark_class_signature sign;
-     Some reason
-+(* Variant for checking principality *)
-+
-+let rec free_nodes_rec ty =
-+  let ty = repr ty in
-+  if ty.level >= lowest_level then begin
-+    if ty.level <= !current_level then raise Exit;
-+    ty.level <- pivot_level - ty.level;
-+    begin match ty.desc with
-+      Tvar ->
-+        raise Exit
-+    | Tobject (ty, _) ->
-+        free_nodes_rec ty
-+    | Tfield (_, _, ty1, ty2) ->
-+        free_nodes_rec ty1; free_nodes_rec ty2
-+    | Tvariant row ->
-+        let row = row_repr row in
-+        iter_row free_nodes_rec {row with row_bound = []};
-+        if not (static_row row) then free_nodes_rec row.row_more
-+    | _    ->
-+        iter_type_expr free_nodes_rec ty
-+    end;
-+  end
-+
-+let has_free_nodes ty =
-+  try free_nodes_rec ty; false with Exit -> true
-                             (**********************)
-                             (*  Type duplication  *)
-Index: typing/ctype.mli
-===================================================================
-RCS file: /net/yquem/devel/caml/repository/csl/typing/ctype.mli,v
-retrieving revision 1.54
-diff -u -r1.54 ctype.mli
---- typing/ctype.mli   5 Apr 2006 02:28:13 -0000       1.54
-+++ typing/ctype.mli   17 May 2006 23:48:22 -0000
-@@ -228,6 +228,9 @@
- val closed_class:
-         type_expr list -> class_signature -> closed_class_failure option
-         (* Check whether all type variables are bound *)
-+val has_free_nodes: type_expr -> bool
-+        (* Check whether there are free type variables, or nodes with
-+           level lower or equal to !current_level *)
- val unalias: type_expr -> type_expr
- val signature_of_class_type: class_type -> class_signature
-Index: typing/typecore.ml
-===================================================================
-RCS file: /net/yquem/devel/caml/repository/csl/typing/typecore.ml,v
-retrieving revision 1.181
-diff -u -r1.181 typecore.ml
---- typing/typecore.ml 16 Apr 2006 23:28:22 -0000      1.181
-+++ typing/typecore.ml 17 May 2006 23:48:22 -0000
-@@ -1183,12 +1183,29 @@
-             let (ty', force) =
-               Typetexp.transl_simple_type_delayed env sty'
-             in
-+            if !Clflags.principal then begin_def ();
-             let arg = type_exp env sarg in
-+            let has_fv =
-+              if !Clflags.principal then begin
-+                end_def ();
-+                let b = has_free_nodes arg.exp_type in
-+                Ctype.unify env arg.exp_type (newvar ());
-+                b
-+              end else
-+                free_variables arg.exp_type <> []
-+            in
-             begin match arg.exp_desc, !self_coercion, (repr ty').desc with
-               Texp_ident(_, {val_kind=Val_self _}), (path,r) :: _,
-               Tconstr(path',_,_) when Path.same path path' ->
-                 r := sexp.pexp_loc :: !r;
-                 force ()
-+            | _ when not has_fv ->
-+                begin try
-+                  let force' = subtype env arg.exp_type ty' in
-+                  force (); force' ()
-+                with Subtype (tr1, tr2) ->
-+                  raise(Error(sexp.pexp_loc, Not_subtype(tr1, tr2)))
-+                end
-             | _ ->
-                 let ty, b = enlarge_type env ty' in
-                 force ();
diff --git a/experimental/garrigue/dirs_multimatch b/experimental/garrigue/dirs_multimatch
deleted file mode 100644 (file)
index b449514..0000000
+++ /dev/null
@@ -1 +0,0 @@
-parsing typing bytecomp driver toplevel
\ No newline at end of file
diff --git a/experimental/garrigue/dirs_poly b/experimental/garrigue/dirs_poly
deleted file mode 100644 (file)
index 3aec606..0000000
+++ /dev/null
@@ -1 +0,0 @@
-bytecomp byterun driver parsing stdlib tools toplevel typing utils otherlibs/labltk/browser/searchpos.ml
diff --git a/experimental/garrigue/fixedtypes.ml b/experimental/garrigue/fixedtypes.ml
deleted file mode 100644 (file)
index a7d7ca4..0000000
+++ /dev/null
@@ -1,77 +0,0 @@
-(* cvs update -r fixedtypes parsing typing *)
-
-(* recursive types *)
-class c = object (self) method m = 1 method s = self end
-module type S = sig type t = private #c end;;
-
-module M : S = struct type t = c end
-module type S' = S with type t = c;;
-
-class d = object inherit c method n = 2 end
-module type S2 = S with type t = private #d;;
-module M2 : S = struct type t = d end;;
-module M3 : S = struct type t = private #d end;;
-
-module T1 = struct
-  type ('a,'b) a = [`A of 'a | `B of 'b]
-  type ('a,'b) b = [`Z | ('a,'b) a]
-end
-module type T2 = sig
-  type a and b
-  val evala : a -> int
-  val evalb : b -> int
-end
-module type T3 = sig
-  type a0 = private [> (a0,b0) T1.a]
-  and b0 = private [> (a0,b0) T1.b]
-end
-module type T4 = sig
-  include T3
-  include T2 with type a = a0 and type b = b0
-end
-module F(X:T4) = struct
-  type a = X.a and b = X.b
-  let a = X.evala (`B `Z)
-  let b = X.evalb (`A(`B `Z))
-  let a2b (x : a) : b = `A x
-  let b2a (x : b) : a = `B x
-end
-module M4 = struct
-  type a = [`A of a | `B of b | `ZA]
-  and b = [`A of a | `B of b | `Z]
-  type a0 = a
-  type b0 = b
-  let rec eval0 = function
-      `A a -> evala a
-    | `B b -> evalb b
-  and evala : a -> int = function
-      #T1.a as x -> 1 + eval0 x
-    | `ZA -> 3
-  and evalb : b -> int = function
-      #T1.a as x -> 1 + eval0 x
-    | `Z -> 7
-end
-module M5 = F(M4)
-
-module M6 : sig
-  class ci : int ->
-    object
-      val x : int
-      method x : int
-      method move : int -> unit
-    end      
-  type c = private #ci
-  val create : int -> c
-end = struct
-  class ci x = object
-    val mutable x : int = x
-    method x = x
-    method move d = x <- x+d
-  end
-  type c = ci
-  let create = new ci
-end
-let f (x : M6.c) = x#move 3; x#x;;
-
-module M : sig type t = private [> `A of bool] end =
-  struct type t = [`A of int] end
diff --git a/experimental/garrigue/gadt-escape-check.diffs b/experimental/garrigue/gadt-escape-check.diffs
deleted file mode 100644 (file)
index 3e4a44e..0000000
+++ /dev/null
@@ -1,519 +0,0 @@
-Index: typing/env.ml
-===================================================================
---- typing/env.ml      (revision 11214)
-+++ typing/env.ml      (working copy)
-@@ -20,6 +20,7 @@
- open Longident
- open Path
- open Types
-+open Btype
- type error =
-@@ -56,7 +57,7 @@
-   cltypes: (Path.t * cltype_declaration) Ident.tbl;
-   summary: summary;
-   local_constraints: bool;
--  level_map: (int * int) list;
-+  gadt_instances: (int * TypeSet.t ref) list;
- }
- and module_components = module_components_repr Lazy.t
-@@ -96,7 +97,7 @@
-   modules = Ident.empty; modtypes = Ident.empty;
-   components = Ident.empty; classes = Ident.empty;
-   cltypes = Ident.empty; 
--  summary = Env_empty; local_constraints = false; level_map = [] }
-+  summary = Env_empty; local_constraints = false; gadt_instances = [] }
- let diff_keys is_local tbl1 tbl2 =
-   let keys2 = Ident.keys tbl2 in
-@@ -286,13 +287,14 @@
-   (* the level is changed when updating newtype definitions *)
-   if !Clflags.principal then begin
-     match level, decl.type_newtype_level with
--      Some level, Some def_level when level < def_level -> raise Not_found
-+      Some level, Some (_, exp_level) when level < exp_level -> raise Not_found
-     | _ -> ()
-   end;
-   match decl.type_manifest with
-   | Some body when decl.type_private = Public
-               || decl.type_kind <> Type_abstract
--              || Btype.has_constr_row body -> (decl.type_params, body)
-+              || Btype.has_constr_row body ->
-+                  (decl.type_params, body, may_map snd decl.type_newtype_level)
-   (* The manifest type of Private abstract data types without
-      private row are still considered unknown to the type system.
-      Hence, this case is caught by the following clause that also handles
-@@ -308,7 +310,7 @@
-   match decl.type_manifest with
-   (* The manifest type of Private abstract data types can still get
-      an approximation using their manifest type. *)
--  | Some body -> (decl.type_params, body)
-+  | Some body -> (decl.type_params, body, may_map snd decl.type_newtype_level)
-   | _ -> raise Not_found
- let find_modtype_expansion path env =
-@@ -453,32 +455,42 @@
- and lookup_cltype =
-   lookup (fun env -> env.cltypes) (fun sc -> sc.comp_cltypes)
--(* Level handling *)
-+(* GADT instance tracking *)
--(* The level map is a list of pairs describing separate segments (lv,lv'),
--   lv < lv', organized in decreasing order.
--   The definition level is obtained by mapping a level in a segment to the
--   high limit of this segment.
--   The definition level of a newtype should be greater or equal to
--   the highest level of the newtypes in its manifest type.
-- *)
-+let add_gadt_instance_level lv env =
-+  {env with
-+   gadt_instances = (lv, ref TypeSet.empty) :: env.gadt_instances}
--let rec map_level lv = function
--  | [] -> lv
--  | (lv1, lv2) :: rem ->
--      if lv > lv2 then lv else
--      if lv >= lv1 then lv2 else map_level lv rem
-+let is_Tlink = function {desc = Tlink _} -> true | _ -> false
--let map_newtype_level env lv = map_level lv env.level_map
-+let gadt_instance_level env t =
-+  let rec find_instance = function
-+      [] -> None
-+    | (lv, r) :: rem ->
-+        if TypeSet.exists is_Tlink !r then
-+          r := TypeSet.fold (fun ty -> TypeSet.add (repr ty)) !r TypeSet.empty;
-+        if TypeSet.mem t !r then Some lv else find_instance rem
-+  in find_instance env.gadt_instances
--(* precondition: lv < lv' *)
--let rec add_level lv lv' = function
--  | [] -> [lv, lv']
--  | (lv1, lv2) :: rem as l ->
--      if lv2 < lv then (lv, lv') :: l else
--      if lv' < lv1 then (lv1, lv2) :: add_level lv lv' rem
--      else add_level (max lv lv1) (min lv' lv2) rem      
-+let add_gadt_instances env lv tl =
-+  let r =
-+    try List.assoc lv env.gadt_instances with Not_found -> assert false in
-+  r := List.fold_right TypeSet.add tl !r
-+(* Only use this after expand_head! *)
-+let add_gadt_instance_chain env lv t =
-+  let r =
-+    try List.assoc lv env.gadt_instances with Not_found -> assert false in
-+  let rec add_instance t =
-+    let t = repr t in
-+    if not (TypeSet.mem t !r) then begin
-+      r := TypeSet.add t !r;
-+      match t.desc with
-+        Tconstr (p, _, memo) ->
-+          may add_instance (find_expans Private p !memo)
-+      | _ -> ()
-+    end
-+  in add_instance t
- (* Expand manifest module type names at the top of the given module type *)
-@@ -497,7 +509,7 @@
- let constructors_of_type ty_path decl =
-   let handle_variants cstrs = 
-     Datarepr.constructor_descrs
--      (Btype.newgenty (Tconstr(ty_path, decl.type_params, ref Mnil)))
-+      (newgenty (Tconstr(ty_path, decl.type_params, ref Mnil)))
-       cstrs decl.type_private
-   in
-   match decl.type_kind with
-@@ -510,7 +522,7 @@
-   match decl.type_kind with
-     Type_record(labels, rep) ->
-       Datarepr.label_descrs
--        (Btype.newgenty (Tconstr(ty_path, decl.type_params, ref Mnil)))
-+        (newgenty (Tconstr(ty_path, decl.type_params, ref Mnil)))
-         labels rep decl.type_private
-   | Type_variant _ | Type_abstract -> []
-@@ -773,14 +785,13 @@
- and add_cltype id ty env =
-   store_cltype id (Pident id) ty env
--let add_local_constraint id info mlv env =
-+let add_local_constraint id info elv env =
-   match info with
--    {type_manifest = Some ty; type_newtype_level = Some lv} ->
--      (* use the newtype level for this definition, lv is the old one *)
--      let env = add_type id {info with type_newtype_level = Some mlv} env in
--      let level_map =
--        if lv < mlv then add_level lv mlv env.level_map else env.level_map in
--      { env with local_constraints = true; level_map = level_map }
-+    {type_manifest = Some ty; type_newtype_level = Some (lv, _)} ->
-+      (* elv is the expansion level, lv is the definition level *)
-+      let env =
-+        add_type id {info with type_newtype_level = Some (lv, elv)} env in
-+      { env with local_constraints = true }
-   | _ -> assert false
- (* Insertion of bindings by name *)
-Index: typing/typecore.ml
-===================================================================
---- typing/typecore.ml (revision 11214)
-+++ typing/typecore.ml (working copy)
-@@ -1989,6 +1989,7 @@
-       end
-   | Pexp_newtype(name, sbody) ->
-       (* Create a fake abstract type declaration for name. *)
-+      let level = get_current_level () in
-       let decl = {
-         type_params = [];
-         type_arity = 0;
-@@ -1996,7 +1997,7 @@
-         type_private = Public;
-         type_manifest = None;
-         type_variance = [];
--        type_newtype_level = Some (get_current_level ());
-+        type_newtype_level = Some (level, level);
-       }
-       in
-       let ty = newvar () in
-@@ -2421,6 +2422,7 @@
-   begin_def ();
-   Ident.set_current_time (get_current_level ()); 
-   let lev = Ident.current_time () in
-+  let env = Env.add_gadt_instance_level lev env in
-   Ctype.init_def (lev+1000);
-   if !Clflags.principal then begin_def (); (* propagation of the argument *)
-   let ty_arg' = newvar () in
-Index: typing/typedecl.ml
-===================================================================
---- typing/typedecl.ml (revision 11214)
-+++ typing/typedecl.ml (working copy)
-@@ -404,7 +404,7 @@
-           else if to_check path' && not (List.mem path' prev_exp) then begin
-             try
-               (* Attempt expansion *)
--              let (params0, body0) = Env.find_type_expansion path' env in
-+              let (params0, body0, _) = Env.find_type_expansion path' env in
-               let (params, body) =
-                 Ctype.instance_parameterized_type params0 body0 in
-               begin
-Index: typing/types.mli
-===================================================================
---- typing/types.mli   (revision 11214)
-+++ typing/types.mli   (working copy)
-@@ -144,9 +144,9 @@
-     type_manifest: type_expr option;
-     type_variance: (bool * bool * bool) list;
-     (* covariant, contravariant, weakly contravariant *)
--    type_newtype_level: int option }
-+    type_newtype_level: (int * int) option }
-+    (* definition level * expansion level *)
--
- and type_kind =
-     Type_abstract
-   | Type_record of
-Index: typing/ctype.ml
-===================================================================
---- typing/ctype.ml    (revision 11214)
-+++ typing/ctype.ml    (working copy)
-@@ -470,7 +470,7 @@
-         free_variables := (ty, real) :: !free_variables
-     | Tconstr (path, tl, _), Some env ->
-         begin try
--          let (_, body) = Env.find_type_expansion path env in
-+          let (_, body, _) = Env.find_type_expansion path env in
-           if (repr body).level <> generic_level then
-             free_variables := (ty, real) :: !free_variables
-         with Not_found -> ()
-@@ -687,7 +687,7 @@
-   try
-     match (Env.find_type p env).type_newtype_level with
-       | None -> Path.binding_time p
--      | Some x -> x
-+      | Some (x, _) -> x
-   with 
-     | _ -> 
-       (* no newtypes in predef *)
-@@ -696,9 +696,13 @@
- let rec update_level env level ty =
-   let ty = repr ty in
-   if ty.level > level then begin
-+    if !Clflags.principal && Env.has_local_constraints env then begin
-+      match Env.gadt_instance_level env ty with
-+        Some lv -> if level < lv then raise (Unify [(ty, newvar2 level)])
-+      | None -> ()
-+    end;
-     match ty.desc with
--      Tconstr(p, tl, abbrev)
--      when level < Env.map_newtype_level env (get_level env p) ->
-+      Tconstr(p, tl, abbrev) when level < get_level env p ->
-         (* Try first to replace an abbreviation by its expansion. *)
-         begin try
-           (* if is_newtype env p then raise Cannot_expand; *)
-@@ -1025,7 +1029,7 @@
-   | Some (env, newtype_lev) ->
-       let existentials = List.map copy cstr.cstr_existentials in
-       let process existential = 
--        let decl = new_declaration (Some newtype_lev) None in
-+        let decl = new_declaration (Some (newtype_lev, newtype_lev)) None in
-         let (id, new_env) =
-           Env.enter_type (get_new_abstract_name ()) decl !env in
-         env := new_env;
-@@ -1271,7 +1275,7 @@
-             end;
-           ty
-       | None ->
--          let (params, body) =
-+          let (params, body, lv) =
-             try find_type_expansion level path env with Not_found ->
-               raise Cannot_expand
-           in
-@@ -1284,6 +1288,15 @@
-               ty.desc <- Tvariant { row with row_name = Some (path, args) }
-           | _ -> ()
-           end;
-+          (* For gadts, remember type as non exportable *)
-+          if !Clflags.principal then begin
-+            match lv with
-+              Some lv -> Env.add_gadt_instances env lv [ty; ty']
-+            | None ->
-+                match Env.gadt_instance_level env ty with
-+                  Some lv -> Env.add_gadt_instances env lv [ty']
-+                | None -> ()
-+          end;
-           ty'
-       end
-   | _ ->
-@@ -1306,15 +1319,7 @@
- let try_expand_once env ty =
-   let ty = repr ty in
-   match ty.desc with
--    Tconstr (p, _, _) ->
--      let ty' = repr (expand_abbrev env ty) in
--      if !Clflags.principal then begin
--        match (Env.find_type p env).type_newtype_level with
--          Some lv when ty.level < Env.map_newtype_level env lv  ->
--            link_type ty ty'
--        | _ -> ()
--      end;
--      ty'
-+    Tconstr (p, _, _) -> repr (expand_abbrev env ty)
-   | _ -> raise Cannot_expand
- let _ = forward_try_expand_once := try_expand_once
-@@ -1324,11 +1329,16 @@
-    May raise Unify, if a recursion was hidden in the type. *)
- let rec try_expand_head env ty =
-   let ty' = try_expand_once env ty in
--  begin try
--    try_expand_head env ty'
--  with Cannot_expand ->
--    ty'
--  end
-+  let ty'' =
-+    try try_expand_head env ty'
-+    with Cannot_expand -> ty'
-+  in
-+  if !Clflags.principal then begin
-+    match Env.gadt_instance_level env ty'' with
-+      None    -> ()
-+    | Some lv -> Env.add_gadt_instance_chain env lv ty
-+  end;
-+  ty''
- (* Expand once the head of a type *)
- let expand_head_once env ty =
-@@ -1405,7 +1415,7 @@
- *)
- let generic_abbrev env path =
-   try
--    let (_, body) = Env.find_type_expansion path env in
-+    let (_, body, _) = Env.find_type_expansion path env in
-     (repr body).level = generic_level
-   with
-     Not_found ->
-@@ -1742,7 +1752,7 @@
- let reify env t =
-   let newtype_level = get_newtype_level () in
-   let create_fresh_constr lev row = 
--      let decl = new_declaration (Some (newtype_level)) None in
-+      let decl = new_declaration (Some (newtype_level, newtype_level)) None in
-       let name = 
-         let name = get_new_abstract_name () in 
-         if row then name ^ "#row" else name
-@@ -2065,7 +2075,7 @@
-         update_level !env t1.level t2;
-         link_type t1 t2
-     | (Tconstr (p1, [], a1), Tconstr (p2, [], a2))
--          when Path.same p1 p2 && actual_mode !env = Old
-+          when Path.same p1 p2 (* && actual_mode !env = Old *)
-             (* This optimization assumes that t1 does not expand to t2
-                (and conversely), so we fall back to the general case
-                when any of the types has a cached expansion. *)
-@@ -2091,6 +2101,15 @@
-   if unify_eq !env t1' t2' then () else
-   let t1 = repr t1 and t2 = repr t2 in
-+  if !Clflags.principal then begin
-+    match Env.gadt_instance_level !env t1',Env.gadt_instance_level !env t2' with
-+      Some lv1, Some lv2 ->
-+        if lv1 > lv2 then Env.add_gadt_instance_chain !env lv1 t2 else
-+        if lv2 > lv2 then Env.add_gadt_instance_chain !env lv2 t1
-+    | Some lv1, None -> Env.add_gadt_instance_chain !env lv1 t2
-+    | None, Some lv2 -> Env.add_gadt_instance_chain !env lv2 t1
-+    | None, None     -> ()
-+  end;
-   if unify_eq !env t1 t1' || not (unify_eq !env t2 t2') then
-     unify3 env t1 t1' t2 t2'
-   else
-Index: typing/env.mli
-===================================================================
---- typing/env.mli     (revision 11214)
-+++ typing/env.mli     (working copy)
-@@ -33,14 +33,19 @@
- val find_cltype: Path.t -> t -> cltype_declaration
- val find_type_expansion:
--    ?use_local:bool -> ?level:int -> Path.t -> t -> type_expr list * type_expr
--val find_type_expansion_opt: Path.t -> t -> type_expr list * type_expr
-+    ?use_local:bool -> ?level:int -> Path.t -> t ->
-+    type_expr list * type_expr * int option
-+val find_type_expansion_opt:
-+    Path.t -> t -> type_expr list * type_expr * int option
- (* Find the manifest type information associated to a type for the sake
-    of the compiler's type-based optimisations. *)
- val find_modtype_expansion: Path.t -> t -> Types.module_type
- val has_local_constraints: t -> bool
--val map_newtype_level: t -> int -> int
-+val add_gadt_instance_level: int -> t -> t
-+val gadt_instance_level: t -> type_expr -> int option
-+val add_gadt_instances: t -> int -> type_expr list -> unit
-+val add_gadt_instance_chain: t -> int -> type_expr -> unit
- (* Lookup by long identifiers *)
-Index: typing/types.ml
-===================================================================
---- typing/types.ml    (revision 11214)
-+++ typing/types.ml    (working copy)
-@@ -146,8 +146,8 @@
-     type_private: private_flag;
-     type_manifest: type_expr option;
-     type_variance: (bool * bool * bool) list;
--    type_newtype_level: int option }
-             (* covariant, contravariant, weakly contravariant *)
-+    type_newtype_level: (int * int) option }
- and type_kind =
-     Type_abstract
-Index: testsuite/tests/typing-gadts/test.ml
-===================================================================
---- testsuite/tests/typing-gadts/test.ml       (revision 11214)
-+++ testsuite/tests/typing-gadts/test.ml       (working copy)
-@@ -159,17 +159,21 @@
- let ky x y = ignore (x = y); x ;;
-+let test : type a. a t -> a =
-+  function Int -> ky (1 : a) 1
-+;;
-+
- let test : type a. a t -> a = fun x ->
--  let r = match x with Int -> ky (1 : a) 1
-+  let r = match x with Int -> ky (1 : a) 1  (* fails *)
-   in r
- ;;
- let test : type a. a t -> a = fun x ->
--  let r = match x with Int -> ky 1 (1 : a)
-+  let r = match x with Int -> ky 1 (1 : a)  (* fails *)
-   in r
- ;;
- let test : type a. a t -> a = fun x ->
--  let r = match x with Int -> (1 : a)
--  in r (* fails too *)
-+  let r = match x with Int -> (1 : a)       (* ok! *)
-+  in r
- ;;
- let test : type a. a t -> a = fun x ->
-   let r : a = match x with Int -> 1
-@@ -178,7 +182,7 @@
- let test2 : type a. a t -> a option = fun x ->
-   let r = ref None in
-   begin match x with Int -> r := Some (1 : a) end;
--  !r (* normalized to int option *)
-+  !r (* ok *)
- ;;
- let test2 : type a. a t -> a option = fun x ->
-   let r : a option ref = ref None in
-@@ -190,19 +194,19 @@
-   let u = ref None in
-   begin match x with Int -> r := Some 1; u := !r end;
-   !u
--;; (* fail *)
-+;; (* ok (u non-ambiguous) *)
- let test2 : type a. a t -> a option = fun x ->
-   let r : a option ref = ref None in
-   let u = ref None in
-   begin match x with Int -> u := Some 1; r := !u end;
-   !u
--;; (* fail *)
-+;; (* fails because u : (int | a) option ref *)
- let test2 : type a. a t -> a option = fun x ->
-   let u = ref None in
-   let r : a option ref = ref None in
-   begin match x with Int -> r := Some 1; u := !r end;
-   !u
--;; (* fail *)
-+;; (* ok *)
- let test2 : type a. a t -> a option = fun x ->
-   let u = ref None in
-   let a =
-@@ -210,32 +214,32 @@
-     begin match x with Int -> r := Some 1; u := !r end;
-     !u
-   in a
--;; (* fail *)
-+;; (* ok *)
- (* Effect of external consraints *)
- let f (type a) (x : a t) y =
-   ignore (y : a);
--  let r = match x with Int -> (y : a) in (* fails *)
-+  let r = match x with Int -> (y : a) in (* ok *)
-   r
- ;;
- let f (type a) (x : a t) y =
-   let r = match x with Int -> (y : a) in
--  ignore (y : a); (* fails *)
-+  ignore (y : a); (* ok *)
-   r
- ;;
- let f (type a) (x : a t) y =
-   ignore (y : a);
--  let r = match x with Int -> y in
-+  let r = match x with Int -> y in (* ok *)
-   r
- ;;
- let f (type a) (x : a t) y =
-   let r = match x with Int -> y in
--  ignore (y : a);
-+  ignore (y : a); (* ok *)
-   r
- ;;
- let f (type a) (x : a t) (y : a) =
--  match x with Int -> y (* should return an int! *)
-+  match x with Int -> y (* returns 'a *)
- ;;
- (* Pattern matching *)
-@@ -307,4 +311,4 @@
-   | {left=TE TC; right=D [|1.0|]} -> 14
-   | {left=TA; right=D 0} -> -1
-   | {left=TA; right=D z} -> z
--;; (* warn *)
-+;; (* ok *)
diff --git a/experimental/garrigue/marshal_objects.diffs b/experimental/garrigue/marshal_objects.diffs
deleted file mode 100644 (file)
index bb9b4dd..0000000
+++ /dev/null
@@ -1,800 +0,0 @@
-? bytecomp/alpha_eq.ml
-Index: bytecomp/lambda.ml
-===================================================================
-RCS file: /net/yquem/devel/caml/repository/csl/bytecomp/lambda.ml,v
-retrieving revision 1.44
-diff -u -r1.44 lambda.ml
---- bytecomp/lambda.ml 25 Aug 2005 15:35:16 -0000      1.44
-+++ bytecomp/lambda.ml 2 Feb 2006 05:08:56 -0000
-@@ -287,9 +287,10 @@
-     let compare = compare
-   end)
--let free_ids get l =
-+let free_ids get used l =
-   let fv = ref IdentSet.empty in
-   let rec free l =
-+    let old = !fv in
-     iter free l;
-     fv := List.fold_right IdentSet.add (get l) !fv;
-     match l with
-@@ -307,17 +308,20 @@
-         fv := IdentSet.remove v !fv
-     | Lassign(id, e) ->
-         fv := IdentSet.add id !fv
-+    | Lifused(id, e) ->
-+        if used && not (IdentSet.mem id old) then fv := IdentSet.remove id !fv
-     | Lvar _ | Lconst _ | Lapply _
-     | Lprim _ | Lswitch _ | Lstaticraise _
-     | Lifthenelse _ | Lsequence _ | Lwhile _
--    | Lsend _ | Levent _ | Lifused _ -> ()
-+    | Lsend _ | Levent _ -> ()
-   in free l; !fv
--let free_variables l =
--  free_ids (function Lvar id -> [id] | _ -> []) l
-+let free_variables ?(ifused=false) l =
-+  free_ids (function Lvar id -> [id] | _ -> []) ifused l
- let free_methods l =
--  free_ids (function Lsend(Self, Lvar meth, obj, _) -> [meth] | _ -> []) l
-+  free_ids (function Lsend(Self, Lvar meth, obj, _) -> [meth] | _ -> [])
-+    false l
- (* Check if an action has a "when" guard *)
- let raise_count = ref 0
-Index: bytecomp/lambda.mli
-===================================================================
-RCS file: /net/yquem/devel/caml/repository/csl/bytecomp/lambda.mli,v
-retrieving revision 1.42
-diff -u -r1.42 lambda.mli
---- bytecomp/lambda.mli        25 Aug 2005 15:35:16 -0000      1.42
-+++ bytecomp/lambda.mli        2 Feb 2006 05:08:56 -0000
-@@ -177,7 +177,7 @@
- val iter: (lambda -> unit) -> lambda -> unit
- module IdentSet: Set.S with type elt = Ident.t
--val free_variables: lambda -> IdentSet.t
-+val free_variables: ?ifused:bool -> lambda -> IdentSet.t
- val free_methods: lambda -> IdentSet.t
- val transl_path: Path.t -> lambda
-Index: bytecomp/translclass.ml
-===================================================================
-RCS file: /net/yquem/devel/caml/repository/csl/bytecomp/translclass.ml,v
-retrieving revision 1.38
-diff -u -r1.38 translclass.ml
---- bytecomp/translclass.ml    13 Aug 2005 20:59:37 -0000      1.38
-+++ bytecomp/translclass.ml    2 Feb 2006 05:08:56 -0000
-@@ -46,6 +46,10 @@
- let lfield v i = Lprim(Pfield i, [Lvar v])
-+let ltuple l = Lprim(Pmakeblock(0,Immutable), l)
-+
-+let lprim name args = Lapply(oo_prim name, args)
-+
- let transl_label l = share (Const_immstring l)
- let rec transl_meth_list lst =
-@@ -68,8 +72,8 @@
-                                                     Lvar offset])])]))
- let transl_val tbl create name =
--  Lapply (oo_prim (if create then "new_variable" else "get_variable"),
--          [Lvar tbl; transl_label name])
-+  lprim (if create then "new_variable" else "get_variable")
-+    [Lvar tbl; transl_label name]
- let transl_vals tbl create vals rem =
-   List.fold_right
-@@ -82,7 +86,7 @@
-     (fun (nm, id) rem ->
-        try
-          (nm, id,
--          Lapply(oo_prim "get_method", [Lvar tbl; Lvar (Meths.find nm meths)]))
-+          lprim "get_method" [Lvar tbl; Lvar (Meths.find nm meths)])
-          :: rem
-        with Not_found -> rem)
-     inh_meths []
-@@ -97,17 +101,15 @@
-   let (inh_init, obj_init, has_init) = init obj' in
-   if obj_init = lambda_unit then
-     (inh_init,
--     Lapply (oo_prim (if has_init then "create_object_and_run_initializers"
--                      else"create_object_opt"),
--             [obj; Lvar cl]))
-+     lprim (if has_init then "create_object_and_run_initializers"
-+            else"create_object_opt")
-+       [obj; Lvar cl])
-   else begin
-    (inh_init,
--    Llet(Strict, obj',
--            Lapply (oo_prim "create_object_opt", [obj; Lvar cl]),
-+    Llet(Strict, obj', lprim "create_object_opt" [obj; Lvar cl],
-          Lsequence(obj_init,
-                    if not has_init then Lvar obj' else
--                   Lapply (oo_prim "run_initializers_opt",
--                         [obj; Lvar obj'; Lvar cl]))))
-+                   lprim "run_initializers_opt" [obj; Lvar obj'; Lvar cl])))
-   end
- let rec build_object_init cl_table obj params inh_init obj_init cl =
-@@ -203,14 +205,13 @@
- let bind_method tbl lab id cl_init =
--  Llet(StrictOpt, id, Lapply (oo_prim "get_method_label",
--                              [Lvar tbl; transl_label lab]),
-+  Llet(StrictOpt, id, lprim "get_method_label" [Lvar tbl; transl_label lab],
-        cl_init)
--let bind_methods tbl meths vals cl_init =
--  let methl = Meths.fold (fun lab id tl -> (lab,id) :: tl) meths [] in
-+let bind_methods tbl methl vals cl_init =
-   let len = List.length methl and nvals = List.length vals in
--  if len < 2 && nvals = 0 then Meths.fold (bind_method tbl) meths cl_init else
-+  if len < 2 && nvals = 0 then
-+    List.fold_right (fun (n,i) -> bind_method tbl n i) methl cl_init else
-   if len = 0 && nvals < 2 then transl_vals tbl true vals cl_init else
-   let ids = Ident.create "ids" in
-   let i = ref len in
-@@ -229,21 +230,19 @@
-              vals' cl_init)
-   in
-   Llet(StrictOpt, ids,
--       Lapply (oo_prim getter,
--               [Lvar tbl; transl_meth_list (List.map fst methl)] @ names),
-+       lprim getter
-+         ([Lvar tbl; transl_meth_list (List.map fst methl)] @ names),
-        List.fold_right
--         (fun (lab,id) lam -> decr i; Llet(StrictOpt, id, lfield ids !i, lam))
-+         (fun (lab,id) lam -> decr i; Llet(Alias, id, lfield ids !i, lam))
-          methl cl_init)
- let output_methods tbl methods lam =
-   match methods with
-     [] -> lam
-   | [lab; code] ->
--      lsequence (Lapply(oo_prim "set_method", [Lvar tbl; lab; code])) lam
-+      lsequence (lprim "set_method" [Lvar tbl; lab; code]) lam
-   | _ ->
--      lsequence (Lapply(oo_prim "set_methods",
--                        [Lvar tbl; Lprim(Pmakeblock(0,Immutable), methods)]))
--        lam
-+      lsequence (lprim "set_methods" [Lvar tbl; ltuple methods]) lam
- let rec ignore_cstrs cl =
-   match cl.cl_desc with
-@@ -266,7 +265,8 @@
-            Llet (Strict, obj_init, 
-                  Lapply(Lprim(Pfield 1, [lpath]), Lvar cla ::
-                       if top then [Lprim(Pfield 3, [lpath])] else []),
--                 bind_super cla super cl_init))
-+                 bind_super cla super cl_init),
-+           [], [])
-       | _ ->
-           assert false
-       end
-@@ -278,10 +278,11 @@
-             match field with
-               Cf_inher (cl, vals, meths) ->
-                 let cl_init = output_methods cla methods cl_init in
--                let inh_init, cl_init =
-+                let (inh_init, cl_init, meths', vals') =
-                   build_class_init cla false
-                     (vals, meths_super cla str.cl_meths meths)
-                     inh_init cl_init msubst top cl in
-+                let cl_init = bind_methods cla meths' vals' cl_init in
-                 (inh_init, cl_init, [], values)
-             | Cf_val (name, id, exp) ->
-                 (inh_init, cl_init, methods, (name, id)::values)
-@@ -304,29 +305,37 @@
-                 (inh_init, cl_init, methods, vals @ values)
-             | Cf_init exp ->
-                 (inh_init,
--                 Lsequence(Lapply (oo_prim "add_initializer",
--                                   Lvar cla :: msubst false (transl_exp exp)),
-+                 Lsequence(lprim "add_initializer"
-+                             (Lvar cla :: msubst false (transl_exp exp)),
-                            cl_init),
-                  methods, values))
-           str.cl_field
-           (inh_init, cl_init, [], [])
-       in
-       let cl_init = output_methods cla methods cl_init in
--      (inh_init, bind_methods cla str.cl_meths values cl_init)
-+      (* inh_init, bind_methods cla str.cl_meths values cl_init *)
-+      let methods =  Meths.fold (fun n i l -> (n,i)::l) str.cl_meths [] in
-+      (inh_init, cl_init, methods, values)
-   | Tclass_fun (pat, vals, cl, _) ->
--      let (inh_init, cl_init) =
-+      let (inh_init, cl_init, methods, values) =
-         build_class_init cla cstr super inh_init cl_init msubst top cl
-       in
-+      let fv = free_variables ~ifused:true cl_init in
-+      let vals = List.filter (fun (id,_) -> IdentSet.mem id fv) vals in
-       let vals = List.map (function (id, _) -> (Ident.name id, id)) vals in
--      (inh_init, transl_vals cla true vals cl_init)
-+      (* inh_init, transl_vals cla true vals cl_init *)
-+      (inh_init, cl_init, methods, vals @ values)
-   | Tclass_apply (cl, exprs) ->
-       build_class_init cla cstr super inh_init cl_init msubst top cl
-   | Tclass_let (rec_flag, defs, vals, cl) ->
--      let (inh_init, cl_init) =
-+      let (inh_init, cl_init, methods, values) =
-         build_class_init cla cstr super inh_init cl_init msubst top cl
-       in
-+      let fv = free_variables ~ifused:true cl_init in
-+      let vals = List.filter (fun (id,_) -> IdentSet.mem id fv) vals in
-       let vals = List.map (function (id, _) -> (Ident.name id, id)) vals in
--      (inh_init, transl_vals cla true vals cl_init)
-+      (* inh_init, transl_vals cla true vals cl_init *)
-+      (inh_init, cl_init, methods, vals @ values)
-   | Tclass_constraint (cl, vals, meths, concr_meths) ->
-       let virt_meths =
-         List.filter (fun lab -> not (Concr.mem lab concr_meths)) meths in
-@@ -358,23 +367,34 @@
-               cl_init valids in
-           (inh_init,
-            Llet (Strict, inh, 
--               Lapply(oo_prim "inherits", narrow_args @
--                      [lpath; Lconst(Const_pointer(if top then 1 else 0))]),
-+               lprim "inherits"
-+                   (narrow_args @
-+                    [lpath; Lconst(Const_pointer(if top then 1 else 0))]),
-                  Llet(StrictOpt, obj_init, lfield inh 0,
-                  Llet(Alias, inh_vals, lfield inh 1,
--                 Llet(Alias, inh_meths, lfield inh 2, cl_init)))))
-+                 Llet(Alias, inh_meths, lfield inh 2, cl_init)))),
-+          [], [])
-       | _ ->
-         let core cl_init =
-             build_class_init cla true super inh_init cl_init msubst top cl
-         in
-         if cstr then core cl_init else
--          let (inh_init, cl_init) =
--            core (Lsequence (Lapply (oo_prim "widen", [Lvar cla]), cl_init))
-+          let (inh_init, cl_init, methods, values) =
-+            core (Lsequence (lprim "widen" [Lvar cla], cl_init))
-           in
--          (inh_init,
--           Lsequence(Lapply (oo_prim "narrow", narrow_args), cl_init))
-+          let cl_init = bind_methods cla methods values cl_init in
-+          (inh_init, Lsequence(lprim "narrow" narrow_args, cl_init), [], [])
-       end
-+let build_class_init cla env inh_init obj_init msubst top cl =
-+  let inh_init = List.rev inh_init in
-+  let (inh_init, cl_init, methods, values) =
-+    build_class_init cla true ([],[]) inh_init obj_init msubst top cl in
-+  assert (inh_init = []);
-+  if IdentSet.mem env (free_variables ~ifused:true cl_init)
-+  then bind_methods cla methods (("", env) :: values) cl_init
-+  else Llet(Alias, env, lambda_unit, bind_methods cla methods values cl_init)
-+
- let rec build_class_lets cl =
-   match cl.cl_desc with
-     Tclass_let (rec_flag, defs, vals, cl) ->
-@@ -459,16 +479,16 @@
-     Strict, new_init, lfunction [obj_init] obj_init',
-     Llet(
-     Alias, cla, transl_path path,
--    Lprim(Pmakeblock(0, Immutable),
--          [Lapply(Lvar new_init, [lfield cla 0]);
--           lfunction [table]
--             (Llet(Strict, env_init,
--                   Lapply(lfield cla 1, [Lvar table]),
--                   lfunction [envs]
--                     (Lapply(Lvar new_init,
--                             [Lapply(Lvar env_init, [Lvar envs])]))));
--           lfield cla 2;
--           lfield cla 3])))
-+    ltuple
-+      [Lapply(Lvar new_init, [lfield cla 0]);
-+       lfunction [table]
-+         (Llet(Strict, env_init,
-+               Lapply(lfield cla 1, [Lvar table]),
-+               lfunction [envs]
-+                 (Lapply(Lvar new_init,
-+                         [Lapply(Lvar env_init, [Lvar envs])]))));
-+       lfield cla 2;
-+       lfield cla 3]))
-   with Exit ->
-     lambda_unit
-@@ -541,7 +561,7 @@
-   open CamlinternalOO
-   let builtin_meths arr self env env2 body =
-     let builtin, args = builtin_meths self env env2 body in
--    if not arr then [Lapply(oo_prim builtin, args)] else
-+    if not arr then [lprim builtin args] else
-     let tag = match builtin with
-       "get_const" -> GetConst
-     | "get_var"   -> GetVar
-@@ -599,7 +619,8 @@
-   (* Prepare for heavy environment handling *)
-   let tables = Ident.create (Ident.name cl_id ^ "_tables") in
--  let (top_env, req) = oo_add_class tables in
-+  let table_init = ref None in
-+  let (top_env, req) = oo_add_class tables table_init in
-   let top = not req in
-   let cl_env, llets = build_class_lets cl in
-   let new_ids = if top then [] else Env.diff top_env cl_env in
-@@ -633,6 +654,7 @@
-         begin try
-           (* Doesn't seem to improve size for bytecode *)
-           (* if not !Clflags.native_code then raise Not_found; *)
-+          if !Clflags.debug then raise Not_found;
-           builtin_meths arr [self] env env2 (lfunction args body')
-         with Not_found ->
-           [lfunction (self :: args)
-@@ -665,15 +687,8 @@
-     build_object_init_0 cla [] cl copy_env subst_env top ids in
-   if not (Translcore.check_recursive_lambda ids obj_init) then
-     raise(Error(cl.cl_loc, Illegal_class_expr));
--  let inh_init' = List.rev inh_init in
--  let (inh_init', cl_init) =
--    build_class_init cla true ([],[]) inh_init' obj_init msubst top cl
--  in
--  assert (inh_init' = []);
--  let table = Ident.create "table"
--  and class_init = Ident.create (Ident.name cl_id ^ "_init")
--  and env_init = Ident.create "env_init"
--  and obj_init = Ident.create "obj_init" in
-+  let cl_init = build_class_init cla env2 inh_init obj_init msubst top cl in
-+  let obj_init = Ident.create "obj_init" in
-   let pub_meths =
-     List.sort
-       (fun s s' -> compare (Btype.hash_variant s) (Btype.hash_variant s'))
-@@ -685,42 +700,44 @@
-       let name' = List.assoc tag rev_map in
-       if name' <> name then raise(Error(cl.cl_loc, Tags(name, name'))))
-     tags pub_meths;
-+  let pos = cl.cl_loc.Location.loc_end in
-+  let filepos = [transl_label pos.Lexing.pos_fname;
-+                 Lconst(Const_base(Const_int pos.Lexing.pos_cnum))] in
-   let ltable table lam =
--    Llet(Strict, table,
--         Lapply (oo_prim "create_table", [transl_meth_list pub_meths]), lam)
-+    Llet(Strict, table, lprim "create_table" [transl_meth_list pub_meths], lam)
-   and ldirect obj_init =
-     Llet(Strict, obj_init, cl_init,
--         Lsequence(Lapply (oo_prim "init_class", [Lvar cla]),
-+         Lsequence(lprim "init_class_shared" (Lvar cla :: filepos),
-                    Lapply(Lvar obj_init, [lambda_unit])))
-   in
-   (* Simplest case: an object defined at toplevel (ids=[]) *)
-   if top && ids = [] then llets (ltable cla (ldirect obj_init)) else
-+  let table = Ident.create "table"
-+  and class_init = Ident.create (Ident.name cl_id ^ "_init")
-+  and env_init = Ident.create (Ident.name cl_id ^ "_env_init") in
-+  let cl_init_fun = Lfunction(Curried, [cla], cl_init) in
-   let concrete =
-     ids = [] ||
-     Typeclass.virtual_methods (Ctype.signature_of_class_type cl.cl_type) = []
--  and lclass lam =
--    let cl_init = llets (Lfunction(Curried, [cla], cl_init)) in
-+  and lclass cl_init lam =
-     Llet(Strict, class_init, cl_init, lam (free_variables cl_init))
-   and lbody fv =
-     if List.for_all (fun id -> not (IdentSet.mem id fv)) ids then
--      Lapply (oo_prim "make_class",[transl_meth_list pub_meths;
--                                  Lvar class_init])
-+      lprim "make_class"
-+        (transl_meth_list pub_meths :: Lvar class_init :: filepos)
-     else
-       ltable table (
-       Llet(
-       Strict, env_init, Lapply(Lvar class_init, [Lvar table]),
--      Lsequence(
--      Lapply (oo_prim "init_class", [Lvar table]),
--      Lprim(Pmakeblock(0, Immutable),
--          [Lapply(Lvar env_init, [lambda_unit]);
--           Lvar class_init; Lvar env_init; lambda_unit]))))
-+      Lsequence(lprim "init_class_shared" (Lvar table :: filepos),
-+                ltuple [Lapply(Lvar env_init, [lambda_unit]);
-+                      Lvar class_init; Lvar env_init; lambda_unit])))
-   and lbody_virt lenvs =
--    Lprim(Pmakeblock(0, Immutable),
--          [lambda_unit; Lfunction(Curried,[cla], cl_init); lambda_unit; lenvs])
-+    ltuple [lambda_unit; cl_init_fun; lambda_unit; lenvs]
-   in
-   (* Still easy: a class defined at toplevel *)
--  if top && concrete then lclass lbody else
-+  if top && concrete then lclass (llets cl_init_fun) lbody else
-   if top then llets (lbody_virt lambda_unit) else
-   (* Now for the hard stuff: prepare for table cacheing *)
-@@ -733,23 +750,16 @@
-   let lenv =
-     let menv =
-       if !new_ids_meths = [] then lambda_unit else
--      Lprim(Pmakeblock(0, Immutable),
--            List.map (fun id -> Lvar id) !new_ids_meths) in
-+      ltuple (List.map (fun id -> Lvar id) !new_ids_meths) in
-     if !new_ids_init = [] then menv else
--    Lprim(Pmakeblock(0, Immutable),
--          menv :: List.map (fun id -> Lvar id) !new_ids_init)
-+    ltuple (menv :: List.map (fun id -> Lvar id) !new_ids_init)
-   and linh_envs =
-     List.map (fun (_, p) -> Lprim(Pfield 3, [transl_path p]))
-       (List.rev inh_init)
-   in
-   let make_envs lam =
-     Llet(StrictOpt, envs,
--         (if linh_envs = [] then lenv else
--         Lprim(Pmakeblock(0, Immutable), lenv :: linh_envs)),
--         lam)
--  and def_ids cla lam =
--    Llet(StrictOpt, env2,
--         Lapply (oo_prim "new_variable", [Lvar cla; transl_label ""]),
-+         (if linh_envs = [] then lenv else ltuple (lenv :: linh_envs)),
-          lam)
-   in
-   let inh_paths =
-@@ -757,46 +767,53 @@
-       (fun (_,path) -> List.mem (Path.head path) new_ids) inh_init in
-   let inh_keys =
-     List.map (fun (_,p) -> Lprim(Pfield 1, [transl_path p])) inh_paths in
--  let lclass lam =
--    Llet(Strict, class_init,
--         Lfunction(Curried, [cla], def_ids cla cl_init), lam)
-+  let lclass_init lam =
-+    Llet(Strict, class_init, cl_init_fun, lam)
-   and lcache lam =
-     if inh_keys = [] then Llet(Alias, cached, Lvar tables, lam) else
--    Llet(Strict, cached,
--         Lapply(oo_prim "lookup_tables",
--                [Lvar tables; Lprim(Pmakeblock(0, Immutable), inh_keys)]),
-+    Llet(Strict, cached, lprim "lookup_tables" [Lvar tables; ltuple inh_keys],
-          lam)
-   and lset cached i lam =
-     Lprim(Psetfield(i, true), [Lvar cached; lam])
-   in
--  let ldirect () =
--    ltable cla
--      (Llet(Strict, env_init, def_ids cla cl_init,
--            Lsequence(Lapply (oo_prim "init_class", [Lvar cla]),
--                      lset cached 0 (Lvar env_init))))
--  and lclass_virt () =
--    lset cached 0 (Lfunction(Curried, [cla], def_ids cla cl_init))
-+  let ldirect prim pos =
-+    ltable cla (
-+    Llet(Strict, env_init, cl_init,
-+         Lsequence(lprim prim (Lvar cla :: pos), Lvar env_init)))
-+  and lclass_concrete cached =
-+    ltuple [Lapply (lfield cached 0, [lenvs]);
-+            lfield cached 1; lfield cached 0; lenvs]
-   in
-+
-   llets (
--  lcache (
--  Lsequence(
--  Lifthenelse(lfield cached 0, lambda_unit,
--              if ids = [] then ldirect () else
--              if not concrete then lclass_virt () else
--              lclass (
--              Lapply (oo_prim "make_class_store",
--                      [transl_meth_list pub_meths;
--                       Lvar class_init; Lvar cached]))),
-   make_envs (
--  if ids = [] then Lapply(lfield cached 0, [lenvs]) else
--  Lprim(Pmakeblock(0, Immutable),
--        if concrete then
--          [Lapply(lfield cached 0, [lenvs]);
--           lfield cached 1;
--           lfield cached 0;
--           lenvs]
--        else [lambda_unit; lfield cached 0; lambda_unit; lenvs]
--       )))))
-+  if inh_paths = [] && concrete then
-+    if ids = [] then begin
-+      table_init := Some (ldirect "init_class_shared" filepos);
-+      Lapply (Lvar tables, [lenvs])
-+    end else begin
-+      let init =
-+        lclass cl_init_fun (fun _ ->
-+          lprim "make_class_env"
-+            (transl_meth_list pub_meths :: Lvar class_init :: filepos))
-+      in table_init := Some init;
-+      lclass_concrete tables
-+    end
-+  else begin
-+    lcache (
-+    Lsequence(
-+    Lifthenelse(lfield cached 0, lambda_unit,
-+                if ids = [] then lset cached 0 (ldirect "init_class" []) else
-+                if not concrete then lset cached 0 cl_init_fun else
-+                lclass_init (
-+                lprim "make_class_store"
-+                  [transl_meth_list pub_meths; Lvar class_init; Lvar cached])),
-+    llets (
-+    make_envs (
-+    if ids = [] then Lapply(lfield cached 0, [lenvs]) else
-+    if concrete then lclass_concrete cached else
-+    ltuple [lambda_unit; lfield cached 0; lambda_unit; lenvs]))))
-+  end))
- (* Wrapper for class compilation *)
-Index: bytecomp/translobj.ml
-===================================================================
-RCS file: /net/yquem/devel/caml/repository/csl/bytecomp/translobj.ml,v
-retrieving revision 1.9
-diff -u -r1.9 translobj.ml
---- bytecomp/translobj.ml      26 May 2004 11:10:51 -0000      1.9
-+++ bytecomp/translobj.ml      2 Feb 2006 05:08:56 -0000
-@@ -88,7 +88,6 @@
- (* Insert labels *)
--let string s = Lconst (Const_base (Const_string s))
- let int n = Lconst (Const_base (Const_int n))
- let prim_makearray =
-@@ -124,8 +123,8 @@
- let top_env = ref Env.empty
- let classes = ref []
--let oo_add_class id =
--  classes := id :: !classes;
-+let oo_add_class id init =
-+  classes := (id, init) :: !classes;
-   (!top_env, !cache_required)
- let oo_wrap env req f x =
-@@ -141,10 +140,12 @@
-     let lambda = f x in
-     let lambda =
-       List.fold_left
--        (fun lambda id ->
-+        (fun lambda (id, init) ->
-           Llet(StrictOpt, id,
--               Lprim(Pmakeblock(0, Mutable),
--                     [lambda_unit; lambda_unit; lambda_unit]),
-+               (match !init with
-+                 Some lam -> lam
-+               | None -> Lprim(Pmakeblock(0, Mutable),
-+                               [lambda_unit; lambda_unit; lambda_unit])),
-                lambda))
-         lambda !classes
-     in
-Index: bytecomp/translobj.mli
-===================================================================
-RCS file: /net/yquem/devel/caml/repository/csl/bytecomp/translobj.mli,v
-retrieving revision 1.6
-diff -u -r1.6 translobj.mli
---- bytecomp/translobj.mli     26 May 2004 11:10:51 -0000      1.6
-+++ bytecomp/translobj.mli     2 Feb 2006 05:08:56 -0000
-@@ -25,4 +25,4 @@
-     Ident.t -> int -> ('a -> lambda) -> 'a -> int * lambda
- val oo_wrap: Env.t -> bool -> ('a -> lambda) -> 'a -> lambda
--val oo_add_class: Ident.t -> Env.t * bool
-+val oo_add_class: Ident.t -> Lambda.lambda option ref -> Env.t * bool
-Index: byterun/compare.h
-===================================================================
-RCS file: /net/yquem/devel/caml/repository/csl/byterun/compare.h,v
-retrieving revision 1.2
-diff -u -r1.2 compare.h
---- byterun/compare.h  31 Dec 2003 14:20:35 -0000      1.2
-+++ byterun/compare.h  2 Feb 2006 05:08:56 -0000
-@@ -17,5 +17,6 @@
- #define CAML_COMPARE_H
- CAMLextern int caml_compare_unordered;
-+CAMLextern value caml_compare(value, value);
- #endif /* CAML_COMPARE_H */
-Index: byterun/extern.c
-===================================================================
-RCS file: /net/yquem/devel/caml/repository/csl/byterun/extern.c,v
-retrieving revision 1.59
-diff -u -r1.59 extern.c
---- byterun/extern.c   4 Jan 2006 16:55:49 -0000       1.59
-+++ byterun/extern.c   2 Feb 2006 05:08:56 -0000
-@@ -411,6 +411,22 @@
-       extern_record_location(v);
-       break;
-     }
-+    case Object_tag: {
-+      value field0;
-+      mlsize_t i;
-+      i = Wosize_val(Field(v, 0)) - 1;
-+      field0 = Field(Field(v, 0),i);
-+      if (Wosize_val(field0) > 0) {
-+        writecode32(CODE_OBJECT, Wosize_hd (hd));
-+        extern_record_location(v);
-+        extern_rec(field0);
-+        for (i = 1; i < sz - 1; i++) extern_rec(Field(v, i));
-+        v = Field(v, i);
-+        goto tailcall;
-+      }
-+      if (!extern_closures)
-+        extern_invalid_argument("output_value: dynamic class");
-+    } /* may fall through */
-     default: {
-       value field0;
-       mlsize_t i;
-Index: byterun/intern.c
-===================================================================
-RCS file: /net/yquem/devel/caml/repository/csl/byterun/intern.c,v
-retrieving revision 1.60
-diff -u -r1.60 intern.c
---- byterun/intern.c   22 Sep 2005 14:21:50 -0000      1.60
-+++ byterun/intern.c   2 Feb 2006 05:08:56 -0000
-@@ -28,6 +28,8 @@
- #include "mlvalues.h"
- #include "misc.h"
- #include "reverse.h"
-+#include "callback.h"
-+#include "compare.h"
- static unsigned char * intern_src;
- /* Reading pointer in block holding input data. */
-@@ -98,6 +100,25 @@
- #define readblock(dest,len) \
-   (memmove((dest), intern_src, (len)), intern_src += (len))
-+static value get_method_table (value key)
-+{
-+  static value *classes = NULL;
-+  value current;
-+  if (classes == NULL) {
-+    classes = caml_named_value("caml_oo_classes");
-+    if (classes == NULL) return 0;
-+    caml_register_global_root(classes);
-+  }
-+  for (current = Field(*classes, 0); Is_block(current);
-+       current = Field(current, 1))
-+  {
-+    value head = Field(current, 0);
-+    if (caml_compare(key, Field(head, 0)) == Val_int(0))
-+      return Field(head, 1);
-+  }
-+  return 0;
-+}
-+
- static void intern_cleanup(void)
- {
-   if (intern_input_malloced) caml_stat_free(intern_input);
-@@ -315,6 +336,24 @@
-         Custom_ops_val(v) = ops;
-         intern_dest += 1 + size;
-         break;
-+      case CODE_OBJECT:
-+        size = read32u();
-+        v = Val_hp(intern_dest);
-+        *dest = v;
-+        if (intern_obj_table != NULL) intern_obj_table[obj_counter++] = v;
-+        dest = (value *) (intern_dest + 1);
-+        *intern_dest = Make_header(size, Object_tag, intern_color);
-+        intern_dest += 1 + size;
-+        intern_rec(dest);
-+        *dest = get_method_table(*dest);
-+        if (*dest == 0) {
-+          intern_cleanup();
-+          caml_failwith("input_value: unknown class");
-+        }
-+        for(size--, dest++; size > 1; size--, dest++)
-+          intern_rec(dest);
-+        goto tailcall;
-+        
-       default:
-         intern_cleanup();
-         caml_failwith("input_value: ill-formed message");
-Index: byterun/intext.h
-===================================================================
-RCS file: /net/yquem/devel/caml/repository/csl/byterun/intext.h,v
-retrieving revision 1.32
-diff -u -r1.32 intext.h
---- byterun/intext.h   22 Sep 2005 14:21:50 -0000      1.32
-+++ byterun/intext.h   2 Feb 2006 05:08:56 -0000
-@@ -56,6 +56,7 @@
- #define CODE_CODEPOINTER 0x10
- #define CODE_INFIXPOINTER 0x11
- #define CODE_CUSTOM 0x12
-+#define CODE_OBJECT 0x14
- #if ARCH_FLOAT_ENDIANNESS == 0x76543210
- #define CODE_DOUBLE_NATIVE CODE_DOUBLE_BIG
-Index: stdlib/camlinternalOO.ml
-===================================================================
-RCS file: /net/yquem/devel/caml/repository/csl/stdlib/camlinternalOO.ml,v
-retrieving revision 1.14
-diff -u -r1.14 camlinternalOO.ml
---- stdlib/camlinternalOO.ml   25 Oct 2005 18:34:07 -0000      1.14
-+++ stdlib/camlinternalOO.ml   2 Feb 2006 05:08:56 -0000
-@@ -305,10 +305,38 @@
-     public_methods;
-   table
-+(*
-+let create_table_variables pub_meths priv_meths vars =
-+  let tbl = create_table pub_meths in
-+  let pub_meths = to_array pub_meths
-+  and priv_meths = to_array priv_meths
-+  and vars = to_array vars in
-+  let len = 2 + Array.length pub_meths + Array.length priv_meths in
-+  let res = Array.create len tbl in
-+  let mv = new_methods_variables tbl pub_meths vars in
-+  Array.blit mv 0 res 1;
-+  res
-+*)
-+
- let init_class table =
-   inst_var_count := !inst_var_count + table.size - 1;
-   table.initializers <- List.rev table.initializers;
--  resize table (3 + magic table.methods.(1) * 16 / Sys.word_size)
-+  let len = 3 + magic table.methods.(1) * 16 / Sys.word_size in
-+  (* keep 1 more for extra info *)
-+  let len = if len > Array.length table.methods then len else len+1 in
-+  resize table len
-+
-+let classes = ref []
-+let () = Callback.register "caml_oo_classes" classes
-+
-+let init_class_shared table (file : string) (pos : int) =
-+  init_class table;
-+  let rec unique_pos pos =
-+    if List.mem_assoc (file, pos) !classes then unique_pos (pos + 0x100000)
-+    else pos in
-+  let pos = unique_pos pos in
-+  table.methods.(Array.length table.methods - 1) <- Obj.magic (file, pos);
-+  classes := ((file, pos), table.methods) :: !classes
- let inherits cla vals virt_meths concr_meths (_, super, _, env) top =
-   narrow cla vals virt_meths concr_meths;
-@@ -319,12 +347,18 @@
-    Array.map (fun nm -> get_method cla (get_method_label cla nm))
-      (to_array concr_meths))
--let make_class pub_meths class_init =
-+let make_class pub_meths class_init file pos =
-   let table = create_table pub_meths in
-   let env_init = class_init table in
--  init_class table;
-+  init_class_shared table file pos;
-   (env_init (Obj.repr 0), class_init, env_init, Obj.repr 0)
-+let make_class_env pub_meths class_init file pos =
-+  let table = create_table pub_meths in
-+  let env_init = class_init table in
-+  init_class_shared table file pos;
-+  (env_init, class_init)
-+
- type init_table = { mutable env_init: t; mutable class_init: table -> t }
- let make_class_store pub_meths class_init init_table =
-Index: stdlib/camlinternalOO.mli
-===================================================================
-RCS file: /net/yquem/devel/caml/repository/csl/stdlib/camlinternalOO.mli,v
-retrieving revision 1.9
-diff -u -r1.9 camlinternalOO.mli
---- stdlib/camlinternalOO.mli  25 Oct 2005 18:34:07 -0000      1.9
-+++ stdlib/camlinternalOO.mli  2 Feb 2006 05:08:56 -0000
-@@ -43,14 +43,20 @@
- val add_initializer : table -> (obj -> unit) -> unit
- val dummy_table : table
- val create_table : string array -> table
-+(* val create_table_variables :
-+    string array -> string array -> string array -> table *)
- val init_class : table -> unit
-+val init_class_shared : table -> string -> int -> unit
- val inherits :
-     table -> string array -> string array -> string array ->
-     (t * (table -> obj -> Obj.t) * t * obj) -> bool ->
-     (Obj.t * int array * closure array)
- val make_class :
--    string array -> (table -> Obj.t -> t) ->
-+    string array -> (table -> Obj.t -> t) -> string -> int ->
-     (t * (table -> Obj.t -> t) * (Obj.t -> t) * Obj.t)
-+val make_class_env :
-+    string array -> (table -> Obj.t -> t) -> string -> int ->
-+    (Obj.t -> t) * (table -> Obj.t -> t)
- type init_table
- val make_class_store :
-     string array -> (table -> t) -> init_table -> unit
diff --git a/experimental/garrigue/module-errors.diffs b/experimental/garrigue/module-errors.diffs
deleted file mode 100644 (file)
index 2f8c2bc..0000000
+++ /dev/null
@@ -1,403 +0,0 @@
-Index: typing/includemod.ml
-===================================================================
---- typing/includemod.ml       (revision 11161)
-+++ typing/includemod.ml       (working copy)
-@@ -19,7 +19,7 @@
- open Types
- open Typedtree
--type error =
-+type symptom =
-     Missing_field of Ident.t
-   | Value_descriptions of Ident.t * value_description * value_description
-   | Type_declarations of Ident.t * type_declaration
-@@ -38,6 +38,10 @@
-       Ctype.class_match_failure list
-   | Unbound_modtype_path of Path.t
-+type pos =
-+    Module of Ident.t | Modtype of Ident.t | Arg of Ident.t | Body of Ident.t
-+type error = pos list * symptom
-+
- exception Error of error list
- (* All functions "blah env x1 x2" check that x1 is included in x2,
-@@ -46,51 +50,52 @@
- (* Inclusion between value descriptions *)
--let value_descriptions env subst id vd1 vd2 =
-+let value_descriptions env cxt subst id vd1 vd2 =
-   let vd2 = Subst.value_description subst vd2 in
-   try
-     Includecore.value_descriptions env vd1 vd2
-   with Includecore.Dont_match ->
--    raise(Error[Value_descriptions(id, vd1, vd2)])
-+    raise(Error[cxt, Value_descriptions(id, vd1, vd2)])
- (* Inclusion between type declarations *)
--let type_declarations env subst id decl1 decl2 =
-+let type_declarations env cxt subst id decl1 decl2 =
-   let decl2 = Subst.type_declaration subst decl2 in
-   let err = Includecore.type_declarations env id decl1 decl2 in
--  if err <> [] then raise(Error[Type_declarations(id, decl1, decl2, err)])
-+  if err <> [] then raise(Error[cxt, Type_declarations(id, decl1, decl2, err)])
- (* Inclusion between exception declarations *)
--let exception_declarations env subst id decl1 decl2 =
-+let exception_declarations env cxt subst id decl1 decl2 =
-   let decl2 = Subst.exception_declaration subst decl2 in
-   if Includecore.exception_declarations env decl1 decl2
-   then ()
--  else raise(Error[Exception_declarations(id, decl1, decl2)])
-+  else raise(Error[cxt, Exception_declarations(id, decl1, decl2)])
- (* Inclusion between class declarations *)
--let class_type_declarations env subst id decl1 decl2 =
-+let class_type_declarations env cxt subst id decl1 decl2 =
-   let decl2 = Subst.cltype_declaration subst decl2 in
-   match Includeclass.class_type_declarations env decl1 decl2 with
-     []     -> ()
--  | reason -> raise(Error[Class_type_declarations(id, decl1, decl2, reason)])
-+  | reason ->
-+      raise(Error[cxt, Class_type_declarations(id, decl1, decl2, reason)])
--let class_declarations env subst id decl1 decl2 =
-+let class_declarations env cxt subst id decl1 decl2 =
-   let decl2 = Subst.class_declaration subst decl2 in
-   match Includeclass.class_declarations env decl1 decl2 with
-     []     -> ()
--  | reason -> raise(Error[Class_declarations(id, decl1, decl2, reason)])
-+  | reason -> raise(Error[cxt, Class_declarations(id, decl1, decl2, reason)])
- (* Expand a module type identifier when possible *)
- exception Dont_match
--let expand_module_path env path =
-+let expand_module_path env cxt path =
-   try
-     Env.find_modtype_expansion path env
-   with Not_found ->
--    raise(Error[Unbound_modtype_path path])
-+    raise(Error[cxt, Unbound_modtype_path path])
- (* Extract name, kind and ident from a signature item *)
-@@ -128,28 +133,29 @@
-    Return the restriction that transforms a value of the smaller type
-    into a value of the bigger type. *)
--let rec modtypes env subst mty1 mty2 =
-+let rec modtypes env cxt subst mty1 mty2 =
-   try
--    try_modtypes env subst mty1 mty2
-+    try_modtypes env cxt subst mty1 mty2
-   with
-     Dont_match ->
--      raise(Error[Module_types(mty1, Subst.modtype subst mty2)])
-+      raise(Error[cxt, Module_types(mty1, Subst.modtype subst mty2)])
-   | Error reasons ->
--      raise(Error(Module_types(mty1, Subst.modtype subst mty2) :: reasons))
-+      raise(Error((cxt, Module_types(mty1, Subst.modtype subst mty2))
-+                  :: reasons))
--and try_modtypes env subst mty1 mty2 =
-+and try_modtypes env cxt subst mty1 mty2 =
-   match (mty1, mty2) with
-     (_, Tmty_ident p2) ->
--      try_modtypes2 env mty1 (Subst.modtype subst mty2)
-+      try_modtypes2 env cxt mty1 (Subst.modtype subst mty2)
-   | (Tmty_ident p1, _) ->
--      try_modtypes env subst (expand_module_path env p1) mty2
-+      try_modtypes env cxt subst (expand_module_path env cxt p1) mty2
-   | (Tmty_signature sig1, Tmty_signature sig2) ->
--      signatures env subst sig1 sig2
-+      signatures env cxt subst sig1 sig2
-   | (Tmty_functor(param1, arg1, res1), Tmty_functor(param2, arg2, res2)) ->
-       let arg2' = Subst.modtype subst arg2 in
--      let cc_arg = modtypes env Subst.identity arg2' arg1 in
-+      let cc_arg = modtypes env (Arg param1::cxt) Subst.identity arg2' arg1 in
-       let cc_res =
--        modtypes (Env.add_module param1 arg2' env)
-+        modtypes (Env.add_module param1 arg2' env) (Body param1::cxt)
-           (Subst.add_module param2 (Pident param1) subst) res1 res2 in
-       begin match (cc_arg, cc_res) with
-           (Tcoerce_none, Tcoerce_none) -> Tcoerce_none
-@@ -158,19 +164,19 @@
-   | (_, _) ->
-       raise Dont_match
--and try_modtypes2 env mty1 mty2 =
-+and try_modtypes2 env cxt mty1 mty2 =
-   (* mty2 is an identifier *)
-   match (mty1, mty2) with
-     (Tmty_ident p1, Tmty_ident p2) when Path.same p1 p2 ->
-       Tcoerce_none
-   | (_, Tmty_ident p2) ->
--      try_modtypes env Subst.identity mty1 (expand_module_path env p2)
-+      try_modtypes env cxt Subst.identity mty1 (expand_module_path env cxt p2)
-   | (_, _) ->
-       assert false
- (* Inclusion between signatures *)
--and signatures env subst sig1 sig2 =
-+and signatures env cxt subst sig1 sig2 =
-   (* Environment used to check inclusion of components *)
-   let new_env =
-     Env.add_signature sig1 env in
-@@ -202,7 +208,7 @@
-   let rec pair_components subst paired unpaired = function
-       [] ->
-         begin match unpaired with
--            [] -> signature_components new_env subst (List.rev paired)
-+            [] -> signature_components new_env cxt subst (List.rev paired)
-           | _  -> raise(Error unpaired)
-         end
-     | item2 :: rem ->
-@@ -234,7 +240,7 @@
-             ((item1, item2, pos1) :: paired) unpaired rem
-         with Not_found ->
-           let unpaired =
--            if report then Missing_field id2 :: unpaired else unpaired in
-+            if report then (cxt, Missing_field id2) :: unpaired else unpaired in
-           pair_components subst paired unpaired rem
-         end in
-   (* Do the pairing and checking, and return the final coercion *)
-@@ -242,65 +248,67 @@
- (* Inclusion between signature components *)
--and signature_components env subst = function
-+and signature_components env cxt subst = function
-     [] -> []
-   | (Tsig_value(id1, valdecl1), Tsig_value(id2, valdecl2), pos) :: rem ->
--      let cc = value_descriptions env subst id1 valdecl1 valdecl2 in
-+      let cc = value_descriptions env cxt subst id1 valdecl1 valdecl2 in
-       begin match valdecl2.val_kind with
--        Val_prim p -> signature_components env subst rem
--      | _ -> (pos, cc) :: signature_components env subst rem
-+        Val_prim p -> signature_components env cxt subst rem
-+      | _ -> (pos, cc) :: signature_components env cxt subst rem
-       end
-   | (Tsig_type(id1, tydecl1, _), Tsig_type(id2, tydecl2, _), pos) :: rem ->
--      type_declarations env subst id1 tydecl1 tydecl2;
--      signature_components env subst rem
-+      type_declarations env cxt subst id1 tydecl1 tydecl2;
-+      signature_components env cxt subst rem
-   | (Tsig_exception(id1, excdecl1), Tsig_exception(id2, excdecl2), pos)
-     :: rem ->
--      exception_declarations env subst id1 excdecl1 excdecl2;
--      (pos, Tcoerce_none) :: signature_components env subst rem
-+      exception_declarations env cxt subst id1 excdecl1 excdecl2;
-+      (pos, Tcoerce_none) :: signature_components env cxt subst rem
-   | (Tsig_module(id1, mty1, _), Tsig_module(id2, mty2, _), pos) :: rem ->
-       let cc =
--        modtypes env subst (Mtype.strengthen env mty1 (Pident id1)) mty2 in
--      (pos, cc) :: signature_components env subst rem
-+        modtypes env (Module id1::cxt) subst
-+          (Mtype.strengthen env mty1 (Pident id1)) mty2 in
-+      (pos, cc) :: signature_components env cxt subst rem
-   | (Tsig_modtype(id1, info1), Tsig_modtype(id2, info2), pos) :: rem ->
--      modtype_infos env subst id1 info1 info2;
--      signature_components env subst rem
-+      modtype_infos env cxt subst id1 info1 info2;
-+      signature_components env cxt subst rem
-   | (Tsig_class(id1, decl1, _), Tsig_class(id2, decl2, _), pos) :: rem ->
--      class_declarations env subst id1 decl1 decl2;
--      (pos, Tcoerce_none) :: signature_components env subst rem
-+      class_declarations env cxt subst id1 decl1 decl2;
-+      (pos, Tcoerce_none) :: signature_components env cxt subst rem
-   | (Tsig_cltype(id1, info1, _), Tsig_cltype(id2, info2, _), pos) :: rem ->
--      class_type_declarations env subst id1 info1 info2;
--      signature_components env subst rem
-+      class_type_declarations env cxt subst id1 info1 info2;
-+      signature_components env cxt subst rem
-   | _ ->
-       assert false
- (* Inclusion between module type specifications *)
--and modtype_infos env subst id info1 info2 =
-+and modtype_infos env cxt subst id info1 info2 =
-   let info2 = Subst.modtype_declaration subst info2 in
-+  let cxt' = Modtype id :: cxt in
-   try
-     match (info1, info2) with
-       (Tmodtype_abstract, Tmodtype_abstract) -> ()
-     | (Tmodtype_manifest mty1, Tmodtype_abstract) -> ()
-     | (Tmodtype_manifest mty1, Tmodtype_manifest mty2) ->
--        check_modtype_equiv env mty1 mty2
-+        check_modtype_equiv env cxt' mty1 mty2
-     | (Tmodtype_abstract, Tmodtype_manifest mty2) ->
--        check_modtype_equiv env (Tmty_ident(Pident id)) mty2
-+        check_modtype_equiv env cxt' (Tmty_ident(Pident id)) mty2
-   with Error reasons ->
--    raise(Error(Modtype_infos(id, info1, info2) :: reasons))
-+    raise(Error((cxt, Modtype_infos(id, info1, info2)) :: reasons))
--and check_modtype_equiv env mty1 mty2 =
-+and check_modtype_equiv env cxt mty1 mty2 =
-   match
--    (modtypes env Subst.identity mty1 mty2,
--     modtypes env Subst.identity mty2 mty1)
-+    (modtypes env cxt Subst.identity mty1 mty2,
-+     modtypes env cxt Subst.identity mty2 mty1)
-   with
-     (Tcoerce_none, Tcoerce_none) -> ()
--  | (_, _) -> raise(Error [Modtype_permutation])
-+  | (_, _) -> raise(Error [cxt, Modtype_permutation])
- (* Simplified inclusion check between module types (for Env) *)
- let check_modtype_inclusion env mty1 path1 mty2 =
-   try
--    ignore(modtypes env Subst.identity
-+    ignore(modtypes env [] Subst.identity
-                     (Mtype.strengthen env mty1 path1) mty2)
-   with Error reasons ->
-     raise Not_found
-@@ -312,16 +320,16 @@
- let compunit impl_name impl_sig intf_name intf_sig =
-   try
--    signatures Env.initial Subst.identity impl_sig intf_sig
-+    signatures Env.initial [] Subst.identity impl_sig intf_sig
-   with Error reasons ->
--    raise(Error(Interface_mismatch(impl_name, intf_name) :: reasons))
-+    raise(Error(([], Interface_mismatch(impl_name, intf_name)) :: reasons))
--(* Hide the substitution parameter to the outside world *)
-+(* Hide the context and substitution parameters to the outside world *)
--let modtypes env mty1 mty2 = modtypes env Subst.identity mty1 mty2
--let signatures env sig1 sig2 = signatures env Subst.identity sig1 sig2
-+let modtypes env mty1 mty2 = modtypes env [] Subst.identity mty1 mty2
-+let signatures env sig1 sig2 = signatures env [] Subst.identity sig1 sig2
- let type_declarations env id decl1 decl2 =
--  type_declarations env Subst.identity id decl1 decl2
-+  type_declarations env [] Subst.identity id decl1 decl2
- (* Error report *)
-@@ -384,9 +392,62 @@
-   | Unbound_modtype_path path ->
-       fprintf ppf "Unbound module type %a" Printtyp.path path
--let report_error ppf = function
--  |  [] -> ()
--  | err :: errs ->
--      let print_errs ppf errs =
--         List.iter (fun err -> fprintf ppf "@ %a" include_err err) errs in
--      fprintf ppf "@[<v>%a%a@]" include_err err print_errs errs
-+let rec context ppf = function
-+    Module id :: rem ->
-+      fprintf ppf "@[<2>module %a%a@]" ident id args rem
-+  | Modtype id :: rem ->
-+      fprintf ppf "@[<2>module type %a =@ %a@]" ident id context_mty rem
-+  | Body x :: rem ->
-+      fprintf ppf "functor (%a) ->@ %a" ident x context_mty rem
-+  | Arg x :: rem ->
-+      fprintf ppf "functor (%a : %a) -> ..." ident x context_mty rem
-+  | [] ->
-+      fprintf ppf "<here>"
-+and context_mty ppf = function
-+    (Module _ | Modtype _) :: _ as rem ->
-+      fprintf ppf "@[<2>sig@ %a@;<1 -2>end@]" context rem
-+  | cxt -> context ppf cxt
-+and args ppf = function
-+    Body x :: rem ->
-+      fprintf ppf "(%a)%a" ident x args rem
-+  | Arg x :: rem ->
-+      fprintf ppf "(%a :@ %a) : ..." ident x context_mty rem
-+  | cxt ->
-+      fprintf ppf " :@ %a" context_mty cxt
-+
-+let path_of_context = function
-+    Module id :: rem ->
-+      let rec subm path = function
-+          [] -> path
-+        | Module id :: rem -> subm (Pdot (path, Ident.name id, -1)) rem
-+        | _ -> assert false
-+      in subm (Pident id) rem
-+  | _ -> assert false
-+
-+let context ppf cxt =
-+  if cxt = [] then () else
-+  if List.for_all (function Module _ -> true | _ -> false) cxt then
-+    fprintf ppf "In module %a:@ " path (path_of_context cxt)
-+  else
-+    fprintf ppf "@[<hv 2>At position@ %a@]@ " context cxt
-+
-+let include_err ppf (cxt, err) =
-+  fprintf ppf "@[<v>%a%a@]" context (List.rev cxt) include_err err
-+
-+let max_size = 500
-+let buffer = String.create max_size
-+let is_big obj =
-+  try ignore (Marshal.to_buffer buffer 0 max_size obj []); false
-+  with _ -> true
-+
-+let report_error ppf errs =
-+  if errs = [] then () else
-+  let (errs , err) = split_last errs in
-+  let pe = ref true in
-+  let include_err' ppf err =
-+    if !Clflags.show_trace || not (is_big err) then
-+      fprintf ppf "%a@ " include_err err
-+    else if !pe then (fprintf ppf "...@ "; pe := false)
-+  in
-+  let print_errs ppf = List.iter (include_err' ppf) in
-+  fprintf ppf "@[<v>%a%a@]" print_errs errs include_err err
-Index: typing/includemod.mli
-===================================================================
---- typing/includemod.mli      (revision 11161)
-+++ typing/includemod.mli      (working copy)
-@@ -24,7 +24,7 @@
- val type_declarations:
-       Env.t -> Ident.t -> type_declaration -> type_declaration -> unit
--type error =
-+type symptom =
-     Missing_field of Ident.t
-   | Value_descriptions of Ident.t * value_description * value_description
-   | Type_declarations of Ident.t * type_declaration
-@@ -43,6 +43,10 @@
-       Ctype.class_match_failure list
-   | Unbound_modtype_path of Path.t
-+type pos =
-+    Module of Ident.t | Modtype of Ident.t | Arg of Ident.t | Body of Ident.t
-+type error = pos list * symptom
-+
- exception Error of error list
- val report_error: formatter -> error list -> unit
-Index: utils/clflags.ml
-===================================================================
---- utils/clflags.ml   (revision 11161)
-+++ utils/clflags.ml   (working copy)
-@@ -53,6 +53,7 @@
- and dllpaths = ref ([] : string list)   (* -dllpath *)
- and make_package = ref false            (* -pack *)
- and for_package = ref (None: string option) (* -for-pack *)
-+and show_trace = ref false              (* -show-trace *)
- let dump_parsetree = ref false          (* -dparsetree *)
- and dump_rawlambda = ref false          (* -drawlambda *)
- and dump_lambda = ref false             (* -dlambda *)
-Index: utils/clflags.mli
-===================================================================
---- utils/clflags.mli  (revision 11161)
-+++ utils/clflags.mli  (working copy)
-@@ -50,6 +50,7 @@
- val dllpaths : string list ref
- val make_package : bool ref
- val for_package : string option ref
-+val show_trace : bool ref
- val dump_parsetree : bool ref
- val dump_rawlambda : bool ref
- val dump_lambda : bool ref
diff --git a/experimental/garrigue/multimatch.diffs b/experimental/garrigue/multimatch.diffs
deleted file mode 100644 (file)
index 6eb34b7..0000000
+++ /dev/null
@@ -1,1418 +0,0 @@
-Index: parsing/lexer.mll
-===================================================================
-RCS file: /net/yquem/devel/caml/repository/csl/parsing/lexer.mll,v
-retrieving revision 1.73
-diff -u -r1.73 lexer.mll
---- parsing/lexer.mll  11 Apr 2005 16:44:26 -0000      1.73
-+++ parsing/lexer.mll  2 Feb 2006 06:28:32 -0000
-@@ -63,6 +63,8 @@
-     "match", MATCH;
-     "method", METHOD;
-     "module", MODULE;
-+    "multifun", MULTIFUN;
-+    "multimatch", MULTIMATCH;
-     "mutable", MUTABLE;
-     "new", NEW;
-     "object", OBJECT;
-Index: parsing/parser.mly
-===================================================================
-RCS file: /net/yquem/devel/caml/repository/csl/parsing/parser.mly,v
-retrieving revision 1.123
-diff -u -r1.123 parser.mly
---- parsing/parser.mly 23 Mar 2005 03:08:37 -0000      1.123
-+++ parsing/parser.mly 2 Feb 2006 06:28:32 -0000
-@@ -257,6 +257,8 @@
- %token MINUSDOT
- %token MINUSGREATER
- %token MODULE
-+%token MULTIFUN
-+%token MULTIMATCH
- %token MUTABLE
- %token <nativeint> NATIVEINT
- %token NEW
-@@ -325,7 +327,7 @@
- %nonassoc SEMI                          /* below EQUAL ({lbl=...; lbl=...}) */
- %nonassoc LET                           /* above SEMI ( ...; let ... in ...) */
- %nonassoc below_WITH
--%nonassoc FUNCTION WITH                 /* below BAR  (match ... with ...) */
-+%nonassoc FUNCTION WITH MULTIFUN        /* below BAR  (match ... with ...) */
- %nonassoc AND             /* above WITH (module rec A: SIG with ... and ...) */
- %nonassoc THEN                          /* below ELSE (if ... then ...) */
- %nonassoc ELSE                          /* (if ... then ... else ...) */
-@@ -804,8 +806,12 @@
-       { mkexp(Pexp_function("", None, List.rev $3)) }
-   | FUN labeled_simple_pattern fun_def
-       { let (l,o,p) = $2 in mkexp(Pexp_function(l, o, [p, $3])) }
-+  | MULTIFUN opt_bar match_cases
-+      { mkexp(Pexp_multifun(List.rev $3)) }
-   | MATCH seq_expr WITH opt_bar match_cases
--      { mkexp(Pexp_match($2, List.rev $5)) }
-+      { mkexp(Pexp_match($2, List.rev $5, false)) }
-+  | MULTIMATCH seq_expr WITH opt_bar match_cases
-+      { mkexp(Pexp_match($2, List.rev $5, true)) }
-   | TRY seq_expr WITH opt_bar match_cases
-       { mkexp(Pexp_try($2, List.rev $5)) }
-   | TRY seq_expr WITH error
-@@ -1318,10 +1324,10 @@
-   | simple_core_type2                           { Rinherit $1 }
- ;
- tag_field:
--    name_tag OF opt_ampersand amper_type_list
--      { Rtag ($1, $3, List.rev $4) }
--  | name_tag
--      { Rtag ($1, true, []) }
-+    name_tag OF opt_ampersand amper_type_list amper_type_pair_list
-+      { Rtag ($1, $3, List.rev $4, $5) }
-+  | name_tag amper_type_pair_list
-+      { Rtag ($1, true, [], $2) }
- ;
- opt_ampersand:
-     AMPERSAND                                   { true }
-@@ -1331,6 +1337,11 @@
-     core_type                                   { [$1] }
-   | amper_type_list AMPERSAND core_type         { $3 :: $1 }
- ;
-+amper_type_pair_list:
-+    AMPERSAND core_type EQUAL core_type amper_type_pair_list
-+      { ($2, $4) :: $5 }
-+  | /* empty */
-+      { [] }
- opt_present:
-     LBRACKETGREATER name_tag_list RBRACKET      { List.rev $2 }
-   | /* empty */                                 { [] }
-Index: parsing/parsetree.mli
-===================================================================
-RCS file: /net/yquem/devel/caml/repository/csl/parsing/parsetree.mli,v
-retrieving revision 1.42
-diff -u -r1.42 parsetree.mli
---- parsing/parsetree.mli      23 Mar 2005 03:08:37 -0000      1.42
-+++ parsing/parsetree.mli      2 Feb 2006 06:28:32 -0000
-@@ -43,7 +43,7 @@
-   | Pfield_var
- and row_field =
--    Rtag of label * bool * core_type list
-+    Rtag of label * bool * core_type list * (core_type * core_type) list
-   | Rinherit of core_type
- (* XXX Type expressions for the class language *)
-@@ -86,7 +86,7 @@
-   | Pexp_let of rec_flag * (pattern * expression) list * expression
-   | Pexp_function of label * expression option * (pattern * expression) list
-   | Pexp_apply of expression * (label * expression) list
--  | Pexp_match of expression * (pattern * expression) list
-+  | Pexp_match of expression * (pattern * expression) list * bool
-   | Pexp_try of expression * (pattern * expression) list
-   | Pexp_tuple of expression list
-   | Pexp_construct of Longident.t * expression option * bool
-@@ -111,6 +111,7 @@
-   | Pexp_lazy of expression
-   | Pexp_poly of expression * core_type option
-   | Pexp_object of class_structure
-+  | Pexp_multifun of (pattern * expression) list
- (* Value descriptions *)
-Index: parsing/printast.ml
-===================================================================
-RCS file: /net/yquem/devel/caml/repository/csl/parsing/printast.ml,v
-retrieving revision 1.29
-diff -u -r1.29 printast.ml
---- parsing/printast.ml        4 Jan 2006 16:55:50 -0000       1.29
-+++ parsing/printast.ml        2 Feb 2006 06:28:32 -0000
-@@ -205,10 +205,14 @@
-       line i ppf "Pexp_apply\n";
-       expression i ppf e;
-       list i label_x_expression ppf l;
--  | Pexp_match (e, l) ->
-+  | Pexp_match (e, l, b) ->
-       line i ppf "Pexp_match\n";
-       expression i ppf e;
-       list i pattern_x_expression_case ppf l;
-+      bool i ppf b
-+  | Pexp_multifun l ->
-+      line i ppf "Pexp_multifun\n";
-+      list i pattern_x_expression_case ppf l;
-   | Pexp_try (e, l) ->
-       line i ppf "Pexp_try\n";
-       expression i ppf e;
-@@ -653,7 +657,7 @@
- and label_x_bool_x_core_type_list i ppf x =
-   match x with
--    Rtag (l, b, ctl) ->
-+    Rtag (l, b, ctl, cstr) ->
-       line i ppf "Rtag \"%s\" %s\n" l (string_of_bool b);
-       list (i+1) core_type ppf ctl
-   | Rinherit (ct) ->
-Index: typing/btype.ml
-===================================================================
-RCS file: /net/yquem/devel/caml/repository/csl/typing/btype.ml,v
-retrieving revision 1.38
-diff -u -r1.38 btype.ml
---- typing/btype.ml    4 Jan 2006 16:55:50 -0000       1.38
-+++ typing/btype.ml    2 Feb 2006 06:28:32 -0000
-@@ -66,16 +66,16 @@
-     Clink r when !r <> Cunknown -> commu_repr !r
-   | c -> c
--let rec row_field_repr_aux tl = function
--    Reither(_, tl', _, {contents = Some fi}) ->
--      row_field_repr_aux (tl@tl') fi
--  | Reither(c, tl', m, r) ->
--      Reither(c, tl@tl', m, r)
-+let rec row_field_repr_aux tl tl2 = function
-+    Reither(_, tl', _, tl2', {contents = Some fi}) ->
-+      row_field_repr_aux (tl@tl') (tl2@tl2') fi
-+  | Reither(c, tl', m, tl2', r) ->
-+      Reither(c, tl@tl', m, tl2@tl2', r)
-   | Rpresent (Some _) when tl <> [] ->
-       Rpresent (Some (List.hd tl))
-   | fi -> fi
--let row_field_repr fi = row_field_repr_aux [] fi
-+let row_field_repr fi = row_field_repr_aux [] [] fi
- let rec rev_concat l ll =
-   match ll with
-@@ -170,7 +170,8 @@
-     (fun (_, fi) ->
-       match row_field_repr fi with
-       | Rpresent(Some ty) -> f ty
--      | Reither(_, tl, _, _) -> List.iter f tl
-+      | Reither(_, tl, _, tl2, _) ->
-+          List.iter f tl; List.iter (fun (t1,t2) -> f t1; f t2) tl2
-       | _ -> ())
-     row.row_fields;
-   match (repr row.row_more).desc with
-@@ -208,15 +209,17 @@
-       (fun (l, fi) -> l,
-         match row_field_repr fi with
-         | Rpresent(Some ty) -> Rpresent(Some(f ty))
--        | Reither(c, tl, m, e) ->
-+        | Reither(c, tl, m, tpl, e) ->
-             let e = if keep then e else ref None in
-             let m = if row.row_fixed then fixed else m in
-             let tl = List.map f tl in
-+            let tl1 = List.map (fun (t1,_) -> repr (f t1)) tpl
-+            and tl2 = List.map (fun (_,t2) -> repr (f t2)) tpl in
-             bound := List.filter
-                 (function {desc=Tconstr(_,[],_)} -> false | _ -> true)
--                (List.map repr tl)
-+                (List.map repr tl @ tl1 @ tl2)
-               @ !bound;
--            Reither(c, tl, m, e)
-+            Reither(c, tl, m, List.combine tl1 tl2, e)
-         | _ -> fi)
-       row.row_fields in
-   let name =
-Index: typing/ctype.ml
-===================================================================
-RCS file: /net/yquem/devel/caml/repository/csl/typing/ctype.ml,v
-retrieving revision 1.200
-diff -u -r1.200 ctype.ml
---- typing/ctype.ml    6 Jan 2006 02:16:24 -0000       1.200
-+++ typing/ctype.ml    2 Feb 2006 06:28:32 -0000
-@@ -340,7 +340,7 @@
-       let fi = filter_row_fields erase fi in
-       match row_field_repr f with
-         Rabsent -> fi
--      | Reither(_,_,false,e) when erase -> set_row_field e Rabsent; fi
-+      | Reither(_,_,false,_,e) when erase -> set_row_field e Rabsent; fi
-       | _ -> p :: fi
-                     (**************************************)
-@@ -1286,6 +1286,10 @@
- module TypeMap = Map.Make (TypeOps)
-+
-+(* A list of univars which may appear free in a type, but only if generic *)
-+let allowed_univars = ref TypeSet.empty
-+
- (* Test the occurence of free univars in a type *)
- (* that's way too expansive. Must do some kind of cacheing *)
- let occur_univar env ty =
-@@ -1307,7 +1311,12 @@
-     then
-       match ty.desc with
-         Tunivar ->
--          if not (TypeSet.mem ty bound) then raise (Unify [ty, newgenvar()])
-+          if TypeSet.mem ty bound then () else
-+          if TypeSet.mem ty !allowed_univars &&
-+            (ty.level = generic_level ||
-+             ty.level = pivot_level - generic_level)
-+          then ()
-+          else raise (Unify [ty, newgenvar()])
-       | Tpoly (ty, tyl) ->
-           let bound = List.fold_right TypeSet.add (List.map repr tyl) bound in
-           occur_rec bound  ty
-@@ -1393,6 +1402,7 @@
-   with exn -> univar_pairs := old_univars; raise exn
- let univar_pairs = ref []
-+let delayed_conditionals = ref []
-                               (*****************)
-@@ -1691,9 +1701,11 @@
-               with Not_found -> (h,l)::hl)
-             (List.map (fun (l,_) -> (hash_variant l, l)) row1.row_fields)
-             (List.map fst r2));
-+  let fixed1 = row1.row_fixed || rm1.desc <> Tvar
-+  and fixed2 = row2.row_fixed || rm2.desc <> Tvar in
-   let more =
--    if row1.row_fixed then rm1 else
--    if row2.row_fixed then rm2 else
-+    if fixed1 then rm1 else
-+    if fixed2 then rm2 else
-     newgenvar ()
-   in update_level env (min rm1.level rm2.level) more;
-   let fixed = row1.row_fixed || row2.row_fixed
-@@ -1726,18 +1738,18 @@
-   let bound = row1.row_bound @ row2.row_bound in
-   let row0 = {row_fields = []; row_more = more; row_bound = bound;
-               row_closed = closed; row_fixed = fixed; row_name = name} in
--  let set_more row rest =
-+  let set_more row row_fixed rest =
-     let rest =
-       if closed then
-         filter_row_fields row.row_closed rest
-       else rest in
--    if rest <> [] && (row.row_closed || row.row_fixed)
--    || closed && row.row_fixed && not row.row_closed then begin
-+    if rest <> [] && (row.row_closed || row_fixed)
-+    || closed && row_fixed && not row.row_closed then begin
-       let t1 = mkvariant [] true and t2 = mkvariant rest false in
-       raise (Unify [if row == row1 then (t1,t2) else (t2,t1)])
-     end;
-     let rm = row_more row in
--    if row.row_fixed then
-+    if row_fixed then
-       if row0.row_more == rm then () else
-       if rm.desc = Tvar then link_type rm row0.row_more else
-       unify env rm row0.row_more
-@@ -1748,11 +1760,11 @@
-   in
-   let md1 = rm1.desc and md2 = rm2.desc in
-   begin try
--    set_more row1 r2;
--    set_more row2 r1;
-+    set_more row1 fixed1 r2;
-+    set_more row2 fixed2 r1;
-     List.iter
-       (fun (l,f1,f2) ->
--        try unify_row_field env row1.row_fixed row2.row_fixed l f1 f2
-+        try unify_row_field env fixed1 fixed2 row1 row2 l f1 f2
-         with Unify trace ->
-           raise (Unify ((mkvariant [l,f1] true,
-                          mkvariant [l,f2] true) :: trace)))
-@@ -1761,13 +1773,13 @@
-     log_type rm1; rm1.desc <- md1; log_type rm2; rm2.desc <- md2; raise exn
-   end
--and unify_row_field env fixed1 fixed2 l f1 f2 =
-+and unify_row_field env fixed1 fixed2 row1 row2 l f1 f2 =
-   let f1 = row_field_repr f1 and f2 = row_field_repr f2 in
-   if f1 == f2 then () else
-   match f1, f2 with
-     Rpresent(Some t1), Rpresent(Some t2) -> unify env t1 t2
-   | Rpresent None, Rpresent None -> ()
--  | Reither(c1, tl1, m1, e1), Reither(c2, tl2, m2, e2) ->
-+  | Reither(c1, tl1, m1, tp1, e1), Reither(c2, tl2, m2, tp2, e2) ->
-       if e1 == e2 then () else
-       let redo =
-         (m1 || m2) &&
-@@ -1777,32 +1789,70 @@
-             List.iter (unify env t1) tl;
-             !e1 <> None || !e2 <> None
-         end in
--      if redo then unify_row_field env fixed1 fixed2 l f1 f2 else
-+      let redo =
-+        redo || begin
-+          if tp1 = [] && fixed1 then unify_pairs env tp2;
-+          if tp2 = [] && fixed2 then unify_pairs env tp1;
-+          !e1 <> None || !e2 <> None
-+        end
-+      in
-+      if redo then unify_row_field env fixed1 fixed2 row1 row2 l f1 f2 else
-       let tl1 = List.map repr tl1 and tl2 = List.map repr tl2 in
-       let rec remq tl = function [] -> []
-         | ty :: tl' ->
-             if List.memq ty tl then remq tl tl' else ty :: remq tl tl'
-       in
-       let tl2' = remq tl2 tl1 and tl1' = remq tl1 tl2 in
-+      let repr_pairs = List.map (fun (t1,t2) -> repr t1, repr t2) in
-+      let tp1 = repr_pairs tp1 and tp2 = repr_pairs tp2 in
-+      let rec rempq tp = function [] -> []
-+        | (t1,t2 as p) :: tp' ->
-+            if List.exists (fun (t1',t2') -> t1==t1' && t2==t2') (tp@tp') then
-+              rempq tp tp'
-+            else p :: rempq tp tp'
-+      in
-+      let tp1' =
-+        if fixed2 then begin
-+          delayed_conditionals :=
-+            (!univar_pairs, tp1, l, row2) :: !delayed_conditionals;
-+          []
-+        end else rempq tp2 tp1
-+      and tp2' =
-+        if fixed1 then begin
-+          delayed_conditionals :=
-+            (!univar_pairs, tp2, l, row1) :: !delayed_conditionals;
-+          []
-+        end else rempq tp1 tp2
-+      in
-       let e = ref None in
--      let f1' = Reither(c1 || c2, tl1', m1 || m2, e)
--      and f2' = Reither(c1 || c2, tl2', m1 || m2, e) in
--      set_row_field e1 f1'; set_row_field e2 f2';
--  | Reither(_, _, false, e1), Rabsent -> set_row_field e1 f2
--  | Rabsent, Reither(_, _, false, e2) -> set_row_field e2 f1
-+      let f1' = Reither(c1 || c2, tl1', m1 || m2, tp2', e)
-+      and f2' = Reither(c1 || c2, tl2', m1 || m2, tp1', e) in
-+      set_row_field e1 f1'; set_row_field e2 f2'
-+  | Reither(_, _, false, _, e1), Rabsent -> set_row_field e1 f2
-+  | Rabsent, Reither(_, _, false, _, e2) -> set_row_field e2 f1
-   | Rabsent, Rabsent -> ()
--  | Reither(false, tl, _, e1), Rpresent(Some t2) when not fixed1 ->
-+  | Reither(false, tl, _, tp, e1), Rpresent(Some t2) when not fixed1 ->
-       set_row_field e1 f2;
--      (try List.iter (fun t1 -> unify env t1 t2) tl
-+      begin try
-+        List.iter (fun t1 -> unify env t1 t2) tl;
-+        List.iter (fun (t1,t2) -> unify env t1 t2) tp
-+      with exn -> e1 := None; raise exn
-+      end
-+  | Rpresent(Some t1), Reither(false, tl, _, tp, e2) when not fixed2 ->
-+      set_row_field e2 f1;
-+      begin try
-+        List.iter (unify env t1) tl;
-+        List.iter (fun (t1,t2) -> unify env t1 t2) tp
-+      with exn -> e2 := None; raise exn
-+      end
-+  | Reither(true, [], _, tpl, e1), Rpresent None when not fixed1 ->
-+      set_row_field e1 f2;
-+      (try List.iter (fun (t1,t2) -> unify env t1 t2) tpl
-       with exn -> e1 := None; raise exn)
--  | Rpresent(Some t1), Reither(false, tl, _, e2) when not fixed2 ->
-+  | Rpresent None, Reither(true, [], _, tpl, e2) when not fixed2 ->
-       set_row_field e2 f1;
--      (try List.iter (unify env t1) tl
-+      (try List.iter (fun (t1,t2) -> unify env t1 t2) tpl
-       with exn -> e2 := None; raise exn)
--  | Reither(true, [], _, e1), Rpresent None when not fixed1 ->
--      set_row_field e1 f2
--  | Rpresent None, Reither(true, [], _, e2) when not fixed2 ->
--      set_row_field e2 f1
-   | _ -> raise (Unify [])
-     
-@@ -1920,6 +1970,166 @@
-                         (*  Matching between type schemes  *)
-                         (***********************************)
-+(* Forward declaration (order should be reversed...) *)
-+let equal' = ref (fun _ -> failwith "Ctype.equal'")
-+
-+let make_generics_univars tyl =
-+  let polyvars = ref TypeSet.empty in
-+  let rec make_rec ty =
-+    let ty = repr ty in
-+    if ty.level = generic_level then begin
-+      if ty.desc = Tvar  then begin
-+        log_type ty;
-+        ty.desc <- Tunivar;
-+        polyvars := TypeSet.add ty !polyvars
-+      end
-+      else if ty.desc = Tunivar then set_level ty (generic_level - 1);
-+      ty.level <- pivot_level - generic_level;
-+      iter_type_expr make_rec ty
-+    end
-+  in
-+  List.iter make_rec tyl;
-+  List.iter unmark_type tyl;
-+  !polyvars
-+
-+(* New version of moregeneral, using unification *)
-+
-+let copy_cond (p,tpl,l,row) =
-+  let row =
-+    match repr (copy (newgenty (Tvariant row))) with
-+      {desc=Tvariant row} -> row
-+    | _ -> assert false
-+  and pairs =
-+    List.map (fun (t1,t2) -> copy t1, copy t2) tpl in
-+  (p, pairs, l, row)
-+
-+let get_row_field l row =
-+  try row_field_repr (List.assoc l (row_repr row).row_fields)
-+  with Not_found -> Rabsent
-+
-+let rec check_conditional_list env cdtls pattvars tpls =
-+  match cdtls with
-+    [] ->
-+      let finished =
-+        List.for_all (fun (_,t1,t2) -> !equal' env false [t1] [t2]) tpls in
-+      if not finished then begin
-+        let polyvars = make_generics_univars pattvars in
-+        delayed_conditionals := [];
-+        allowed_univars := polyvars;
-+        List.iter (fun (pairs, ty1, ty2) -> unify_pairs env ty1 ty2 pairs)
-+          tpls;
-+        check_conditionals env polyvars !delayed_conditionals
-+      end
-+  | (pairs, tpl1, l, row2 as cond) :: cdtls ->
-+      let cont = check_conditional_list env cdtls pattvars in
-+      let tpl1 =
-+        List.filter (fun (t1,t2) -> not (!equal' env false [t1] [t2])) tpl1 in
-+      let included =
-+        List.for_all
-+          (fun (t1,t2) ->
-+            List.exists
-+              (fun (_,t1',t2') -> !equal' env false [t1;t2] [t1';t2'])
-+              tpls)
-+          tpl1 in
-+      if included then cont tpls else
-+      match get_row_field l row2 with
-+        Rpresent _ ->
-+          cont (List.map (fun (t1,t2) -> (pairs,t1,t2)) tpl1 @ tpls)
-+      | Rabsent -> cont tpls
-+      | Reither (c, tl2, _, _, _) ->
-+          cont tpls;
-+          if c && tl2 <> [] then () (* cannot succeed *) else
-+          let (pairs, tpl1, l, row2) = copy_cond cond
-+          and tpls = List.map (fun (p,t1,t2) -> p, copy t1, copy t2) tpls
-+          and pattvars = List.map copy pattvars
-+          and cdtls = List.map copy_cond cdtls in
-+          cleanup_types ();
-+          let tl2, tpl2, e2 =
-+            match get_row_field l row2 with
-+              Reither (c, tl2, _, tpl2, e2) -> tl2, tpl2, e2
-+            | _ -> assert false
-+          in
-+          let snap = Btype.snapshot () in
-+          let ok =
-+            try
-+              begin match tl2 with
-+                [] ->
-+                  set_row_field e2 (Rpresent None)
-+              | t::tl ->
-+                  set_row_field e2 (Rpresent (Some t));
-+                  List.iter (unify env t) tl
-+              end;
-+              List.iter (fun (t1,t2) -> unify_pairs env t1 t2 pairs) tpl2;
-+              true
-+            with exn ->
-+              Btype.backtrack snap;
-+              false
-+          in
-+            (* This is not [cont] : types have been copied *)
-+          if ok then
-+            check_conditional_list env cdtls pattvars
-+              (List.map (fun (t1,t2) -> (pairs,t1,t2)) tpl1 @ tpls)
-+
-+and check_conditionals env polyvars cdtls =
-+  let cdtls = List.map copy_cond cdtls in
-+  let pattvars = ref [] in
-+  TypeSet.iter
-+    (fun ty ->
-+      let ty = repr ty in
-+      match ty.desc with
-+        Tsubst ty ->
-+          let ty = repr ty in
-+          begin match ty.desc with
-+            Tunivar ->
-+              log_type ty;
-+              ty.desc <- Tvar;
-+              pattvars := ty :: !pattvars
-+          | Ttuple [tv;_] ->
-+              if tv.desc = Tunivar then
-+                (log_type tv; tv.desc <- Tvar; pattvars := ty :: !pattvars)
-+              else if tv.desc <> Tvar then assert false
-+          | Tvar -> ()
-+          | _ -> assert false
-+          end
-+      | _ -> ())
-+    polyvars;
-+  cleanup_types ();
-+  check_conditional_list env cdtls !pattvars []
-+  
-+
-+(* Must empty univar_pairs first *)
-+let unify_poly env polyvars subj patt =
-+  let old_level = !current_level in
-+  current_level := generic_level;
-+  delayed_conditionals := [];
-+  allowed_univars := polyvars;
-+  try
-+    unify env subj patt;
-+    check_conditionals env polyvars !delayed_conditionals;
-+    current_level := old_level;
-+    allowed_univars := TypeSet.empty;
-+    delayed_conditionals := []
-+  with exn ->
-+    current_level := old_level;
-+    allowed_univars := TypeSet.empty;
-+    delayed_conditionals := [];
-+    raise exn
-+
-+let moregeneral env _ subj patt =
-+  let old_level = !current_level in
-+  current_level := generic_level;
-+  let subj = instance subj
-+  and patt = instance patt in
-+  let polyvars = make_generics_univars [patt] in
-+  current_level := old_level;
-+  let snap = Btype.snapshot () in
-+  try
-+    unify_poly env polyvars subj patt;
-+    true
-+  with Unify _ ->
-+    Btype.backtrack snap;
-+    false
-+
- (*
-    Update the level of [ty]. First check that the levels of generic
-    variables from the subject are not lowered.
-@@ -2072,35 +2282,101 @@
-         Rpresent(Some t1), Rpresent(Some t2) ->
-           moregen inst_nongen type_pairs env t1 t2
-       | Rpresent None, Rpresent None -> ()
--      | Reither(false, tl1, _, e1), Rpresent(Some t2) when not univ ->
-+      | Reither(false, tl1, _, [], e1), Rpresent(Some t2) when not univ ->
-           set_row_field e1 f2;
-           List.iter (fun t1 -> moregen inst_nongen type_pairs env t1 t2) tl1
--      | Reither(c1, tl1, _, e1), Reither(c2, tl2, m2, e2) ->
-+      | Reither(c1, tl1, _, tpl1, e1), Reither(c2, tl2, m2, tpl2, e2) ->
-           if e1 != e2 then begin
-             if c1 && not c2 then raise(Unify []);
--            set_row_field e1 (Reither (c2, [], m2, e2));
--            if List.length tl1 = List.length tl2 then
--              List.iter2 (moregen inst_nongen type_pairs env) tl1 tl2
--            else match tl2 with
--              t2 :: _ ->
-+            let tpl' = if tpl1 = [] then tpl2 else [] in
-+            set_row_field e1 (Reither (c2, [], m2, tpl', e2));
-+            begin match tl2 with
-+              [t2] ->
-                 List.iter (fun t1 -> moregen inst_nongen type_pairs env t1 t2)
-                   tl1
--            | [] ->
--                if tl1 <> [] then raise (Unify [])
-+            | _ ->
-+                if List.length tl1 <> List.length tl2 then raise (Unify []);
-+                List.iter2 (moregen inst_nongen type_pairs env) tl1 tl2
-+            end;
-+            if tpl1 <> [] then
-+              delayed_conditionals :=
-+                (!univar_pairs, tpl1, l, row2) :: !delayed_conditionals
-           end
--      | Reither(true, [], _, e1), Rpresent None when not univ ->
-+      | Reither(true, [], _, [], e1), Rpresent None when not univ ->
-           set_row_field e1 f2
--      | Reither(_, _, _, e1), Rabsent when not univ ->
-+      | Reither(_, _, _, [], e1), Rabsent when not univ ->
-           set_row_field e1 f2
-       | Rabsent, Rabsent -> ()
-       | _ -> raise (Unify []))
-     pairs
-+let check_conditional env (pairs, tpl1, l, row2) tpls cont =
-+  let tpl1 =
-+    List.filter (fun (t1,t2) -> not (!equal' env false [t1] [t2])) tpl1 in
-+  let included =
-+    List.for_all
-+      (fun (t1,t2) ->
-+        List.exists (fun (t1',t2') -> !equal' env false [t1;t2] [t1';t2'])
-+          tpls)
-+      tpl1 in
-+  if tpl1 = [] || included then cont tpls else
-+  match get_row_field l row2 with
-+    Rpresent _ -> cont (tpl1 @ tpls)
-+  | Rabsent -> cont tpls
-+  | Reither (c, tl2, _, tpl2, e2) ->
-+      if not c || tl2 = [] then begin
-+        let snap = Btype.snapshot () in
-+        let ok =
-+          try
-+            begin match tl2 with
-+              [] ->
-+                set_row_field e2 (Rpresent None)
-+            | t::tl ->
-+                set_row_field e2 (Rpresent (Some t));
-+                List.iter (unify env t) tl
-+            end;
-+            List.iter (fun (t1,t2) -> unify_pairs env t1 t2 pairs) tpl2;
-+            true
-+          with Unify _ -> false
-+        in
-+        if ok then cont (tpl1 @ tpls);
-+        Btype.backtrack snap
-+      end;
-+      cont tpls
-+
-+let rec check_conditionals inst_nongen env cdtls tpls =
-+  match cdtls with
-+    [] ->
-+      let tpls =
-+        List.filter (fun (t1,t2) -> not (!equal' env false [t1] [t2])) tpls in
-+      if tpls = [] then () else begin
-+        delayed_conditionals := [];
-+        let tl1, tl2 = List.split tpls in
-+        let type_pairs = TypePairs.create 13 in
-+        List.iter2 (moregen false type_pairs env) tl2 tl1;
-+        check_conditionals inst_nongen env !delayed_conditionals []
-+      end
-+  | cdtl :: cdtls ->
-+      check_conditional env cdtl tpls
-+        (check_conditionals inst_nongen env cdtls)
-+
-+
- (* Must empty univar_pairs first *)
- let moregen inst_nongen type_pairs env patt subj =
-   univar_pairs := [];
--  moregen inst_nongen type_pairs env patt subj
-+  delayed_conditionals := [];
-+  try
-+    moregen inst_nongen type_pairs env patt subj;
-+    check_conditionals inst_nongen env !delayed_conditionals [];
-+    univar_pairs := [];
-+    delayed_conditionals := []
-+  with exn ->
-+    univar_pairs := [];
-+    delayed_conditionals := [];
-+    raise exn
-+
-+(* old implementation
- (*
-    Non-generic variable can be instanciated only if [inst_nongen] is
-    true. So, [inst_nongen] should be set to false if the subject might
-@@ -2128,6 +2404,7 @@
-   in
-   current_level := old_level;
-   res
-+*)
- (* Alternative approach: "rigidify" a type scheme,
-@@ -2296,30 +2573,36 @@
-     {desc=Tvariant row2} -> eqtype_row rename type_pairs subst env row1 row2
-   | _ -> raise Cannot_expand
-   with Cannot_expand ->
-+  let eqtype_rec = eqtype rename type_pairs subst env in
-   let row1 = row_repr row1 and row2 = row_repr row2 in
-   let r1, r2, pairs = merge_row_fields row1.row_fields row2.row_fields in
-   if row1.row_closed <> row2.row_closed
-   || not row1.row_closed && (r1 <> [] || r2 <> [])
-   || filter_row_fields false (r1 @ r2) <> []
-   then raise (Unify []);
--  if not (static_row row1) then
--    eqtype rename type_pairs subst env row1.row_more row2.row_more;
-+  if not (static_row row1) then eqtype_rec row1.row_more row2.row_more;
-   List.iter
-     (fun (_,f1,f2) ->
-       match row_field_repr f1, row_field_repr f2 with
-         Rpresent(Some t1), Rpresent(Some t2) ->
--          eqtype rename type_pairs subst env t1 t2
--      | Reither(true, [], _, _), Reither(true, [], _, _) ->
--          ()
--      | Reither(false, t1::tl1, _, _), Reither(false, t2::tl2, _, _) ->
--          eqtype rename type_pairs subst env t1 t2;
-+          eqtype_rec t1 t2
-+      | Reither(true, [], _, tp1, _), Reither(true, [], _, tp2, _) ->
-+          List.iter2
-+            (fun (t1,t1') (t2,t2') -> eqtype_rec t1 t2; eqtype_rec t1' t2')
-+            tp1 tp2
-+      | Reither(false, t1::tl1, _, tpl1, _),
-+        Reither(false, t2::tl2, _, tpl2, _) ->
-+          eqtype_rec t1 t2;
-+          List.iter2
-+            (fun (t1,t1') (t2,t2') -> eqtype_rec t1 t2; eqtype_rec t1' t2')
-+            tpl1 tpl2;
-           if List.length tl1 = List.length tl2 then
-             (* if same length allow different types (meaning?) *)
--            List.iter2 (eqtype rename type_pairs subst env) tl1 tl2
-+            List.iter2 eqtype_rec tl1 tl2
-           else begin
-             (* otherwise everything must be equal *)
--            List.iter (eqtype rename type_pairs subst env t1) tl2;
--            List.iter (fun t1 -> eqtype rename type_pairs subst env t1 t2) tl1
-+            List.iter (eqtype_rec t1) tl2;
-+            List.iter (fun t1 -> eqtype_rec t1 t2) tl1
-           end
-       | Rpresent None, Rpresent None -> ()
-       | Rabsent, Rabsent -> ()
-@@ -2334,6 +2617,8 @@
-   with
-     Unify _ -> false
-+let () = equal' := equal
-+
- (* Must empty univar_pairs first *)  
- let eqtype rename type_pairs subst env t1 t2 =
-   univar_pairs := [];
-@@ -2770,14 +3055,14 @@
-           (fun (l,f as orig) -> match row_field_repr f with
-             Rpresent None ->
-               if posi then
--                (l, Reither(true, [], false, ref None)), Unchanged
-+                (l, Reither(true, [], false, [], ref None)), Unchanged
-               else
-                 orig, Unchanged
-           | Rpresent(Some t) ->
-               let (t', c) = build_subtype env visited loops posi level' t in
-               if posi && level > 0 then begin
-                 bound := t' :: !bound;
--                (l, Reither(false, [t'], false, ref None)), c
-+                (l, Reither(false, [t'], false, [], ref None)), c
-               end else
-                 (l, Rpresent(Some t')), c
-           | _ -> assert false)
-@@ -2960,11 +3245,11 @@
-       List.fold_left
-         (fun cstrs (_,f1,f2) ->
-           match row_field_repr f1, row_field_repr f2 with
--            (Rpresent None|Reither(true,_,_,_)), Rpresent None ->
-+            (Rpresent None|Reither(true,_,_,[],_)), Rpresent None ->
-               cstrs
-           | Rpresent(Some t1), Rpresent(Some t2) ->
-               subtype_rec env ((t1, t2)::trace) t1 t2 cstrs
--          | Reither(false, t1::_, _, _), Rpresent(Some t2) ->
-+          | Reither(false, t1::_, _, [], _), Rpresent(Some t2) ->
-               subtype_rec env ((t1, t2)::trace) t1 t2 cstrs
-           | Rabsent, _ -> cstrs
-           | _ -> raise Exit)
-@@ -2977,11 +3262,11 @@
-         (fun cstrs (_,f1,f2) ->
-           match row_field_repr f1, row_field_repr f2 with
-             Rpresent None, Rpresent None
--          | Reither(true,[],_,_), Reither(true,[],_,_)
-+          | Reither(true,[],_,[],_), Reither(true,[],_,[],_)
-           | Rabsent, Rabsent ->
-               cstrs
-           | Rpresent(Some t1), Rpresent(Some t2)
--          | Reither(false,[t1],_,_), Reither(false,[t2],_,_) ->
-+          | Reither(false,[t1],_,[],_), Reither(false,[t2],_,[],_) ->
-               subtype_rec env ((t1, t2)::trace) t1 t2 cstrs
-           | _ -> raise Exit)
-         cstrs pairs
-@@ -3079,16 +3364,26 @@
-       let fields = List.map
-           (fun (l,f) ->
-             let f = row_field_repr f in l,
--            match f with Reither(b, ty::(_::_ as tyl), m, e) ->
--              let tyl' =
--                List.fold_left
--                  (fun tyl ty ->
--                    if List.exists (fun ty' -> equal env false [ty] [ty']) tyl
--                    then tyl else ty::tyl)
--                  [ty] tyl
-+            match f with Reither(b, tyl, m, tp, e) ->
-+              let rem_dbl eq l =
-+                List.rev
-+                  (List.fold_left
-+                     (fun xs x -> if List.exists (eq x) xs then xs else x::xs)
-+                     [] l)
-+              in
-+              let tyl' = rem_dbl (fun t1 t2 -> equal env false [t1] [t2]) tyl
-+              and tp' =
-+                  List.filter
-+                    (fun (ty1,ty2) -> not (equal env false [ty1] [ty2])) tp
-+              in
-+              let tp' =
-+                rem_dbl
-+                  (fun (t1,t2) (t1',t2') -> equal env false [t1;t2] [t1';t2'])
-+                  tp'
-               in
--              if List.length tyl' <= List.length tyl then
--                let f = Reither(b, List.rev tyl', m, ref None) in
-+              if List.length tyl' < List.length tyl
-+              || List.length tp' < List.length tp then
-+                let f = Reither(b, tyl', m, tp', ref None) in
-                 set_row_field e f;
-                 f
-               else f
-@@ -3344,9 +3639,9 @@
-       List.iter
-         (fun (l,fi) ->
-           match row_field_repr fi with
--            Reither (c, t1::(_::_ as tl), m, e) ->
-+            Reither (c, t1::(_::_ as tl), m, tp, e) ->
-               List.iter (unify env t1) tl;
--              set_row_field e (Reither (c, [t1], m, ref None))
-+              set_row_field e (Reither (c, [t1], m, tp, ref None))
-           | _ ->
-               ())
-         row.row_fields;
-Index: typing/includecore.ml
-===================================================================
-RCS file: /net/yquem/devel/caml/repository/csl/typing/includecore.ml,v
-retrieving revision 1.32
-diff -u -r1.32 includecore.ml
---- typing/includecore.ml      8 Aug 2005 05:40:52 -0000       1.32
-+++ typing/includecore.ml      2 Feb 2006 06:28:32 -0000
-@@ -71,10 +71,10 @@
-       (fun (_, f1, f2) ->
-         match Btype.row_field_repr f1, Btype.row_field_repr f2 with
-           Rpresent(Some t1),
--          (Rpresent(Some t2) | Reither(false, [t2], _, _)) ->
-+          (Rpresent(Some t2) | Reither(false,[t2],_,[],_)) ->
-             to_equal := (t1,t2) :: !to_equal; true
--        | Rpresent None, (Rpresent None | Reither(true, [], _, _)) -> true
--        | Reither(c1,tl1,_,_), Reither(c2,tl2,_,_)
-+        | Rpresent None, (Rpresent None | Reither(true,[],_,[],_)) -> true
-+        | Reither(c1,tl1,_,[],_), Reither(c2,tl2,_,[],_)
-           when List.length tl1 = List.length tl2 && c1 = c2 ->
-             to_equal := List.combine tl1 tl2 @ !to_equal; true
-         | Rabsent, (Reither _ | Rabsent) -> true
-Index: typing/oprint.ml
-===================================================================
-RCS file: /net/yquem/devel/caml/repository/csl/typing/oprint.ml,v
-retrieving revision 1.22
-diff -u -r1.22 oprint.ml
---- typing/oprint.ml   23 Mar 2005 03:08:37 -0000      1.22
-+++ typing/oprint.ml   2 Feb 2006 06:28:33 -0000
-@@ -223,14 +223,18 @@
-       print_fields rest ppf []
-   | (s, t) :: l ->
-       fprintf ppf "%s : %a;@ %a" s print_out_type t (print_fields rest) l
--and print_row_field ppf (l, opt_amp, tyl) =
-+and print_row_field ppf (l, opt_amp, tyl, tpl) =
-   let pr_of ppf =
-     if opt_amp then fprintf ppf " of@ &@ "
-     else if tyl <> [] then fprintf ppf " of@ "
--    else fprintf ppf ""
--  in
--  fprintf ppf "@[<hv 2>`%s%t%a@]" l pr_of (print_typlist print_out_type " &")
--    tyl
-+  and pr_tp ppf (t1,t2) =
-+    fprintf ppf "@[<hv 2>%a =@ %a@]"
-+      print_out_type t1
-+      print_out_type t2
-+  in
-+  fprintf ppf "@[<hv 2>`%s%t%a%a@]" l pr_of
-+    (print_typlist print_out_type " &") tyl
-+    (print_list_init pr_tp (fun ppf -> fprintf ppf " &@ ")) tpl
- and print_typlist print_elem sep ppf =
-   function
-     [] -> ()
-Index: typing/outcometree.mli
-===================================================================
-RCS file: /net/yquem/devel/caml/repository/csl/typing/outcometree.mli,v
-retrieving revision 1.14
-diff -u -r1.14 outcometree.mli
---- typing/outcometree.mli     23 Mar 2005 03:08:37 -0000      1.14
-+++ typing/outcometree.mli     2 Feb 2006 06:28:33 -0000
-@@ -61,7 +61,8 @@
-       bool * out_variant * bool * (string list) option
-   | Otyp_poly of string list * out_type
- and out_variant =
--  | Ovar_fields of (string * bool * out_type list) list
-+  | Ovar_fields of
-+      (string * bool * out_type list * (out_type * out_type) list ) list
-   | Ovar_name of out_ident * out_type list
- type out_class_type =
-Index: typing/parmatch.ml
-===================================================================
-RCS file: /net/yquem/devel/caml/repository/csl/typing/parmatch.ml,v
-retrieving revision 1.70
-diff -u -r1.70 parmatch.ml
---- typing/parmatch.ml 24 Mar 2005 17:20:54 -0000      1.70
-+++ typing/parmatch.ml 2 Feb 2006 06:28:33 -0000
-@@ -568,11 +568,11 @@
-     List.fold_left
-       (fun nm (tag,f) ->
-         match Btype.row_field_repr f with
--        | Reither(_, _, false, e) ->
-+        | Reither(_, _, false, _, e) ->
-             (* m=false means that this tag is not explicitly matched *)
-             Btype.set_row_field e Rabsent;
-             None
--        | Rabsent | Reither (_, _, true, _) | Rpresent _ -> nm)
-+        | Rabsent | Reither (_, _, true, _, _) | Rpresent _ -> nm)
-       row.row_name row.row_fields in
-   if not row.row_closed || nm != row.row_name then begin
-     (* this unification cannot fail *)
-@@ -605,8 +605,8 @@
-       List.for_all
-         (fun (tag,f) ->
-           match Btype.row_field_repr f with
--            Rabsent | Reither(_, _, false, _) -> true
--          | Reither (_, _, true, _)
-+            Rabsent | Reither(_, _, false, _, _) -> true
-+          | Reither (_, _, true, _, _)
-               (* m=true, do not discard matched tags, rather warn *)
-           | Rpresent _ -> List.mem tag fields)
-         row.row_fields
-@@ -739,7 +739,7 @@
-           match Btype.row_field_repr f with
-             Rabsent (* | Reither _ *) -> others
-           (* This one is called after erasing pattern info *)
--          | Reither (c, _, _, _) -> make_other_pat tag c :: others
-+          | Reither (c, _, _, _, _) -> make_other_pat tag c :: others
-           | Rpresent arg -> make_other_pat tag (arg = None) :: others)
-         [] row.row_fields
-     with
-Index: typing/printtyp.ml
-===================================================================
-RCS file: /net/yquem/devel/caml/repository/csl/typing/printtyp.ml,v
-retrieving revision 1.140
-diff -u -r1.140 printtyp.ml
---- typing/printtyp.ml 4 Jan 2006 16:55:50 -0000       1.140
-+++ typing/printtyp.ml 2 Feb 2006 06:28:33 -0000
-@@ -157,9 +157,12 @@
- and raw_field ppf = function
-     Rpresent None -> fprintf ppf "Rpresent None"
-   | Rpresent (Some t) -> fprintf ppf "@[<1>Rpresent(Some@,%a)@]" raw_type t
--  | Reither (c,tl,m,e) ->
--      fprintf ppf "@[<hov1>Reither(%b,@,%a,@,%b,@,@[<1>ref%t@])@]" c
--        raw_type_list tl m
-+  | Reither (c,tl,m,tpl,e) ->
-+      fprintf ppf "@[<hov1>Reither(%b,@,%a,@,%b,@,%a,@,@[<1>ref%t@])@]"
-+        c raw_type_list tl m
-+        (raw_list
-+           (fun ppf (t1,t2) ->
-+             fprintf ppf "@[%a,@,%a@]" raw_type t1 raw_type t2)) tpl
-         (fun ppf ->
-           match !e with None -> fprintf ppf " None"
-           | Some f -> fprintf ppf "@,@[<1>(%a)@]" raw_field f)
-@@ -219,8 +222,9 @@
-   List.for_all
-     (fun (_, f) ->
-        match row_field_repr f with
--       | Reither(c, l, _, _) ->
--           row.row_closed && if c then l = [] else List.length l = 1
-+       | Reither(c, l, _, pl, _) ->
-+           row.row_closed && pl = [] &&
-+           if c then l = [] else List.length l = 1
-        | _ -> true)
-     row.row_fields
-@@ -392,13 +396,16 @@
- and tree_of_row_field sch (l, f) =
-   match row_field_repr f with
--  | Rpresent None | Reither(true, [], _, _) -> (l, false, [])
--  | Rpresent(Some ty) -> (l, false, [tree_of_typexp sch ty])
--  | Reither(c, tyl, _, _) ->
--      if c (* contradiction: un constructeur constant qui a un argument *)
--      then (l, true, tree_of_typlist sch tyl)
--      else (l, false, tree_of_typlist sch tyl)
--  | Rabsent -> (l, false, [] (* une erreur, en fait *))
-+  | Rpresent None | Reither(true, [], _, [], _) -> (l, false, [], [])
-+  | Rpresent(Some ty) -> (l, false, [tree_of_typexp sch ty], [])
-+  | Reither(c, tyl, _, tpl, _) ->
-+      let ttpl =
-+        List.map
-+          (fun (t1,t2) -> tree_of_typexp sch t1, tree_of_typexp sch t2)
-+          tpl
-+      in
-+      (l, c && tpl = [], tree_of_typlist sch tyl, ttpl)
-+  | Rabsent -> (l, false, [], [] (* une erreur, en fait *))
- and tree_of_typlist sch tyl =
-   List.map (tree_of_typexp sch) tyl
-Index: typing/typeclass.ml
-===================================================================
-RCS file: /net/yquem/devel/caml/repository/csl/typing/typeclass.ml,v
-retrieving revision 1.85
-diff -u -r1.85 typeclass.ml
---- typing/typeclass.ml        22 Jul 2005 06:42:36 -0000      1.85
-+++ typing/typeclass.ml        2 Feb 2006 06:28:33 -0000
-@@ -727,7 +727,7 @@
-         {pexp_loc = loc; pexp_desc =
-          Pexp_match({pexp_loc = loc; pexp_desc =
-                      Pexp_ident(Longident.Lident"*opt*")},
--                    scases)} in
-+                    scases, false)} in
-       let sfun =
-         {pcl_loc = scl.pcl_loc; pcl_desc =
-          Pcl_fun(l, None, {ppat_loc = loc; ppat_desc = Ppat_var"*opt*"},
-Index: typing/typecore.ml
-===================================================================
-RCS file: /net/yquem/devel/caml/repository/csl/typing/typecore.ml,v
-retrieving revision 1.178
-diff -u -r1.178 typecore.ml
---- typing/typecore.ml 6 Jan 2006 02:25:37 -0000       1.178
-+++ typing/typecore.ml 2 Feb 2006 06:28:33 -0000
-@@ -156,15 +156,21 @@
-       let field = row_field tag row in
-       begin match field with
-       | Rabsent -> assert false
--      | Reither (true, [], _, e) when not row.row_closed ->
--          set_row_field e (Rpresent None)
--      | Reither (false, ty::tl, _, e) when not row.row_closed ->
-+      | Reither (true, [], _, tpl, e) when not row.row_closed ->
-+          set_row_field e (Rpresent None);
-+          List.iter
-+            (fun (t1,t2) -> unify_pat pat.pat_env {pat with pat_type=t1} t2)
-+            tpl
-+      | Reither (false, ty::tl, _, tpl, e) when not row.row_closed ->
-           set_row_field e (Rpresent (Some ty));
-+          List.iter
-+            (fun (t1,t2) -> unify_pat pat.pat_env {pat with pat_type=t1} t2)
-+            tpl;
-           begin match opat with None -> assert false
-           | Some pat -> List.iter (unify_pat pat.pat_env pat) (ty::tl)
-           end
--      | Reither (c, l, true, e) when not row.row_fixed ->
--          set_row_field e (Reither (c, [], false, ref None))
-+      | Reither (c, l, true, tpl, e) when not row.row_fixed ->
-+          set_row_field e (Reither (c, [], false, [], ref None))
-       | _ -> ()
-       end;
-       (* Force check of well-formedness *)
-@@ -307,13 +313,13 @@
-         match row_field_repr f with
-           Rpresent None ->
-             (l,None) :: pats,
--            (l, Reither(true,[], true, ref None)) :: fields
-+            (l, Reither(true,[], true, [], ref None)) :: fields
-         | Rpresent (Some ty) ->
-             bound := ty :: !bound;
-             (l, Some {pat_desc=Tpat_any; pat_loc=Location.none; pat_env=env;
-                       pat_type=ty})
-             :: pats,
--            (l, Reither(false, [ty], true, ref None)) :: fields
-+            (l, Reither(false, [ty], true, [], ref None)) :: fields
-         | _ -> pats, fields)
-       ([],[]) fields in
-   let row =
-@@ -337,6 +343,18 @@
-           pat pats in
-       rp { r with pat_loc = loc }
-+let rec flatten_or_pat pat =
-+  match pat.pat_desc with
-+    Tpat_or (p1, p2, _) ->
-+      flatten_or_pat p1 @ flatten_or_pat p2
-+  | _ ->
-+      [pat]
-+
-+let all_variants pat =
-+  List.for_all
-+    (function {pat_desc=Tpat_variant _} -> true | _ -> false)
-+    (flatten_or_pat pat)
-+
- let rec find_record_qual = function
-   | [] -> None
-   | (Longident.Ldot (modname, _), _) :: _ -> Some modname
-@@ -423,7 +441,7 @@
-       let arg = may_map (type_pat env) sarg in
-       let arg_type = match arg with None -> [] | Some arg -> [arg.pat_type]  in
-       let row = { row_fields =
--                    [l, Reither(arg = None, arg_type, true, ref None)];
-+                    [l, Reither(arg = None, arg_type, true, [], ref None)];
-                   row_bound = arg_type;
-                   row_closed = false;
-                   row_more = newvar ();
-@@ -788,7 +806,7 @@
-        newty (Tarrow(p, type_option (newvar ()), type_approx env e, Cok))
-   | Pexp_function (p,_,(_,e)::_) ->
-        newty (Tarrow(p, newvar (), type_approx env e, Cok))
--  | Pexp_match (_, (_,e)::_) -> type_approx env e
-+  | Pexp_match (_, (_,e)::_, false) -> type_approx env e
-   | Pexp_try (e, _) -> type_approx env e
-   | Pexp_tuple l -> newty (Ttuple(List.map (type_approx env) l))
-   | Pexp_ifthenelse (_,e,_) -> type_approx env e
-@@ -939,17 +957,26 @@
-         exp_loc = sexp.pexp_loc;
-         exp_type = ty_res;
-         exp_env = env }
--  | Pexp_match(sarg, caselist) ->
-+  | Pexp_match(sarg, caselist, multi) ->
-       let arg = type_exp env sarg in
-       let ty_res = newvar() in
-       let cases, partial =
--        type_cases env arg.exp_type ty_res (Some sexp.pexp_loc) caselist
-+        type_cases env arg.exp_type ty_res (Some sexp.pexp_loc) caselist ~multi
-       in
-       re {
-         exp_desc = Texp_match(arg, cases, partial);
-         exp_loc = sexp.pexp_loc;
-         exp_type = ty_res;
-         exp_env = env }
-+  | Pexp_multifun caselist ->
-+      let ty_arg = newvar() and ty_res = newvar() in
-+      let cases, partial =
-+        type_cases env ty_arg ty_res (Some sexp.pexp_loc) caselist ~multi:true
-+      in
-+      { exp_desc = Texp_function (cases, partial);
-+        exp_loc = sexp.pexp_loc;
-+        exp_type = newty (Tarrow ("", ty_arg, ty_res, Cok));
-+        exp_env = env }
-   | Pexp_try(sbody, caselist) ->
-       let body = type_exp env sbody in
-       let cases, _ =
-@@ -1758,7 +1785,7 @@
-         {pexp_loc = loc; pexp_desc =
-          Pexp_match({pexp_loc = loc; pexp_desc =
-                      Pexp_ident(Longident.Lident"*opt*")},
--                    scases)} in
-+                    scases, false)} in
-       let sfun =
-         {pexp_loc = sexp.pexp_loc; pexp_desc =
-          Pexp_function(l, None,[{ppat_loc = loc; ppat_desc = Ppat_var"*opt*"},
-@@ -1864,7 +1891,8 @@
- (* Typing of match cases *)
--and type_cases ?in_function env ty_arg ty_res partial_loc caselist =
-+and type_cases ?in_function ?(multi=false)
-+    env ty_arg ty_res partial_loc caselist =
-   let ty_arg' = newvar () in
-   let pattern_force = ref [] in
-   let pat_env_list =
-@@ -1898,10 +1926,64 @@
-   let cases =
-     List.map2
-       (fun (pat, ext_env) (spat, sexp) ->
--        let exp = type_expect ?in_function ext_env sexp ty_res in
--        (pat, exp))
--      pat_env_list caselist
--  in
-+        let add_variant_case lab row ty_res ty_res' =
-+          let fi = List.assoc lab (row_repr row).row_fields in
-+          begin match row_field_repr fi with
-+            Reither (c, _, m, _, e) ->
-+              let row' =
-+                { row_fields =
-+                  [lab, Reither(c,[],false,[ty_res,ty_res'], ref None)];
-+                  row_more = newvar (); row_bound = [ty_res; ty_res'];
-+                  row_closed = false; row_fixed = false; row_name = None }
-+              in
-+              unify_pat ext_env {pat with pat_type= newty (Tvariant row)}
-+                (newty (Tvariant row'))
-+          | _ ->
-+              unify_exp ext_env
-+                { exp_desc = Texp_tuple []; exp_type = ty_res;
-+                  exp_env = ext_env; exp_loc = sexp.pexp_loc }
-+                ty_res'
-+          end
-+        in
-+        pat,
-+        match pat.pat_desc with
-+          _ when multi && all_variants pat ->
-+            let ty_res' = newvar () in
-+            List.iter
-+              (function {pat_desc=Tpat_variant(lab,_,row)} ->
-+                add_variant_case lab row ty_res ty_res'
-+              | _ -> assert false)
-+              (flatten_or_pat pat);
-+            type_expect ?in_function ext_env sexp ty_res'
-+        | Tpat_alias (p, id) when multi && all_variants p ->
-+            let vd = Env.find_value (Path.Pident id) ext_env in
-+            let row' =
-+              match repr vd.val_type with
-+                {desc=Tvariant row'} -> row'
-+              | _ -> assert false
-+            in
-+            begin_def ();
-+            let tv = newvar () in
-+            let env = Env.add_value id {vd with val_type=tv} ext_env in
-+            let exp = type_exp env sexp in
-+            end_def ();
-+            generalize exp.exp_type;
-+            generalize tv;
-+            List.iter
-+              (function {pat_desc=Tpat_variant(lab,_,row)}, [tv'; ty'] ->
-+                let fi' = List.assoc lab (row_repr row').row_fields in
-+                let row' =
-+                  {row' with row_fields=[lab,fi']; row_more=newvar()} in
-+                unify_pat ext_env {pat with pat_type=tv'}
-+                  (newty (Tvariant row'));
-+                add_variant_case lab row ty_res ty'
-+              | _ -> assert false)
-+              (List.map (fun p -> p, instance_list [tv; exp.exp_type])
-+                 (flatten_or_pat p));
-+            {exp with exp_type = instance exp.exp_type}
-+        | _ ->
-+            type_expect ?in_function ext_env sexp ty_res)
-+      pat_env_list caselist in
-   let partial =
-     match partial_loc with None -> Partial
-     | Some loc -> Parmatch.check_partial loc cases
-Index: typing/typedecl.ml
-===================================================================
-RCS file: /net/yquem/devel/caml/repository/csl/typing/typedecl.ml,v
-retrieving revision 1.75
-diff -u -r1.75 typedecl.ml
---- typing/typedecl.ml 16 Aug 2005 00:48:56 -0000      1.75
-+++ typing/typedecl.ml 2 Feb 2006 06:28:33 -0000
-@@ -432,8 +432,10 @@
-               match Btype.row_field_repr f with
-                 Rpresent (Some ty) ->
-                   compute_same ty
--              | Reither (_, tyl, _, _) ->
--                  List.iter compute_same tyl
-+              | Reither (_, tyl, _, tpl, _) ->
-+                  List.iter compute_same tyl;
-+                  List.iter (compute_variance_rec true true true)
-+                    (List.map fst tpl @ List.map snd tpl)
-               | _ -> ())
-             row.row_fields;
-           compute_same row.row_more
-@@ -856,8 +858,8 @@
-               explain row.row_fields
-                 (fun (l,f) -> match Btype.row_field_repr f with
-                   Rpresent (Some t) -> t
--                | Reither (_,[t],_,_) -> t
--                | Reither (_,tl,_,_) -> Btype.newgenty (Ttuple tl)
-+                | Reither (_,[t],_,_,_) -> t
-+                | Reither (_,tl,_,_,_) -> Btype.newgenty (Ttuple tl)
-                 | _ -> Btype.newgenty (Ttuple[]))
-                 "case" (fun (lab,_) -> "`" ^ lab ^ " of ")
-           | _ -> trivial ty'
-Index: typing/types.ml
-===================================================================
-RCS file: /net/yquem/devel/caml/repository/csl/typing/types.ml,v
-retrieving revision 1.25
-diff -u -r1.25 types.ml
---- typing/types.ml    9 Dec 2004 12:40:53 -0000       1.25
-+++ typing/types.ml    2 Feb 2006 06:28:33 -0000
-@@ -48,7 +48,9 @@
- and row_field =
-     Rpresent of type_expr option
--  | Reither of bool * type_expr list * bool * row_field option ref
-+  | Reither of
-+      bool * type_expr list * bool *
-+      (type_expr * type_expr) list * row_field option ref
-   | Rabsent
- and abbrev_memo =
-Index: typing/types.mli
-===================================================================
-RCS file: /net/yquem/devel/caml/repository/csl/typing/types.mli,v
-retrieving revision 1.25
-diff -u -r1.25 types.mli
---- typing/types.mli   9 Dec 2004 12:40:53 -0000       1.25
-+++ typing/types.mli   2 Feb 2006 06:28:33 -0000
-@@ -47,7 +47,9 @@
- and row_field =
-     Rpresent of type_expr option
--  | Reither of bool * type_expr list * bool * row_field option ref
-+  | Reither of
-+      bool * type_expr list * bool *
-+      (type_expr * type_expr) list * row_field option ref
-         (* 1st true denotes a constant constructor *)
-         (* 2nd true denotes a tag in a pattern matching, and
-            is erased later *)
-Index: typing/typetexp.ml
-===================================================================
-RCS file: /net/yquem/devel/caml/repository/csl/typing/typetexp.ml,v
-retrieving revision 1.54
-diff -u -r1.54 typetexp.ml
---- typing/typetexp.ml 22 Jul 2005 06:42:36 -0000      1.54
-+++ typing/typetexp.ml 2 Feb 2006 06:28:33 -0000
-@@ -207,9 +207,9 @@
-                 match Btype.row_field_repr f with
-                 | Rpresent (Some ty) ->
-                     bound := ty :: !bound;
--                    Reither(false, [ty], false, ref None)
-+                    Reither(false, [ty], false, [], ref None)
-                 | Rpresent None ->
--                    Reither (true, [], false, ref None)
-+                    Reither (true, [], false, [], ref None)
-                 | _ -> f)
-               row.row_fields
-           in
-@@ -273,13 +273,16 @@
-           (l, f) :: fields
-       in
-       let rec add_field fields = function
--          Rtag (l, c, stl) ->
-+          Rtag (l, c, stl, stpl) ->
-             name := None;
-             let f = match present with
-               Some present when not (List.mem l present) ->
--                let tl = List.map (transl_type env policy) stl in
--                bound := tl @ !bound;
--                Reither(c, tl, false, ref None)
-+                let transl_list = List.map (transl_type env policy) in
-+                let tl = transl_list stl in
-+                let stpl1, stpl2 = List.split stpl in
-+                let tpl1 = transl_list stpl1 and tpl2 = transl_list stpl2 in
-+                bound := tl @ tpl1 @ tpl2 @ !bound;
-+                Reither(c, tl, false, List.combine tpl1 tpl2, ref None)
-             | _ ->
-                 if List.length stl > 1 || c && stl <> [] then
-                   raise(Error(styp.ptyp_loc, Present_has_conjunction l));
-@@ -311,9 +314,9 @@
-                     begin match f with
-                       Rpresent(Some ty) ->
-                         bound := ty :: !bound;
--                        Reither(false, [ty], false, ref None)
-+                        Reither(false, [ty], false, [], ref None)
-                     | Rpresent None ->
--                        Reither(true, [], false, ref None)
-+                        Reither(true, [], false, [], ref None)
-                     | _ ->
-                         assert false
-                     end
-@@ -406,7 +409,8 @@
-               {row with row_fixed=true;
-                row_fields = List.map
-                  (fun (s,f as p) -> match Btype.row_field_repr f with
--                   Reither (c, tl, m, r) -> s, Reither (c, tl, true, r)
-+                   Reither (c, tl, m, tpl, r) ->
-+                     s, Reither (c, tl, true, tpl, r)
-                  | _ -> p)
-                  row.row_fields};
-         Btype.iter_row make_fixed_univars row
-Index: typing/unused_var.ml
-===================================================================
-RCS file: /net/yquem/devel/caml/repository/csl/typing/unused_var.ml,v
-retrieving revision 1.5
-diff -u -r1.5 unused_var.ml
---- typing/unused_var.ml       4 Jan 2006 16:55:50 -0000       1.5
-+++ typing/unused_var.ml       2 Feb 2006 06:28:33 -0000
-@@ -122,9 +122,11 @@
-   | Pexp_apply (e, lel) ->
-       expression ppf tbl e;
-       List.iter (fun (_, e) -> expression ppf tbl e) lel;
--  | Pexp_match (e, pel) ->
-+  | Pexp_match (e, pel, _) ->
-       expression ppf tbl e;
-       match_pel ppf tbl pel;
-+  | Pexp_multifun pel ->
-+      match_pel ppf tbl pel;
-   | Pexp_try (e, pel) ->
-       expression ppf tbl e;
-       match_pel ppf tbl pel;
-Index: bytecomp/matching.ml
-===================================================================
-RCS file: /net/yquem/devel/caml/repository/csl/bytecomp/matching.ml,v
-retrieving revision 1.67
-diff -u -r1.67 matching.ml
---- bytecomp/matching.ml       7 Sep 2005 16:07:48 -0000       1.67
-+++ bytecomp/matching.ml       2 Feb 2006 06:28:33 -0000
-@@ -1991,7 +1991,7 @@
-     List.iter
-       (fun (_, f) ->
-         match Btype.row_field_repr f with
--          Rabsent | Reither(true, _::_, _, _) -> ()
-+          Rabsent | Reither(true, _::_, _, _, _) -> ()
-         | _ -> incr num_constr)
-       row.row_fields
-   else
-Index: toplevel/genprintval.ml
-===================================================================
-RCS file: /net/yquem/devel/caml/repository/csl/toplevel/genprintval.ml,v
-retrieving revision 1.38
-diff -u -r1.38 genprintval.ml
---- toplevel/genprintval.ml    13 Jun 2005 04:55:53 -0000      1.38
-+++ toplevel/genprintval.ml    2 Feb 2006 06:28:33 -0000
-@@ -293,7 +293,7 @@
-                   | (l, f) :: fields ->
-                       if Btype.hash_variant l = tag then
-                         match Btype.row_field_repr f with
--                        | Rpresent(Some ty) | Reither(_,[ty],_,_) ->
-+                        | Rpresent(Some ty) | Reither(_,[ty],_,_,_) ->
-                             let args =
-                               tree_of_val (depth - 1) (O.field obj 1) ty in
-                             Oval_variant (l, Some args)
diff --git a/experimental/garrigue/multimatch.ml b/experimental/garrigue/multimatch.ml
deleted file mode 100644 (file)
index 7c9aa73..0000000
+++ /dev/null
@@ -1,158 +0,0 @@
-(* Simple example *)
-let f x =
-  (multimatch x with `A -> 1 | `B -> true),
-  (multimatch x with `A -> 1. | `B -> "1");;
-
-(* OK *)
-module M : sig
-  val f :
-    [< `A & 'a = int & 'b = float | `B &   'b =string & 'a =  bool] -> 'a * 'b
-end = struct let f = f end;;
-
-(* Bad *)
-module M : sig
-  val f :
-    [< `A & 'a = int & 'b = float | `B &   'b =string & 'a =   int] -> 'a * 'b
-end = struct let f = f end;;
-
-(* Should be good! *)
-module M : sig
-  val f :
-    [< `A & 'a = int * float | `B & 'a = bool * string] -> 'a
-end = struct let f = f end;;
-
-let f = multifun `A|`B as x -> f x;;
-
-(* Two-level example *)
-let f = multifun
-    `A -> (multifun `C -> 1 | `D -> 1.)
-  | `B -> (multifun `C -> true | `D -> "1");;
-
-(* OK *)
-module M : sig
-  val f :
-    [< `A & 'b = [< `C & 'a = int | `D & 'a = float & 'c = bool] -> 'a
-     | `B & 'b = [< `C & 'c = bool | `D & 'c = string] -> 'c] -> 'b
-end = struct let f = f end;;
-
-(* Bad *)
-module M : sig
-  val f :
-    [< `A & 'b = [< `C & 'a = int | `D & 'a = bool] -> 'a
-     | `B & 'b = [< `C & 'c = bool | `D & 'c = string] -> 'c] -> 'b
-end = struct let f = f end;;
-
-module M : sig
-  val f :
-    [< `A & 'b = [< `C & 'a = int | `D] -> 'a
-     | `B & 'b = [< `C & 'c = bool | `D & 'c = string] -> 'c] -> 'b
-end = struct let f = f end;;
-
-
-(* Examples with hidden sharing *)
-let r = ref []
-let f = multifun `A -> 1 | `B -> true
-let g x = r := [f x];;
-
-(* Bad! *)
-module M : sig
-  val g : [< `A & 'a = int | `B & 'a = bool] -> unit
-end = struct let g = g end;;
-
-let r = ref []
-let f = multifun `A -> r | `B -> ref [];;
-(* Now OK *)
-module M : sig
-  val f : [< `A & 'b = int list ref | `B & 'b = 'c list ref] -> 'b
-end = struct let f = f end;;
-(* Still OK *)
-let l : int list ref = r;;
-module M : sig
-  val f : [< `A & 'b = int list ref | `B & 'b = 'c list ref] -> 'b
-end = struct let f = f end;;
-
-
-(* Examples that would need unification *)
-let f = multifun `A -> (1, []) | `B -> (true, [])
-let g x = fst (f x);;
-(* Didn't work, now Ok *)
-module M : sig
-  val g : [< `A & 'a * 'b = int * bool | `B & 'a * 'b = bool * int] -> 'a
-end = struct let g = g end;;
-let g = multifun (`A|`B) as x -> g x;;
-
-(* Other examples *)
-
-let f x =
-  let a = multimatch x with `A -> 1 | `B -> "1" in
-  (multifun `A -> print_int | `B -> print_string) x a
-;;
-
-let f = multifun (`A|`B) as x -> f x;;
-
-type unit_op = [`Set of int | `Move of int]
-type int_op = [`Get]
-
-let op r =
-  multifun
-    `Get     -> !r
-  | `Set x   -> r := x
-  | `Move dx -> r := !r + dx
-;;
-
-let rec trace r = function
-    [] -> []
-  | op1 :: ops ->
-      multimatch op1 with
-        #int_op as op1 ->
-          let x = op r op1 in
-          x :: trace r ops
-      | #unit_op as op1 ->
-          op r op1;
-          trace r ops
-;;
-
-class point x = object
-  val mutable x : int = x
-  method get = x
-  method set y = x <- y
-  method move dx = x <- x + dx
-end;;
-
-let poly sort coeffs x =
-  let add, mul, zero =
-    multimatch sort with
-      `Int -> (+), ( * ), 0
-    | `Float -> (+.), ( *. ), 0.
-  in
-  let rec compute = function
-      []     -> zero
-    | c :: cs -> add c (mul x (compute cs))
-  in
-  compute coeffs
-;;
-
-module M : sig
-  val poly : [< `Int & 'a = int | `Float & 'a = float] -> 'a list -> 'a -> 'a
-end = struct let poly = poly end;;
-
-type ('a,'b) num_sort =
-  'b constraint 'b = [< `Int & 'a = int | `Float & 'a = float]
-module M : sig
-  val poly : ('a,_) num_sort -> 'a list -> 'a -> 'a
-end = struct let poly = poly end;;
-
-
-(* type dispatch *)
-
-type num = [ `Int | `Float ]
-let print0 = multifun
-    `Int -> print_int
-  | `Float -> print_float
-;;
-let print1 = multifun
-    #num as x -> print0 x
-  | `List t -> List.iter (print0 t)
-  | `Pair(t1,t2) -> (fun (x,y) -> print0 t1 x; print0 t2 y)
-;;
-print1 (`Pair(`Int,`Float)) (1,1.0);;
diff --git a/experimental/garrigue/newlabels.ps b/experimental/garrigue/newlabels.ps
deleted file mode 100644 (file)
index 01eac19..0000000
+++ /dev/null
@@ -1,1458 +0,0 @@
-%!PS-Adobe-2.0
-%%Creator: dvipsk 5.78 p1.4 Copyright 1996-98 ASCII Corp.(www-ptex@ascii.co.jp)
-%%dvipsk 5.78 Copyright 1998 Radical Eye Software (www.radicaleye.com)
-%%Title: newlabels.dvi
-%%Pages: 2 0
-%%PageOrder: Ascend
-%%BoundingBox: 0 0 596 842
-%%EndComments
-%%BeginProcSet: PStoPS 1 15
-userdict begin
-[/showpage/erasepage/copypage]{dup where{pop dup load
- type/operatortype eq{1 array cvx dup 0 3 index cvx put
- bind def}{pop}ifelse}{pop}ifelse}forall
-[/letter/legal/executivepage/a4/a4small/b5/com10envelope
- /monarchenvelope/c5envelope/dlenvelope/lettersmall/note
- /folio/quarto/a5]{dup where{dup wcheck{exch{}put}
- {pop{}def}ifelse}{pop}ifelse}forall
-/setpagedevice {pop}bind 1 index where{dup wcheck{3 1 roll put}
- {pop def}ifelse}{def}ifelse
-/PStoPSmatrix matrix currentmatrix def
-/PStoPSxform matrix def/PStoPSclip{clippath}def
-/defaultmatrix{PStoPSmatrix exch PStoPSxform exch concatmatrix}bind def
-/initmatrix{matrix defaultmatrix setmatrix}bind def
-/initclip[{matrix currentmatrix PStoPSmatrix setmatrix
- [{currentpoint}stopped{$error/newerror false put{newpath}}
- {/newpath cvx 3 1 roll/moveto cvx 4 array astore cvx}ifelse]
- {[/newpath cvx{/moveto cvx}{/lineto cvx}
- {/curveto cvx}{/closepath cvx}pathforall]cvx exch pop}
- stopped{$error/errorname get/invalidaccess eq{cleartomark
- $error/newerror false put cvx exec}{stop}ifelse}if}bind aload pop
- /initclip dup load dup type dup/operatortype eq{pop exch pop}
- {dup/arraytype eq exch/packedarraytype eq or
-  {dup xcheck{exch pop aload pop}{pop cvx}ifelse}
-  {pop cvx}ifelse}ifelse
- {newpath PStoPSclip clip newpath exec setmatrix} bind aload pop]cvx def
-/initgraphics{initmatrix newpath initclip 1 setlinewidth
- 0 setlinecap 0 setlinejoin []0 setdash 0 setgray
- 10 setmiterlimit}bind def
-end
-%%EndProcSet
-%DVIPSCommandLine: dvips -f newlabels
-%DVIPSParameters: dpi=300
-%DVIPSSource:  TeX output 1999.10.26:1616
-%%BeginProcSet: tex.pro
-%!
-/TeXDict 300 dict def TeXDict begin /N{def}def /B{bind def}N /S{exch}N
-/X{S N}B /TR{translate}N /isls false N /vsize 11 72 mul N /hsize 8.5 72
-mul N /landplus90{false}def /@rigin{isls{[0 landplus90{1 -1}{-1 1}
-ifelse 0 0 0]concat}if 72 Resolution div 72 VResolution div neg scale
-isls{landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div
-hsize mul 0}ifelse TR}if Resolution VResolution vsize -72 div 1 add mul
-TR[matrix currentmatrix{dup dup round sub abs 0.00001 lt{round}if}
-forall round exch round exch]setmatrix}N /@landscape{/isls true N}B
-/@manualfeed{statusdict /manualfeed true put}B /@copies{/#copies X}B
-/FMat[1 0 0 -1 0 0]N /FBB[0 0 0 0]N /nn 0 N /IE 0 N /ctr 0 N /df-tail{
-/nn 8 dict N nn begin /FontType 3 N /FontMatrix fntrx N /FontBBox FBB N
-string /base X array /BitMaps X /BuildChar{CharBuilder}N /Encoding IE N
-end dup{/foo setfont}2 array copy cvx N load 0 nn put /ctr 0 N[}B /df{
-/sf 1 N /fntrx FMat N df-tail}B /dfs{div /sf X /fntrx[sf 0 0 sf neg 0 0]
-N df-tail}B /E{pop nn dup definefont setfont}B /ch-width{ch-data dup
-length 5 sub get}B /ch-height{ch-data dup length 4 sub get}B /ch-xoff{
-128 ch-data dup length 3 sub get sub}B /ch-yoff{ch-data dup length 2 sub
-get 127 sub}B /ch-dx{ch-data dup length 1 sub get}B /ch-image{ch-data
-dup type /stringtype ne{ctr get /ctr ctr 1 add N}if}B /id 0 N /rw 0 N
-/rc 0 N /gp 0 N /cp 0 N /G 0 N /sf 0 N /CharBuilder{save 3 1 roll S dup
-/base get 2 index get S /BitMaps get S get /ch-data X pop /ctr 0 N ch-dx
-0 ch-xoff ch-yoff ch-height sub ch-xoff ch-width add ch-yoff
-setcachedevice ch-width ch-height true[1 0 0 -1 -.1 ch-xoff sub ch-yoff
-.1 sub]{ch-image}imagemask restore}B /D{/cc X dup type /stringtype ne{]}
-if nn /base get cc ctr put nn /BitMaps get S ctr S sf 1 ne{dup dup
-length 1 sub dup 2 index S get sf div put}if put /ctr ctr 1 add N}B /I{
-cc 1 add D}B /bop{userdict /bop-hook known{bop-hook}if /SI save N @rigin
-0 0 moveto /V matrix currentmatrix dup 1 get dup mul exch 0 get dup mul
-add .99 lt{/QV}{/RV}ifelse load def pop pop}N /eop{SI restore userdict
-/eop-hook known{eop-hook}if showpage}N /@start{userdict /start-hook
-known{start-hook}if pop /VResolution X /Resolution X 1000 div /DVImag X
-/IE 256 array N 2 string 0 1 255{IE S dup 360 add 36 4 index cvrs cvn
-put}for pop 65781.76 div /vsize X 65781.76 div /hsize X}N /p{show}N
-/RMat[1 0 0 -1 0 0]N /BDot 260 string N /rulex 0 N /ruley 0 N /v{/ruley
-X /rulex X V}B /V{}B /RV statusdict begin /product where{pop false[
-(Display)(NeXT)(LaserWriter 16/600)]{dup length product length le{dup
-length product exch 0 exch getinterval eq{pop true exit}if}{pop}ifelse}
-forall}{false}ifelse end{{gsave TR -.1 .1 TR 1 1 scale rulex ruley false
-RMat{BDot}imagemask grestore}}{{gsave TR -.1 .1 TR rulex ruley scale 1 1
-false RMat{BDot}imagemask grestore}}ifelse B /QV{gsave newpath transform
-round exch round exch itransform moveto rulex 0 rlineto 0 ruley neg
-rlineto rulex neg 0 rlineto fill grestore}B /a{moveto}B /delta 0 N /tail
-{dup /delta X 0 rmoveto}B /M{S p delta add tail}B /b{S p tail}B /c{-4 M}
-B /d{-3 M}B /e{-2 M}B /f{-1 M}B /g{0 M}B /h{1 M}B /i{2 M}B /j{3 M}B /k{
-4 M}B /w{0 rmoveto}B /l{p -4 w}B /m{p -3 w}B /n{p -2 w}B /o{p -1 w}B /q{
-p 1 w}B /r{p 2 w}B /s{p 3 w}B /t{p 4 w}B /x{0 S rmoveto}B /y{3 2 roll p
-a}B /bos{/SS save N}B /eos{SS restore}B end
-
-%%EndProcSet
-TeXDict begin 39158280 55380996 1000 300 300 (newlabels.dvi)
-@start
-%DVIPSBitmapFont: Fa cmr6 6 2
-/Fa 2 51 df<187898181818181818181818181818FF08107D8F0F> 49
-D<1F00618040C08060C0600060006000C00180030006000C00102020207FC0FFC00B107F
-8F0F> I E
-%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fb cmmi8 8 4
-/Fb 4 111 df<FFC0FF1C00181C00101C00101C00103800203800203800203800207000
-40700040700040700040E00080E00080E00080E00080E00100E00200E004006008003830
-000FC00018177E9618> 85 D<0300038003000000000000000000000000001C00240046
-0046008C000C0018001800180031003100320032001C0009177F960C> 105
-D<383C1E0044C6630047028100460301008E0703000C0603000C0603000C060300180C06
-00180C0620180C0C20180C0C40301804C0301807001B0E7F8D1F> 109
-D<383C0044C6004702004602008E06000C06000C06000C0600180C00180C401818401818
-80300980300E00120E7F8D15> I E
-%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fc cmbx8 8 4
-/Fc 4 111 df<01800780FF80FF80078007800780078007800780078007800780078007
-800780078007800780FFF8FFF80D157D9414> 49 D<387C7C7C3800000000FCFC3C3C3C
-3C3C3C3C3C3C3C3CFFFF08187F970B> 105 D<FC7E0FC0FD8730E03E07C0F03E07C0F03C
-0780F03C0780F03C0780F03C0780F03C0780F03C0780F03C0780F03C0780F03C0780F0FF
-1FE3FCFF1FE3FC1E0F7E8E23> 109 D<FC7C00FD8E003E0F003E0F003C0F003C0F003C0F
-003C0F003C0F003C0F003C0F003C0F003C0F00FF3FC0FF3FC0120F7E8E17> I
-E
-%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fd cmsy8 8 3
-/Fd 3 93 df<FFFFF0FFFFF014027D881B> 0 D<020002000200C218F2783AE00F800F80
-3AE0F278C2180200020002000D0E7E8E12> 3 D<03F8001FFF003C07806000C0C00060C0
-0060C00060C00060C00060C00060C00060C00060C00060C00060C00060C00060C00060C0
-006040002013137E9218> 92 D E
-%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fe cmtt12 12 43
-/Fe 43 125 df<01818003C3C003C3C003C3C003C3C003C3C003C3C07FFFF0FFFFF8FFFF
-F87FFFF00787800787800787800F8F800F0F000F0F000F0F000F0F007FFFF0FFFFF8FFFF
-F87FFFF01E1E001E1E001E1E001E1E001E1E001E1E000C0C00151E7E9D1A> 35
-D<00E00003F00007F8000738000E1C000E1C000E1C000E1C000E38000E39FC0E71FC07F1
-FC07E1C007C1C00781C00783800F83801FC3803DC70078E70070EE00E07E00E07E00E03C
-08E03C1CE07E1C70FF1C7FE7F83FC3F80F00E0161E7F9D1A> 38
-D<0038007800F001E003C007800F000E001C001C0038003800700070007000E000E000E0
-00E000E000E000E000E000E000E000700070007000380038001C001C000E000F00078003
-C001E000F8007800380D2878A21A> 40 D<6000F00078003C001E000F000780038001C0
-01C000E000E0007000700070003800380038003800380038003800380038003800700070
-007000E000E001C001C0038007800F001E003C007800F00060000D287CA21A> I<7FFFC0
-FFFFE0FFFFE07FFFC013047D901A> 45 D<00C001C001C003C007C00FC07FC0FDC071C0
-01C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C0
-7FFF7FFF7FFF101E7B9D1A> 49 D<03F8000FFE001FFF803C07C07801E07000E0E00070
-F00070F000706000700000700000700000E00000E00001C00003C0000780000F00001E00
-003C0000780000F00003E00007C0000F00001E00703C00707FFFF0FFFFF07FFFF0141E7D
-9D1A> I<03FC000FFF003FFFC03C03E07800E07800707800700000700000700000E00001
-E00007C003FF8003FF0003FFC00003E00000E0000070000078000038000038600038F000
-38F00078E000707000E07E03E03FFFC00FFF0001FC00151E7E9D1A> I<01FC0007FF001F
-FFC01F07C03C01E07800F07000707000707000707800F03800E01E03C00FFF8003FE0007
-FF001F8FC03C01E07800F0700070E00038E00038E00038E00038F000787000707800F03E
-03E01FFFC007FF0001FC00151E7E9D1A> 56 D<01F00007FC001FFE003E0F0038078070
-03807001C0E001C0E001C0E001E0E000E0E000E0E001E07001E07803E03C0FE01FFFE00F
-FCE003F0E00001C00001C00001C0000380600380F00700F00F00F03E007FFC003FF0000F
-C000131E7D9D1A> I<3078FCFC78300000000000000000003078FCFC7830061576941A>
-I<183C7E7E3C18000000000000000000183C7E7E3E1E0E0E1C3CF8F060071C77941A> I<
-0000C00003E00007E0000FC0003F80007E0000FC0003F80007E0000FC0003F80007E0000
-FC0000FC00007E00003F80000FC00007E00003F80000FC00007E00003F80000FC00007E0
-0003E00000C0131A7D9B1A> I<7FFFF0FFFFF8FFFFF87FFFF00000000000000000000000
-007FFFF0FFFFF8FFFFF87FFFF0150C7E941A> I<600000F80000FC00007E00003F80000F
-C00007E00003F80000FC00007E00003F80000FC00007E00007E0000FC0003F80007E0000
-FC0003F80007E0000FC0003F80007E0000FC0000F80000600000131A7D9B1A> I<007C38
-01FF3807FFF80F83F81E00F81C0078380078380038700038700038700000E00000E00000
-E00000E00000E00000E00000E00000E000007000007000387000383800383800381C0070
-1E00F00F83E007FFC001FF80007C00151E7E9D1A> 67 D<FE03FEFF03FEFF03FE1D8070
-1D80701DC0701CC0701CC0701CE0701CE0701C60701C70701C70701C30701C38701C3870
-1C18701C1C701C1C701C0C701C0E701C0E701C06701C06701C07701C03701C0370FF81F0
-FF81F0FF80F0171E7F9D1A> 78 D<03F8E00FFEE01FFFE03C07E07801E0F001E0E000E0
-E000E0E000E0E000007000007800003F80001FF80007FF00007FC00007E00000F0000070
-000038000038600038E00038E00038E00070F000F0FE01E0FFFFC0EFFF80E1FE00151E7E
-9D1A> 83 D<7FFFFEFFFFFEFFFFFEE0380EE0380EE0380EE0380E003800003800003800
-003800003800003800003800003800003800003800003800003800003800003800003800
-00380000380000380000380000380003FF8003FF8003FF80171E7F9D1A> I<FFFCFFFCFF
-FCE000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E0
-00E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000FFFCFFFCFF
-FC0E2776A21A> 91 D<FFFCFFFCFFFC001C001C001C001C001C001C001C001C001C001C
-001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C
-001C001C001C001C001CFFFCFFFCFFFC0E277FA21A> 93 D<1FF0003FFC007FFE00780F
-00300700000380000380007F8007FF801FFF803F8380780380700380E00380E00380E003
-80700780780F803FFFFC1FFDFC07F0FC16157D941A> 97 D<7E0000FE00007E00000E00
-000E00000E00000E00000E00000E00000E3E000EFF800FFFE00FC1F00F80700F00380E00
-380E001C0E001C0E001C0E001C0E001C0E001C0E001C0F00380F00780F80F00FC1E00FFF
-C00EFF80063E00161E7F9D1A> I<00FF8003FFC00FFFE01F01E03C00C078000070000070
-0000E00000E00000E00000E00000E000007000007000007800703C00701F01F00FFFE003
-FFC000FE0014157D941A> I<000FC0001FC0000FC00001C00001C00001C00001C00001C0
-0001C001F1C007FDC00FFFC01E0FC03C07C07803C07001C0E001C0E001C0E001C0E001C0
-E001C0E001C0E001C07003C07003C03807C03E0FC01FFFF807FDFC01F1F8161E7E9D1A>
-I<01F80007FF000FFF801E07C03C01C07800E07000E0E00070E00070FFFFF0FFFFF0FFFF
-F0E000007000007000007800703C00701F01F00FFFE003FF8000FE0014157D941A> I<00
-07E0001FF0003FF800787800F03000E00000E00000E00000E0007FFFF0FFFFF0FFFFF000
-E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000
-E00000E00000E0003FFF807FFFC03FFF80151E7F9D1A> I<7E0000FE00007E00000E0000
-0E00000E00000E00000E00000E00000E3E000EFF800FFFC00FC1C00F80E00F00E00E00E0
-0E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E07FC3FC
-FFE7FE7FC3FC171E7F9D1A> 104 D<00C00001E00001E00000C000000000000000000000
-0000000000000000007FE0007FE0007FE00000E00000E00000E00000E00000E00000E000
-00E00000E00000E00000E00000E00000E00000E00000E00000E0007FFF80FFFFC07FFF80
-121F7C9E1A> I<7FE000FFE0007FE00000E00000E00000E00000E00000E00000E00000E0
-0000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E0
-0000E00000E00000E00000E00000E0007FFFC0FFFFE07FFFC0131E7D9D1A> 108
-D<7CE0E000FFFBF8007FFFF8001F1F1C001E1E1C001E1E1C001C1C1C001C1C1C001C1C1C
-001C1C1C001C1C1C001C1C1C001C1C1C001C1C1C001C1C1C001C1C1C001C1C1C001C1C1C
-007F1F1F00FFBFBF807F1F1F00191580941A> I<7E3E00FEFF807FFFC00FC1C00F80E00F
-00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E
-00E07FC3FCFFE7FE7FC3FC17157F941A> I<01F00007FC001FFF003E0F803C07807803C0
-7001C0E000E0E000E0E000E0E000E0E000E0E000E0F001E07001C07803C03C07803E0F80
-1FFF0007FC0001F00013157D941A> I<7E3E00FEFF807FFFE00FC1F00F80700F00380E00
-380E001C0E001C0E001C0E001C0E001C0E001C0E001C0F00380F00780F80F00FC1E00FFF
-C00EFF800E3E000E00000E00000E00000E00000E00000E00000E00000E00007FC000FFE0
-007FC00016207F941A> I<7F81F8FF8FFC7F9FFE03FE1E03F80C03E00003E00003C00003
-80000380000380000380000380000380000380000380000380000380007FFF00FFFF007F
-FF0017157F941A> 114 D<07FB801FFF807FFF80780780E00380E00380E003807800007F
-C0001FFC0007FE00003F800007806001C0E001C0E001C0F003C0FC0780FFFF00EFFE00E3
-F80012157C941A> I<0180000380000380000380000380000380000380007FFFE0FFFFE0
-FFFFE0038000038000038000038000038000038000038000038000038000038000038070
-03807003807003807001C1E001FFE000FF80003F00141C7F9B1A> I<7E07E0FE0FE07E07
-E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00
-E00E00E00E01E00F03E007FFFC03FFFE00FCFC17157F941A> I<7F83FCFFC7FE7F83FC0E
-00E00E00E00E00E00701C00701C00701C003838003838003838001C70001C70001C70000
-EE0000EE0000EE00007C00007C0000380017157F941A> I<FF83FEFF83FEFF83FE380038
-3800381C00701C00701C00701C38701C7C701C7C700C6C600EEEE00EEEE00EEEE00EEEE0
-0EC6E006C6C007C7C00783C00783C017157F941A> I<7FC7F87FCFFC7FC7F80703C00383
-8003C70001EF0000FE00007C00007800003800007C0000EE0001EE0001C7000383800783
-C00F01C07FC7FCFFC7FE7FC7FC17157F941A> I<7F83FCFFC7FE7F83FC0E00E00E00E007
-00E00701C00701C00381C003838003C38001C38001C70000E70000E70000E60000660000
-6E00003C00003C00003C0000380000380000380000700000700030F00078E00071E0007F
-C0003F80001E000017207F941A> I<60F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0
-F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F060042775A21A> 124 D
-E
-%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Ff cmr8 8 3
-/Ff 3 51 df<003000003000003000003000003000003000003000003000003000003000
-003000FFFFFCFFFFFC003000003000003000003000003000003000003000003000003000
-00300000300016187E931B> 43 D<06000E00FE000E000E000E000E000E000E000E000E
-000E000E000E000E000E000E000E000E000E00FFE00B157D9412> 49
-D<0F8030E040708030C038E0384038003800700070006000C00180030006000C08080810
-183FF07FF0FFF00D157E9412> I E
-%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fg cmmi12 12 13
-/Fg 13 121 df<0FFFF81FFFFC3FFFF870200040200080200080600000600000600000C0
-0000C00000C00000C00001C0000180000180000380000380000380000700000300001615
-7E9415> 28 D<0000100000002000000020000000200000002000000040000000400000
-004000000040000000800000008000000080000000800000010000000FE00000711C0001
-C10600030203000E0203801C020180180201C0380401C0700401C0700401C0700401C0E0
-080380E0080380E00807006008070070100E0030101C00301038001C10E0000623800001
-FE0000002000000020000000400000004000000040000000400000008000000080000000
-800000008000001A2D7EA21D> 30 D<70F8F8F87005057C840E> 58
-D<70F8FCFC7404040404080810102040060F7C840E> I<00008000018000018000030000
-0300000300000600000600000600000C00000C00000C0000180000180000180000300000
-300000300000600000600000600000C00000C00000C00001800001800001800001800003
-00000300000300000600000600000600000C00000C00000C000018000018000018000030
-0000300000300000600000600000600000C00000C00000C0000011317DA418> 61
-D<00FFFC00000F8000000F0000000F0000001E0000001E0000001E0000001E0000003C00
-00003C0000003C0000003C00000078000000780000007800000078000000F0000000F000
-0000F0000000F0000001E0000001E0000001E0002001E0002003C0004003C0004003C000
-8003C0008007800180078001000780030007800F000F803E00FFFFFE001B227DA121> 76
-D<1FFFFFFE1E01E00E1801E0063001E0062003C0062003C0064003C0044003C004400780
-04800780048007800400078000000F0000000F0000000F0000000F0000001E0000001E00
-00001E0000001E0000003C0000003C0000003C0000003C00000078000000780000007800
-000078000000F0000000F0000000F0000000F0000001F000007FFFC0001F227EA11D> 84
-D<3FFE01FF8003C0003C0003C000300003C0001000078000200007800020000780002000
-07800020000F000040000F000040000F000040000F000040001E000080001E000080001E
-000080001E000080003C000100003C000100003C000100003C0001000078000200007800
-020000780002000078000200007000040000F000040000F0000800007000080000700010
-00007000200000380040000038008000001C01000000060600000001F800000021237DA1
-21> I<007E000381000700800E00801C0080380080780100700600FFF800F00000F00000
-E00000E00000E00000E00000E00080E000807003003004001838000FC00011157D9417>
-101 D<01E00FC001C001C001C0038003800380038007000700070007000E000E000E000E
-001C001C001C001C0038003800380038007000700070007080E100E100E100620062003C
-000B237EA20F> 108 D<03C0F004631C04740E08780E08700708700708700F00E00F00E0
-0F00E00F00E00F01C01E01C01E01C01E01C03C03803803803803C07003C0E0072180071E
-000700000700000E00000E00000E00000E00001C00001C00001C0000FF8000181F819418
-> 112 D<3C0F004630C04741C08783C08783C08701808700000E00000E00000E00000E00
-001C00001C00001C00001C000038000038000038000038000070000030000012157E9416
-> 114 D<01E0F006310C081A1C101A3C201C3C201C18201C000038000038000038000038
-0000700000700000700000700860E010F0E010F0E020E170404230803C1F0016157E941C
-> 120 D E
-%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fh cmti12 12 22
-/Fh 22 122 df<FFF0FFF0FFE00C037C8B11> 45 D<70F8F8F0E005057A840F> I<00F8
-C00185C00705C00E03800E03801C03803C0380380700780700780700780700F00E00F00E
-00F00E00F00E10F01C20701C20703C20305C40308C400F078014157B9419> 97
-D<03C01F8003800380038007000700070007000E000E000E000E001C001CF81D0C1E0E3C
-0638073807380F700F700F700F700FE01EE01EE01EE03CE038E038607060E031C01F0010
-237BA216> I<007E0001C1000301800703800E07801C07803C0000380000780000780000
-780000F00000F00000F00000F00000F00100700100700200300C001830000FC00011157B
-9416> I<00003C0003F80000380000380000380000700000700000700000700000E00000
-E00000E00000E00001C000F9C00185C00705C00E03800E03801C03803C03803807007807
-00780700780700F00E00F00E00F00E00F00E10F01C20701C20703C20305C40308C400F07
-8016237BA219> I<00F803840E021C023C0238027804F018FFE0F000F000E000E000E000
-E000E002E0026004701830600F800F157A9416> I<00003E0000470000CF00018F000186
-000380000380000380000700000700000700000700000700000E0000FFF0000E00000E00
-000E00001C00001C00001C00001C00001C00003800003800003800003800003800007000
-00700000700000700000700000E00000E00000E00000E00000C00001C00001C000718000
-F18000F300006200003C0000182D82A20F> I<001F180030B800E0B801C07001C0700380
-700780700700E00F00E00F00E00F00E01E01C01E01C01E01C01E01C01E03800E03800E07
-80060B8006170001E700000700000700000E00000E00000E00701C00F01800F0300060E0
-003F8000151F7E9416> I<00C001E001C001C0000000000000000000000000000000001E
-002300430043008700870087000E000E001C001C001C0038003800384070807080708071
-0032001C000B217BA00F> 105 D<00F00007E00000E00000E00000E00001C00001C00001
-C00001C0000380000380000380000380000700000701E00702100704700E08F00E10F00E
-20600E40001D80001E00001FC0001C7000383800383800381C00381C2070384070384070
-3840701880E01880600F0014237DA216> 107 D<01E00FC001C001C001C0038003800380
-038007000700070007000E000E000E000E001C001C001C001C0038003800380038007000
-700070007100E200E200E200E200640038000B237CA20C> I<1C0F80F8002610C10C0047
-6066060087807807008780780700870070070087007007000E00E00E000E00E00E000E00
-E00E000E00E00E001C01C01C001C01C01C001C01C01C001C01C038203803803840380380
-70403803807080380380308070070031003003001E0023157B9428> I<380F804C30C04E
-40608E80708F00708E00708E00701C00E01C00E01C00E01C00E03801C03801C03801C038
-0384700388700308700708700310E003106001E016157B941B> I<007E0001C300038180
-0701C00E01C01C01E03C01E03801E07801E07801E07801E0F003C0F003C0F00380F00780
-700700700E00700C0030180018700007C00013157B9419> I<01C1F002621804741C0878
-0C08700E08700E08701E00E01E00E01E00E01E00E01E01C03C01C03C01C03C01C0780380
-7003807003C0E003C1C0072380071E000700000700000E00000E00000E00000E00001C00
-001C00001C0000FFC000171F7F9419> I<1C1F002620804741C08783C08703C087018087
-00000E00000E00000E00000E00001C00001C00001C00001C000038000038000038000038
-000070000030000012157B9415> 114 D<00FC000183000200800401800C03800C03000C
-00000F00000FF00007FC0003FE00003E00000F00000700700700F00600F00600E0040040
-08002030001FC00011157D9414> I<00C001C001C001C001C003800380038003800700FF
-F8070007000E000E000E000E001C001C001C001C00380038003800381070207020704070
-8031001E000D1F7C9E10> I<1E0060E02300E0F04380E1F04381C0F08381C0708701C030
-8701C030070380200E0380200E0380200E0380201C0700401C0700401C0700401C070080
-1C0700801C0701001C0F01000C0B02000613840003E0F8001C157B9420> 119
-D<03C1E0046210083470103CF02038F020386020380000700000700000700000700000E0
-0000E00000E00000E02061C040F1C040F1C080E2C100446200383C0014157D9416> I<1E
-00302300704380704380E08380E08700E08700E00701C00E01C00E01C00E01C01C03801C
-03801C03801C03801C07001C07001C07001C0F000C3E0003CE00000E00000E00001C0060
-1C00F03800F03000E0600080C0004380003E0000141F7B9418> I
-E
-%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fi cmbx12 12 20
-/Fi 20 122 df<FFFFFF8000FFFFFFF00007F003FC0007F0007E0007F0003F0007F0001F
-8007F0000FC007F00007E007F00007E007F00007F007F00003F007F00003F007F00003F0
-07F00003F807F00003F807F00003F807F00003F807F00003F807F00003F807F00003F807
-F00003F807F00003F807F00003F007F00003F007F00003F007F00007E007F00007E007F0
-000FC007F0001F8007F0003F0007F0007E0007F003FC00FFFFFFF000FFFFFF800025227E
-A12B> 68 D<01FE0207FF861F01FE3C007E7C001E78000E78000EF80006F80006FC0006
-FC0000FF0000FFE0007FFF007FFFC03FFFF01FFFF80FFFFC03FFFE003FFE0003FE00007F
-00003F00003FC0001FC0001FC0001FE0001EE0001EF0003CFC003CFF00F8C7FFE080FF80
-18227DA11F> 83 D<7FFFFFFF807FFFFFFF807E03F80F807803F807807003F803806003
-F80180E003F801C0E003F801C0C003F800C0C003F800C0C003F800C0C003F800C00003F8
-00000003F800000003F800000003F800000003F800000003F800000003F800000003F800
-000003F800000003F800000003F800000003F800000003F800000003F800000003F80000
-0003F800000003F800000003F800000003F800000003F8000001FFFFF00001FFFFF00022
-227EA127> I<0FFC003FFF807E07C07E03E07E01E07E01F03C01F00001F00001F0003FF0
-03FDF01FC1F03F01F07E01F0FC01F0FC01F0FC01F0FC01F07E02F07E0CF81FF87F07E03F
-18167E951B> 97 D<FF000000FF0000001F0000001F0000001F0000001F0000001F0000
-001F0000001F0000001F0000001F0000001F0000001F0000001F0FE0001F3FF8001FE07C
-001F803E001F001F001F000F801F000F801F000FC01F000FC01F000FC01F000FC01F000F
-C01F000FC01F000FC01F000FC01F000F801F001F801F801F001FC03E001EE07C001C3FF8
-00180FC0001A237EA21F> I<00FF8007FFE00F83F01F03F03E03F07E03F07C01E07C0000
-FC0000FC0000FC0000FC0000FC0000FC00007C00007E00007E00003E00181F00300FC060
-07FFC000FF0015167E9519> I<00FE0007FF800F87C01E01E03E01F07C00F07C00F8FC00
-F8FC00F8FFFFF8FFFFF8FC0000FC0000FC00007C00007C00007E00003E00181F00300FC0
-7003FFC000FF0015167E951A> 101 D<001FC0007FE000F1F001E3F003E3F007C3F007C1
-E007C00007C00007C00007C00007C00007C000FFFE00FFFE0007C00007C00007C00007C0
-0007C00007C00007C00007C00007C00007C00007C00007C00007C00007C00007C00007C0
-0007C00007C0003FFC003FFC00142380A211> I<01FE0F0007FFBF800F87C7801F03E780
-1E01E0003E01F0003E01F0003E01F0003E01F0003E01F0001E01E0001F03E0000F87C000
-0FFF800009FE000018000000180000001C0000001FFFE0000FFFF80007FFFE001FFFFF00
-3C003F0078000F80F0000780F0000780F0000780F000078078000F003C001E001F007C00
-0FFFF80001FFC00019217F951C> I<1C003E007F007F007F003E001C0000000000000000
-00000000000000FF00FF001F001F001F001F001F001F001F001F001F001F001F001F001F
-001F001F001F001F001F00FFE0FFE00B247EA310> 105 D<FF00FF001F001F001F001F00
-1F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F00
-1F001F001F001F001F001F001F001F001F00FFE0FFE00B237EA210> 108
-D<FF07F007F000FF1FFC1FFC001F303E303E001F403E403E001F801F801F001F801F801F
-001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F
-001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F
-001F001F001F001F001F001F00FFE0FFE0FFE0FFE0FFE0FFE02B167E9530> I<FF07E000
-FF1FF8001F307C001F403C001F803E001F803E001F003E001F003E001F003E001F003E00
-1F003E001F003E001F003E001F003E001F003E001F003E001F003E001F003E001F003E00
-1F003E00FFE1FFC0FFE1FFC01A167E951F> I<00FE0007FFC00F83E01E00F03E00F87C00
-7C7C007C7C007CFC007EFC007EFC007EFC007EFC007EFC007EFC007E7C007C7C007C3E00
-F81F01F00F83E007FFC000FE0017167E951C> I<FF0FE000FF3FF8001FE07C001F803E00
-1F001F001F001F801F001F801F000FC01F000FC01F000FC01F000FC01F000FC01F000FC0
-1F000FC01F000FC01F001F801F001F801F803F001FC03E001FE0FC001F3FF8001F0FC000
-1F0000001F0000001F0000001F0000001F0000001F0000001F0000001F000000FFE00000
-FFE000001A207E951F> I<0FF3003FFF00781F00600700E00300E00300F00300FC00007F
-E0007FF8003FFE000FFF0001FF00000F80C00780C00380E00380E00380F00700FC0E00EF
-FC00C7F00011167E9516> 115 D<01800001800001800001800003800003800007800007
-80000F80003F8000FFFF00FFFF000F80000F80000F80000F80000F80000F80000F80000F
-80000F80000F80000F80000F81800F81800F81800F81800F81800F830007C30003FE0000
-F80011207F9F16> I<FF01FE00FF01FE001F003E001F003E001F003E001F003E001F003E
-001F003E001F003E001F003E001F003E001F003E001F003E001F003E001F003E001F003E
-001F003E001F007E001F00FE000F81BE0007FF3FC001FC3FC01A167E951F> I<FFE07FC0
-FFE07FC00F801C0007C0380003E0700003F0600001F8C00000F98000007F8000003F0000
-001F0000001F8000003FC0000037C0000063E00000C1F00001C0F8000380FC0007007E00
-0E003E00FF80FFE0FF80FFE01B167F951E> 120 D<FFE01FE0FFE01FE01F8007000F8006
-000FC00E0007C00C0007E00C0003E0180003E0180001F0300001F0300000F8600000F860
-00007CC000007CC000007FC000003F8000003F8000001F0000001F0000000E0000000E00
-00000C0000000C00000018000078180000FC380000FC300000FC60000069C000007F8000
-001F0000001B207F951E> I E
-%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fj cmsy10 12 15
-/Fj 15 107 df<FFFFFFFCFFFFFFFC1E027C8C27> 0 D<03F0000FFC001FFE003FFF007F
-FF807FFF80FFFFC0FFFFC0FFFFC0FFFFC0FFFFC0FFFFC0FFFFC0FFFFC07FFF807FFF803F
-FF001FFE000FFC0003F00012147D9519> 15 D<000FFFFC007FFFFC01F0000003800000
-060000000C0000001800000030000000300000006000000060000000C0000000C0000000
-C0000000C0000000C0000000C0000000C0000000C0000000600000006000000030000000
-30000000180000000C000000060000000380000001E00000007FFFFC001FFFFC1E1E7C9A
-27> 26 D<00000001800000000001800000000001800000000001800000000000C00000
-000000C000000000006000000000003000000000003000000000001C00000000000E0000
-0000000700FFFFFFFFFFE0FFFFFFFFFFE0000000000700000000000E00000000001C0000
-000000300000000000300000000000600000000000C00000000000C00000000001800000
-00000180000000000180000000000180002B1A7D9832> 33 D<001FFF007FFF01E00003
-80000600000C0000180000300000300000600000600000600000C00000C00000FFFFFFFF
-FFFFC00000C000006000006000006000003000003000001800000C000006000003800001
-E000007FFF001FFF181E7C9A21> 50 D<00000300000300000600000600000C00000C00
-00180000180000300000300000600000600000C00000C00000C000018000018000030000
-0300000600000600000C00000C0000180000180000300000300000600000600000C00000
-C0000180000180000300000300000300000600000600000C00000C000018000018000030
-0000300000600000600000C00000400000183079A300> 54 D<C0C0C0C0C0C0C0C0E0E0
-C0C0C0C0C0C0C0C003127D9400> I<00008000018001F980070F000C0300180380180780
-3006C03006C0700CE0600C60600C60600C60E01870E01870E01870E03070E03070E03070
-E06070E06070E06070E06070E0C070E0C070E0C070E18070E180706180606300607300E0
-7300E03300C03600C01E01801E01800C03000F0E000DF800180000180000180000142A7E
-A519> 59 D<000100000003000000030000000300000003000000030000000300000003
-000000030000000300000003000000030000000300000003000000030000000300000003
-000000030000000300000003000000030000000300000003000000030000000300000003
-000000030000000300000003000000030000FFFFFFFEFFFFFFFE1F207C9F27> 63
-D<40000040C00000C0C00000C0C00000C0C00000C0C00000C0C00000C0C00000C0C00000
-C0C00000C0C00000C0C00000C0C00000C0C00000C0C00000C0C00000C0C00000C0C00000
-C0C00000C0C00000C0C00000C0C00000C0C00000C0600001806000018030000300180006
-000E001C000780780001FFE000007F80001A1F7D9D21> 91 D<007F800001FFE0000780
-78000E001C0018000600300003006000018060000180C00000C0C00000C0C00000C0C000
-00C0C00000C0C00000C0C00000C0C00000C0C00000C0C00000C0C00000C0C00000C0C000
-00C0C00000C0C00000C0C00000C0C00000C0C00000C0C00000C0C00000C0C00000C0C000
-00C0400000401A1F7D9D21> I<000C0000000C0000001E0000001E0000001E0000003300
-0000330000006180000061800000C0C00000C0C00000C0C0000180600001806000030030
-00030030000300300006001800060018000C000C000C000C000C000C0018000600180006
-003000030030000300600001806000018060000180C00000C0C00000401A1F7D9D21> 94
-D<0003C0001E0000380000700000E00000E00000E00000E00000E00000E00000E00000E0
-0000E00000E00000E00000E00000E00000E00000E00000E00000E00001C0000380000F00
-00F800000F000003800001C00000E00000E00000E00000E00000E00000E00000E00000E0
-0000E00000E00000E00000E00000E00000E00000E00000E00000E000007000003800001E
-000003C012317DA419> 102 D<F800000F000003800001C00000E00000E00000E00000E0
-0000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E0
-0000E000007000003800001E000003C0001E0000380000700000E00000E00000E00000E0
-0000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E0
-0000E00001C0000380000F0000F8000012317DA419> I<C0C0C0C0C0C0C0C0C0C0C0C0C0
-C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
-02317AA40E> 106 D E
-%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fk cmr12 12 65
-/Fk 65 125 df<001FC1F00070371800C03E3C01807C3C0380783C070038000700380007
-003800070038000700380007003800070038000700380007003800FFFFFFC00700380007
-003800070038000700380007003800070038000700380007003800070038000700380007
-0038000700380007003800070038000700380007003800070038000700380007003C007F
-E1FFC01E2380A21C> 11 D<001FC0000070200000C01000018038000380780007007800
-0700300007000000070000000700000007000000070000000700000007000000FFFFF800
-070078000700380007003800070038000700380007003800070038000700380007003800
-070038000700380007003800070038000700380007003800070038000700380007003800
-070038007FE1FF80192380A21B> I<001FD8000070380000C07800018078000380780007
-0038000700380007003800070038000700380007003800070038000700380007003800FF
-FFF800070038000700380007003800070038000700380007003800070038000700380007
-003800070038000700380007003800070038000700380007003800070038000700380007
-003800070038007FF3FF80192380A21B> I<000FC07F00007031C08000E00B004001801E
-00E003803E01E007003C01E007001C00C007001C000007001C000007001C000007001C00
-0007001C000007001C000007001C0000FFFFFFFFE007001C01E007001C00E007001C00E0
-07001C00E007001C00E007001C00E007001C00E007001C00E007001C00E007001C00E007
-001C00E007001C00E007001C00E007001C00E007001C00E007001C00E007001C00E00700
-1C00E007001C00E07FF1FFCFFE272380A229> I<70F8FCFC740404040408081010204006
-0F7CA20E> 39 D<00200040008001000300060004000C000C0018001800300030003000
-7000600060006000E000E000E000E000E000E000E000E000E000E000E000E000E000E000
-6000600060007000300030003000180018000C000C000400060003000100008000400020
-0B327CA413> I<800040002000100018000C000400060006000300030001800180018001
-C000C000C000C000E000E000E000E000E000E000E000E000E000E000E000E000E000E000
-C000C000C001C0018001800180030003000600060004000C00180010002000400080000B
-327DA413> I<70F8FCFC7404040404080810102040060F7C840E> 44
-D<FFF8FFF80D02808B10> I<70F8F8F87005057C840E> I<01F000071C000C0600180300
-3803803803807001C07001C07001C07001C0F001E0F001E0F001E0F001E0F001E0F001E0
-F001E0F001E0F001E0F001E0F001E0F001E0F001E0F001E07001C07001C07001C07803C0
-3803803803801C07000C0600071C0001F00013227EA018> 48 D<008003800F80F38003
-800380038003800380038003800380038003800380038003800380038003800380038003
-800380038003800380038003800380038007C0FFFE0F217CA018> I<03F0000C1C001007
-002007804003C04003C08003E0F003E0F801E0F801E0F801E02003E00003E00003C00003
-C0000780000700000E00001C0000180000300000600000C0000180000100000200200400
-200800201800603000403FFFC07FFFC0FFFFC013217EA018> I<03F8000C1E00100F0020
-07804007C07807C07803C07807C03807C0000780000780000700000F00000C0000380003
-F000001C00000F000007800007800003C00003C00003E02003E07003E0F803E0F803E0F0
-03C04003C0400780200780100F000C1C0003F00013227EA018> I<000300000300000700
-000700000F00001700001700002700006700004700008700018700010700020700060700
-040700080700080700100700200700200700400700C00700FFFFF8000700000700000700
-000700000700000700000700000F80007FF015217FA018> I<70F8F8F870000000000000
-000000000070F8F8F87005157C940E> 58 D<FFFFFFFEFFFFFFFE000000000000000000
-0000000000000000000000000000000000000000000000FFFFFFFEFFFFFFFE1F0C7D9126
-> 61 D<07E01838201C400E800FF00FF00FF00F000F000E001C00380030006000C000C0
-00800080018001000100010001000100010000000000000000000000038007C007C007C0
-038010237DA217> 63 D<0001800000018000000180000003C0000003C0000003C00000
-05E0000005E0000009F0000008F0000008F00000107800001078000010780000203C0000
-203C0000203C0000401E0000401E0000C01F0000800F0000800F0001FFFF800100078001
-000780020003C0020003C0020003C0040001E0040001E0040001E0080000F01C0000F03E
-0001F8FF800FFF20237EA225> 65 D<FFFFF8000F800E0007800780078003C0078003E0
-078001E0078001F0078001F0078001F0078001F0078001F0078001E0078003E0078007C0
-07800F8007803E0007FFFE0007800780078003C0078001E0078001F0078000F0078000F8
-078000F8078000F8078000F8078000F8078000F8078001F0078001F0078003E0078007C0
-0F800F00FFFFFC001D227EA123> I<0007E0100038183000E0063001C00170038000F007
-0000F00E0000701E0000701C0000303C0000303C0000307C0000107800001078000010F8
-000000F8000000F8000000F8000000F8000000F8000000F8000000F80000007800000078
-0000107C0000103C0000103C0000101C0000201E0000200E000040070000400380008001
-C0010000E0020000381C000007E0001C247DA223> I<FFFFF0000F801E00078007000780
-0380078001C0078000E0078000F007800078078000780780007C0780003C0780003C0780
-003C0780003E0780003E0780003E0780003E0780003E0780003E0780003E0780003E0780
-003E0780003C0780003C0780007C0780007807800078078000F0078000E0078001E00780
-03C0078007000F801E00FFFFF0001F227EA125> I<FFFFFFC00F8007C0078001C0078000
-C00780004007800040078000600780002007800020078000200780202007802000078020
-0007802000078060000780E00007FFE0000780E000078060000780200007802000078020
-000780200007800000078000000780000007800000078000000780000007800000078000
-00078000000FC00000FFFE00001B227EA120> 70 D<0007F008003C0C1800E0021801C0
-01B8038000F8070000780F0000381E0000381E0000183C0000183C0000187C0000087800
-000878000008F8000000F8000000F8000000F8000000F8000000F8000000F8000000F800
-1FFF780000F8780000787C0000783C0000783C0000781E0000781E0000780F0000780700
-0078038000B801C000B800E00318003C0C080007F00020247DA226> I<FFFC3FFF0FC003
-F0078001E0078001E0078001E0078001E0078001E0078001E0078001E0078001E0078001
-E0078001E0078001E0078001E0078001E0078001E007FFFFE0078001E0078001E0078001
-E0078001E0078001E0078001E0078001E0078001E0078001E0078001E0078001E0078001
-E0078001E0078001E0078001E00FC003F0FFFC3FFF20227EA125> I<FFFC0FC007800780
-078007800780078007800780078007800780078007800780078007800780078007800780
-07800780078007800780078007800780078007800FC0FFFC0E227EA112> I<FFFC00FF80
-0FC0007C0007800030000780002000078000400007800080000780010000078002000007
-80040000078008000007801000000780200000078040000007808000000781C000000783
-E000000785E000000788F000000790F0000007A078000007C03C000007803C000007801E
-000007800F000007800F00000780078000078007C000078003C000078001E000078001E0
-00078000F000078000F8000FC000FC00FFFC07FF8021227EA126> 75
-D<FFFC001F80000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00
-000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00010F00
-010F00010F00010F00030F00030F00020F00060F00060F001E1F007EFFFFFE18227DA11E
-> I<FF8007FF07C000F807C0007005E0002004F0002004F0002004780020047C0020043C
-0020041E0020041F0020040F002004078020040780200403C0200401E0200401E0200400
-F0200400F8200400782004003C2004003E2004001E2004000F2004000F20040007A00400
-03E0040003E0040001E0040001E0040000E00E0000601F000060FFE0002020227EA125>
-78 D<000FE00000783C0000E00E0003C00780078003C00F0001E00E0000E01E0000F03C
-0000783C0000787C00007C7C00007C7800003C7800003CF800003EF800003EF800003EF8
-00003EF800003EF800003EF800003EF800003EF800003E7800003C7C00007C7C00007C3C
-0000783E0000F81E0000F00F0001E00F0001E0078003C003C0078000E00E0000783C0000
-0FE0001F247DA226> I<FFFFF0000F803C0007800F0007800780078007C0078003C00780
-03E0078003E0078003E0078003E0078003E0078003E0078003C0078007C0078007800780
-0F0007803C0007FFF0000780000007800000078000000780000007800000078000000780
-0000078000000780000007800000078000000780000007800000078000000FC00000FFFC
-00001B227EA121> I<FFFFE000000F803C000007800E00000780078000078007C0000780
-03C000078003E000078003E000078003E000078003E000078003E000078003C000078007
-C000078007800007800E000007803C000007FFE000000780700000078038000007801C00
-0007801E000007800E000007800F000007800F000007800F000007800F000007800F8000
-07800F800007800F800007800F808007800FC080078007C0800FC003C100FFFC01E20000
-00007C0021237EA124> 82 D<03F0200C0C601802603001E07000E0600060E00060E000
-60E00020E00020E00020F00000F000007800007F00003FF0001FFE000FFF0003FF80003F
-C00007E00001E00000F00000F0000070800070800070800070800070C00060C00060E000
-C0F000C0C80180C6070081FC0014247DA21B> I<7FFFFFF8780780786007801840078008
-4007800840078008C007800C800780048007800480078004800780040007800000078000
-000780000007800000078000000780000007800000078000000780000007800000078000
-000780000007800000078000000780000007800000078000000780000007800000078000
-00078000000FC00001FFFE001E227EA123> I<FFF0007FC01F80001F000F00000C000F80
-000C000780000800078000080003C000100003C000100003C000100001E000200001E000
-200001F000600000F000400000F000400000780080000078008000007C008000003C0100
-00003C010000001E020000001E020000001E020000000F040000000F040000000F8C0000
-000788000000078800000003D000000003D000000003F000000001E000000001E0000000
-00C000000000C000000000C0000022237FA125> 86 D<FFF03FFC03FE1F8007E000F80F
-0003C000700F0003C000200F0001E00020078001E00040078001E00040078003F0004003
-C002F0008003C002F0008003C002F0008003E00478018001E00478010001E00478010001
-E0083C010000F0083C020000F0083C020000F0101E02000078101E04000078101E040000
-78200F0400003C200F0800003C200F0800003C600F8800001E40079000001E4007900000
-1E4007D000001F8003F000000F8003E000000F8003E000000F0001E00000070001C00000
-070001C00000060000C0000002000080002F237FA132> I<FEFEC0C0C0C0C0C0C0C0C0C0
-C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0FE
-FE07317BA40E> 91 D<FEFE060606060606060606060606060606060606060606060606
-060606060606060606060606060606060606060606FEFE07317FA40E> 93
-D<1FE000303800780C00780E0030070000070000070000070000FF0007C7001E07003C07
-00780700700700F00708F00708F00708F00F087817083C23900FC1E015157E9418> 97
-D<0E0000FE00001E00000E00000E00000E00000E00000E00000E00000E00000E00000E00
-000E00000E00000E1F000E61C00E80600F00300E00380E003C0E001C0E001E0E001E0E00
-1E0E001E0E001E0E001E0E001E0E001C0E003C0E00380F00700C80600C41C0083F001723
-7FA21B> I<01FE000703000C07801C0780380300780000700000F00000F00000F00000F0
-0000F00000F00000F000007000007800403800401C00800C010007060001F80012157E94
-16> I<0000E0000FE00001E00000E00000E00000E00000E00000E00000E00000E00000E0
-0000E00000E00000E001F8E00704E00C02E01C01E03800E07800E07000E0F000E0F000E0
-F000E0F000E0F000E0F000E0F000E07000E07800E03800E01801E00C02E0070CF001F0FE
-17237EA21B> I<01FC000707000C03801C01C03801C07801E07000E0F000E0FFFFE0F000
-00F00000F00000F00000F000007000007800203800201C00400E008007030000FC001315
-7F9416> I<003E0000E30001C78003878003078007000007000007000007000007000007
-0000070000070000070000FFF80007000007000007000007000007000007000007000007
-00000700000700000700000700000700000700000700000700000700000700000780007F
-F000112380A20F> I<00007003F1980E1E181C0E18380700380700780780780780780780
-7807803807003807001C0E001E1C0033F0002000002000003000003800003FFE001FFFC0
-0FFFE03000F0600030C00018C00018C00018C000186000306000303800E00E038003FE00
-15217F9518> I<0E0000FE00001E00000E00000E00000E00000E00000E00000E00000E00
-000E00000E00000E00000E00000E1F800E60C00E80E00F00700F00700E00700E00700E00
-700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00
-70FFE7FF18237FA21B> I<1C003E003E003E001C00000000000000000000000000000000
-000E007E001E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E
-000E000E00FFC00A227FA10E> I<00E001F001F001F000E0000000000000000000000000
-00000000007007F000F00070007000700070007000700070007000700070007000700070
-00700070007000700070007000700070007000706070F0E0F0C061803F000C2C83A10F>
-I<0E0000FE00001E00000E00000E00000E00000E00000E00000E00000E00000E00000E00
-000E00000E00000E03FC0E01F00E01C00E01800E02000E04000E08000E10000E38000EF8
-000F1C000E1E000E0E000E07000E07800E03C00E01C00E01E00E00F00E00F8FFE3FE1723
-7FA21A> I<0E00FE001E000E000E000E000E000E000E000E000E000E000E000E000E000E
-000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E
-00FFE00B237FA20E> I<0E1FC07F00FE60E183801E807201C00F003C00E00F003C00E00E
-003800E00E003800E00E003800E00E003800E00E003800E00E003800E00E003800E00E00
-3800E00E003800E00E003800E00E003800E00E003800E00E003800E00E003800E00E0038
-00E0FFE3FF8FFE27157F942A> I<0E1F80FE60C01E80E00F00700F00700E00700E00700E
-00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E
-0070FFE7FF18157F941B> I<01FC000707000C01801800C03800E0700070700070F00078
-F00078F00078F00078F00078F00078F000787000707800F03800E01C01C00E0380070700
-01FC0015157F9418> I<0E1F00FE61C00E80600F00700E00380E003C0E003C0E001E0E00
-1E0E001E0E001E0E001E0E001E0E001E0E003C0E003C0E00380F00700E80E00E41C00E3F
-000E00000E00000E00000E00000E00000E00000E00000E00000E0000FFE000171F7F941B
-> I<01F8200704600E02601C01603801E07800E07800E0F000E0F000E0F000E0F000E0F0
-00E0F000E0F000E07800E07800E03801E01C01E00C02E0070CE001F0E00000E00000E000
-00E00000E00000E00000E00000E00000E00000E0000FFE171F7E941A> I<0E3CFE461E8F
-0F0F0F060F000E000E000E000E000E000E000E000E000E000E000E000E000E000F00FFF0
-10157F9413> I<0F8830786018C018C008C008E008F0007F003FE00FF001F8003C801C80
-0C800CC00CC008E018D0308FC00E157E9413> I<02000200020002000600060006000E00
-1E003E00FFFC0E000E000E000E000E000E000E000E000E000E000E000E040E040E040E04
-0E040E040708030801F00E1F7F9E13> I<0E0070FE07F01E00F00E00700E00700E00700E
-00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00F00E00F006
-017003827800FC7F18157F941B> I<FF80FE1E00781E00300E00200E0020070040070040
-0780C003808003808001C10001C10000E20000E20000E200007400007400003800003800
-00380000100017157F941A> I<FF8FF87F3E01E03C1C01C0181C01E0180E01E0100E0260
-100E027010070270200704302007043820038438400388184003881C4001C81C8001D00C
-8001D00E8000F00F0000E0070000E00700006006000040020020157F9423> I<FF83FE1F
-00F00E00C007008007810003830001C20000E400007800007800003800003C00004E0000
-8F000187000103800201C00401E00C00E03E01F0FF03FE17157F941A> I<FF80FE1E0078
-1E00300E00200E00200700400700400780C003808003808001C10001C10000E20000E200
-00E200007400007400003800003800003800001000001000002000002000002000004000
-F04000F08000F180004300003C0000171F7F941A> I<3FFFC0380380300780200700600E
-00401C00403C0040380000700000E00001E00001C0000380400700400F00400E00C01C00
-80380080780180700780FFFF8012157F9416> I<FFFFFFFFFFFF3001808C31> 124
-D E
-%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fl cmbx12 14.4 19
-/Fl 19 118 df<00007FE0030007FFFC07001FFFFF0F007FF00F9F00FF0001FF01FC0000
-FF03F800007F07F000003F0FE000001F1FC000001F1FC000000F3F8000000F3F80000007
-7F800000077F800000077F00000000FF00000000FF00000000FF00000000FF00000000FF
-00000000FF00000000FF00000000FF00000000FF000000007F000000007F800000007F80
-0000073F800000073F800000071FC00000071FC000000E0FE000000E07F000001C03F800
-003C01FC00007800FF0001F0007FF007C0001FFFFF800007FFFE0000007FF00028297CA8
-31> 67 D<FFFFFC0000FFFFFC0000FFFFFC000003FC00000003FC00000003FC00000003
-FC00000003FC00000003FC00000003FC00000003FC00000003FC00000003FC00000003FC
-00000003FC00000003FC00000003FC00000003FC00000003FC00000003FC00000003FC00
-000003FC00000003FC00000003FC00000003FC0001C003FC0001C003FC0001C003FC0001
-C003FC0003C003FC00038003FC00038003FC00078003FC00078003FC000F8003FC000F80
-03FC001F8003FC007F8003FC01FF00FFFFFFFF00FFFFFFFF00FFFFFFFF0022297EA828>
-76 D<0000FFC00000000FFFFC0000003F807F000000FE001FC00001F80007E00003F000
-03F00007E00001F8000FE00001FC001FC00000FE001FC00000FE003F8000007F003F8000
-007F007F8000007F807F0000003F807F0000003F807F0000003F80FF0000003FC0FF0000
-003FC0FF0000003FC0FF0000003FC0FF0000003FC0FF0000003FC0FF0000003FC0FF0000
-003FC0FF0000003FC0FF0000003FC07F0000003F807F8000007F807F8000007F803F8000
-007F003F8000007F001FC00000FE001FC00000FE000FE00001FC0007F00003F80003F800
-07F00001FC000FE00000FE001FC000003FC0FF0000000FFFFC00000000FFC000002A297C
-A833> 79 D<FFFFF0007FFFFFFFF0007FFFFFFFF0007FFF03FE000001C001FE00000380
-01FE0000038001FF0000078000FF0000070000FF80000F00007F80000E00007FC0000E00
-003FC0001C00003FC0001C00003FE0003C00001FE0003800001FF0007800000FF0007000
-000FF80070000007F800E0000007F800E0000003FC01C0000003FC01C0000003FE03C000
-0001FE0380000001FF0780000000FF0700000000FF87000000007F8E000000007F8E0000
-00007FDE000000003FDC000000003FFC000000001FF8000000001FF8000000000FF00000
-00000FF0000000000FF00000000007E00000000007E00000000003C00000000003C00000
-30297FA833> 86 D<03FF80000FFFF0001F01FC003F80FE003F807F003F803F003F803F
-801F003F8000003F8000003F8000003F8000003F80003FFF8001FC3F800FE03F801F803F
-803F003F807E003F80FC003F80FC003F80FC003F80FC003F80FC005F807E00DF803F839F
-FC1FFE0FFC03FC03FC1E1B7E9A21> 97 D<FFE00000FFE00000FFE000000FE000000FE0
-00000FE000000FE000000FE000000FE000000FE000000FE000000FE000000FE000000FE0
-00000FE000000FE1FE000FEFFF800FFE07E00FF803F00FF001F80FE000FC0FE000FC0FE0
-007E0FE0007E0FE0007F0FE0007F0FE0007F0FE0007F0FE0007F0FE0007F0FE0007F0FE0
-007F0FE0007E0FE0007E0FE0007E0FE000FC0FE000FC0FF001F80FF803F00F9C0FE00F0F
-FF800E01FC00202A7EA925> I<00007FF000007FF000007FF0000007F0000007F0000007
-F0000007F0000007F0000007F0000007F0000007F0000007F0000007F0000007F0000007
-F0003F87F001FFF7F007F03FF00FC00FF01F8007F03F0007F03F0007F07E0007F07E0007
-F07E0007F0FE0007F0FE0007F0FE0007F0FE0007F0FE0007F0FE0007F0FE0007F0FE0007
-F07E0007F07E0007F03F0007F03F0007F01F800FF00FC01FF007E07FFF01FFE7FF007F87
-FF202A7EA925> 100 D<003FC00001FFF00003E07C000F803E001F801F001F001F003F00
-0F807E000F807E000FC07E000FC0FE0007C0FE0007C0FFFFFFC0FFFFFFC0FE000000FE00
-0000FE0000007E0000007E0000007F0000003F0001C01F0001C00F80038007C0070003F0
-1E0000FFFC00003FE0001A1B7E9A1F> I<0007F8003FFC007E3E01FC7F03F87F03F07F07
-F07F07F03E07F00007F00007F00007F00007F00007F00007F000FFFFC0FFFFC0FFFFC007
-F00007F00007F00007F00007F00007F00007F00007F00007F00007F00007F00007F00007
-F00007F00007F00007F00007F00007F00007F00007F00007F0007FFF807FFF807FFF8018
-2A7EA915> I<FFE00000FFE00000FFE000000FE000000FE000000FE000000FE000000FE0
-00000FE000000FE000000FE000000FE000000FE000000FE000000FE000000FE07E000FE1
-FF800FE30FC00FE40FE00FE807E00FF807F00FF007F00FF007F00FE007F00FE007F00FE0
-07F00FE007F00FE007F00FE007F00FE007F00FE007F00FE007F00FE007F00FE007F00FE0
-07F00FE007F00FE007F00FE007F00FE007F0FFFE3FFFFFFE3FFFFFFE3FFF202A7DA925>
-104 D<07000F801FC03FE03FE03FE01FC00F8007000000000000000000000000000000FF
-E0FFE0FFE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00F
-E00FE00FE00FE00FE00FE0FFFEFFFEFFFE0F2B7EAA12> I<FFE0FFE0FFE00FE00FE00FE0
-0FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE0
-0FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE0FFFEFFFEFFFE
-0F2A7EA912> 108 D<FFC07E00FFC1FF80FFC30FC00FC40FE00FC807E00FD807F00FD007
-F00FD007F00FE007F00FE007F00FE007F00FE007F00FE007F00FE007F00FE007F00FE007
-F00FE007F00FE007F00FE007F00FE007F00FE007F00FE007F00FE007F00FE007F0FFFE3F
-FFFFFE3FFFFFFE3FFF201B7D9A25> 110 D<003FE00001FFFC0003F07E000FC01F801F80
-0FC03F0007E03F0007E07E0003F07E0003F07E0003F0FE0003F8FE0003F8FE0003F8FE00
-03F8FE0003F8FE0003F8FE0003F8FE0003F87E0003F07E0003F03F0007E03F0007E01F80
-0FC00FC01F8007F07F0001FFFC00003FE0001D1B7E9A22> I<FFE1FE00FFEFFF80FFFE0F
-E00FF803F00FF001F80FE001FC0FE000FC0FE000FE0FE000FE0FE0007F0FE0007F0FE000
-7F0FE0007F0FE0007F0FE0007F0FE0007F0FE0007F0FE0007E0FE000FE0FE000FE0FE000
-FC0FE001FC0FF001F80FF807F00FFC0FE00FEFFF800FE1FC000FE000000FE000000FE000
-000FE000000FE000000FE000000FE000000FE000000FE00000FFFE0000FFFE0000FFFE00
-0020277E9A25> I<FFC1F0FFC7FCFFC63E0FCC7F0FD87F0FD07F0FD07F0FF03E0FE0000F
-E0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000F
-E0000FE0000FE000FFFF00FFFF00FFFF00181B7F9A1B> 114 D<03FE300FFFF03E03F078
-00F07000F0F00070F00070F80070FE0000FFE0007FFF007FFFC03FFFE01FFFF007FFF800
-FFF80007FC0000FCE0007CE0003CF0003CF00038F80038FC0070FF01E0E7FFC0C1FF0016
-1B7E9A1B> I<00E00000E00000E00000E00001E00001E00001E00003E00003E00007E000
-0FE0001FFFE0FFFFE0FFFFE00FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE000
-0FE0000FE0000FE0000FE0000FE0000FE0700FE0700FE0700FE0700FE0700FE0700FE070
-07F0E003F0C001FF80007F0014267FA51A> I<FFE07FF0FFE07FF0FFE07FF00FE007F00F
-E007F00FE007F00FE007F00FE007F00FE007F00FE007F00FE007F00FE007F00FE007F00F
-E007F00FE007F00FE007F00FE007F00FE007F00FE007F00FE007F00FE007F00FE00FF00F
-E00FF007E017F003F067FF01FFC7FF007F87FF201B7D9A25> I E
-%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fm cmr12 14.4 20
-/Fm 20 118 df<78FCFCFEFE7A02020202040404080810204007127B8510> 44
-D<00200000E00001E0000FE000FFE000F1E00001E00001E00001E00001E00001E00001E0
-0001E00001E00001E00001E00001E00001E00001E00001E00001E00001E00001E00001E0
-0001E00001E00001E00001E00001E00001E00001E00001E00001E00001E00001E00001E0
-0001E00003F000FFFFC0FFFFC012287BA71D> 49 D<01FC0007FF000C0FC01803E02001
-F06001F04000F84000F8F800FCFC00FCFC007CFC007CFC007C7800FC0000FC0000F80000
-F80001F00001F00003E00003C0000780000700000E00001C0000380000300000600000C0
-000180000300040200040400080800081000082000183FFFF87FFFF0FFFFF0FFFFF01628
-7DA71D> I<000FC0003FF000F01801C01803803C07007C0F007C0E00381E00003C00003C
-00003C0000780000780000780000F83F00F8C1C0F900E0FA0070FA0038FC003CFC001EFC
-001EF8001EF8001FF8001FF8001FF8001F78001F78001F78001F78001F3C001E3C001E1C
-003C1E003C0E007807007003C1E001FFC0007E0018297EA71D> 54
-D<007E0001FF800781C00F00E01E00703C00383C003878003C78003CF8001EF8001EF800
-1EF8001EF8001FF8001FF8001FF8001F78001F78003F78003F3C003F1C005F0E005F0700
-9F03831F00FC1F00001E00001E00001E00003E00003C00003C0000381C00783E00703E00
-E03C01C01803801C0F000FFE0003F80018297EA71D> 57 D<0000FF00100007FFE03000
-1FC07830003E000C7000F80006F001F00003F003E00001F007C00000F00F800000700F80
-0000701F000000303F000000303E000000303E000000107E000000107E000000107C0000
-0000FC00000000FC00000000FC00000000FC00000000FC00000000FC00000000FC000000
-00FC00000000FC0000FFFF7C0000FFFF7E000003F07E000001F03E000001F03E000001F0
-3F000001F01F000001F00F800001F00F800001F007C00001F003E00001F001F00002F000
-F80002F0003E000C70001FC038300007FFE0100000FF8000282B7DA92E> 71
-D<01FFFE01FFFE0007E00003E00003E00003E00003E00003E00003E00003E00003E00003
-E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003
-E00003E00003E00003E00003E00003E00003E00003E03003E07803E0FC03E0FC03E0FC03
-C0F807C0400780200F00300E000C3C0003F000172A7DA81E> 74
-D<0001FF0000000F01E000003C0078000078003C0000E0000E0001E0000F0003C0000780
-07800003C00F800003E01F000001F01F000001F03E000000F83E000000F87E000000FC7E
-000000FC7C0000007C7C0000007CFC0000007EFC0000007EFC0000007EFC0000007EFC00
-00007EFC0000007EFC0000007EFC0000007EFC0000007E7C0000007C7E000000FC7E0000
-00FC7E000000FC3E000000F83F000001F81F000001F01F000001F00F800003E007800003
-C007C00007C003E0000F8000F0001E000078003C00003C007800000F01E0000001FF0000
-272B7DA92E> 79 D<03FC00000C070000100380003C01C0003E01E0003E00F0001C00F0
-000800F0000000F0000000F0000000F000007FF00003E0F0000F80F0001E00F0003C00F0
-007C00F0007800F040F800F040F800F040F800F040F801F0407C01F0403C0278801E0C7F
-8007F01E001A1A7E991D> 97 D<0F000000FF000000FF0000001F0000000F0000000F00
-00000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F00
-00000F0000000F07E0000F1838000F600E000F8007000F8007800F0003C00F0003C00F00
-01E00F0001E00F0001F00F0001F00F0001F00F0001F00F0001F00F0001F00F0001F00F00
-01E00F0001E00F0003E00F0003C00F0003800F8007800E800F000E401C000C303800080F
-C0001C2A7EA921> I<007F0001C0E00700100E00781E00F83C00F83C00707C0020780000
-F80000F80000F80000F80000F80000F80000F80000F800007800007C00003C00083C0008
-1E00100E002007006001C180007E00151A7E991A> I<00FC000387800701C00E01E01C00
-E03C00F03C00F0780078780078F80078F80078FFFFF8F80000F80000F80000F80000F800
-007800007800003C00083C00081E00100E002007004001C180007E00151A7E991A> 101
-D<00000F0001FC3080070743800E03C3801E03C1003C01E0003C01E0007C01F0007C01F0
-007C01F0007C01F0007C01F0003C01E0003C01E0001E03C0000E0380001707000011FC00
-0030000000300000003000000030000000180000001FFF80000FFFF00007FFF80018007C
-0030001E0070000E0060000700E0000700E0000700E0000700E000070070000E0070000E
-0038001C001C0038000781E00000FF000019287E9A1D> 103 D<1E003F003F003F003F00
-1E000000000000000000000000000000000000000F00FF00FF001F000F000F000F000F00
-0F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F00FFF0FFF0
-0C297EA811> 105 D<007E0003C3C00700E00E00701C00383C003C3C003C78001E78001E
-F8001FF8001FF8001FF8001FF8001FF8001FF8001FF8001F78001E78001E3C003C3C003C
-1C00380E00700700E003C3C0007E00181A7E991D> 111 D<003F010001E0830003804300
-0F0027001E0017001E001F003C000F007C000F007C000F0078000F00F8000F00F8000F00
-F8000F00F8000F00F8000F00F8000F00F8000F007C000F007C000F003C000F003E001F00
-1E001F000F002F0007804F0001C18F00007E0F0000000F0000000F0000000F0000000F00
-00000F0000000F0000000F0000000F0000000F0000000F000000FFF00000FFF01C267E99
-1F> 113 D<0F0F80FF11C0FF23E01F43E00F83E00F81C00F80000F00000F00000F00000F
-00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F
-00000F8000FFFC00FFFC00131A7E9917> I<07F0801C0D80300380600180E00180E00080
-E00080F00080F800007E00007FE0003FFC001FFE0007FF00003F800007808003C08003C0
-8001C0C001C0C001C0E00180E00380F00300CC0E0083F800121A7E9917> I<0080000080
-000080000080000180000180000180000380000380000780000F80001FFF80FFFF800780
-000780000780000780000780000780000780000780000780000780000780000780000780
-0007804007804007804007804007804007804007804003C08001C08000E100003E001225
-7FA417> I<0F000F00FF00FF00FF00FF001F001F000F000F000F000F000F000F000F000F
-000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F
-000F000F000F000F000F000F000F001F000F001F0007002F0003804F8001C08FF0007F0F
-F01C1A7E9921> I E
-%EndDVIPSBitmapFont
-%DVIPSBitmapFont: Fn cmr17 20.74 18
-/Fn 18 119 df<000001FF00008000001FFFE0018000007F007801800001F8000E038000
-03E000070780000FC000018780001F000000CF80003E0000006F80007C0000003F8000F8
-0000003F8001F00000001F8003F00000000F8007E00000000F8007C000000007800FC000
-000007800FC000000007801F8000000003801F8000000003803F8000000003803F000000
-0001803F0000000001807F0000000001807F0000000001807E0000000000007E00000000
-0000FE000000000000FE000000000000FE000000000000FE000000000000FE0000000000
-00FE000000000000FE000000000000FE000000000000FE000000000000FE000000000000
-FE0000000000007E0000000000007E0000000000007F0000000000007F0000000001803F
-0000000001803F0000000001803F8000000001801F8000000001801F8000000003000FC0
-00000003000FC0000000030007E0000000060007E0000000060003F0000000060001F000
-00000C0000F80000001800007C0000001800003E0000003000001F0000006000000FC000
-01C0000003E0000380000001F8000E000000007F007C000000001FFFF00000000001FF00
-0000313D7CBB39> 67 D<FFFFFC000000FFFFFC00000003FE0000000001F80000000001
-F80000000001F80000000001F80000000001F80000000001F80000000001F80000000001
-F80000000001F80000000001F80000000001F80000000001F80000000001F80000000001
-F80000000001F80000000001F80000000001F80000000001F80000000001F80000000001
-F80000000001F80000000001F80000000001F80000000001F80000000001F80000000001
-F80000000001F80000000001F80000000001F80000000001F80000000001F80000000001
-F80000000001F80000000001F80000000001F80000006001F80000006001F80000006001
-F80000006001F80000006001F8000000E001F8000000C001F8000000C001F8000000C001
-F8000000C001F8000001C001F8000001C001F8000001C001F8000003C001F8000007C001
-F8000007C001F800000FC001F800003F8001F80000FF8003FC0007FF80FFFFFFFFFF80FF
-FFFFFFFF802B3B7CBA32> 76 D<000003FF00000000001E01E000000000F0003C000000
-03C0000F000000078000078000000F000003C000003E000001F000007C000000F80000F8
-0000007C0001F00000003E0001F00000003E0003E00000001F0007E00000001F8007C000
-00000F800FC00000000FC00F8000000007C01F8000000007E01F8000000007E03F000000
-0003F03F0000000003F03F0000000003F07F0000000003F87E0000000001F87E00000000
-01F87E0000000001F8FE0000000001FCFE0000000001FCFE0000000001FCFE0000000001
-FCFE0000000001FCFE0000000001FCFE0000000001FCFE0000000001FCFE0000000001FC
-FE0000000001FCFE0000000001FC7E0000000001F87F0000000003F87F0000000003F87F
-0000000003F87F0000000003F83F0000000003F03F8000000007F01F8000000007E01F80
-00000007E01FC00000000FE00FC00000000FC007C00000000F8007E00000001F8003E000
-00001F0001F00000003E0001F80000007E0000F80000007C00007C000000F800003E0000
-01F000000F000003C000000780000780000003E0001F00000000F8007C000000001E01E0
-0000000003FF000000363D7CBB3E> 79 D<003F80000001C0F0000003003C000004001E
-00000C000F000018000780001C0007C0003E0003C0003F0003E0003F0003E0003F0003E0
-001E0003E000000003E000000003E000000003E00000003FE000000FF3E000007E03E000
-01F803E00003E003E0000FC003E0001F8003E0003F0003E0003E0003E0007E0003E0007E
-0003E060FC0003E060FC0003E060FC0003E060FC0007E060FC0007E0607C000BE0607E00
-0BE0603E0011F0C01F0060F0C007C1807F8000FE003E0023257CA427> 97
-D<03E0000000FFE0000000FFE000000007E000000003E000000003E000000003E0000000
-03E000000003E000000003E000000003E000000003E000000003E000000003E000000003
-E000000003E000000003E000000003E000000003E000000003E000000003E000000003E0
-00000003E000000003E03FC00003E0E0780003E3001C0003E6000F0003E800078003F800
-03C003F00001E003E00001F003E00000F003E00000F803E00000F803E00000FC03E00000
-7C03E000007C03E000007E03E000007E03E000007E03E000007E03E000007E03E000007E
-03E000007E03E000007E03E000007E03E000007C03E000007C03E00000FC03E00000F803
-E00000F803E00001F003E00001E003F00003E003D80003C003C80007800384000E000383
-001C000381C0F00003003F8000273C7EBB2C> I<0007F800003C0E0000F0018001E000C0
-03C00060078000300F0000701F0000F81F0001F83E0001F83E0001F87E0000F07C000000
-7C000000FC000000FC000000FC000000FC000000FC000000FC000000FC000000FC000000
-FC0000007C0000007C0000007E0000003E0000003E00000C1F00000C1F0000180F800018
-0780003003C0006001E000C000F00180003C0E000007F8001E257DA423> I<0007F80000
-3C1E0000F0078001C003C003C001E0078000F00F0000F81F0000781E00007C3E00007C3E
-00007C7E00003E7C00003E7C00003EFC00003EFC00003EFFFFFFFEFC000000FC000000FC
-000000FC000000FC000000FC0000007C0000007C0000007E0000003E0000003E0000061F
-0000060F00000C0F80000C0780001803C0003000E00060007000C0001E07000003FC001F
-257EA423> 101 D<0000FC0000078300000E0380001C07C0003C0FC000780FC000F80FC0
-00F8078000F0000001F0000001F0000001F0000001F0000001F0000001F0000001F00000
-01F0000001F0000001F0000001F0000001F0000001F0000001F00000FFFFFC00FFFFFC00
-01F0000001F0000001F0000001F0000001F0000001F0000001F0000001F0000001F00000
-01F0000001F0000001F0000001F0000001F0000001F0000001F0000001F0000001F00000
-01F0000001F0000001F0000001F0000001F0000001F0000001F0000001F0000001F00000
-01F0000001F0000001F0000001F0000001F0000003F800007FFFE0007FFFE0001A3C7FBB
-18> I<07000F801FC01FC01FC00F80070000000000000000000000000000000000000000
-0000000000000007C0FFC0FFC00FC007C007C007C007C007C007C007C007C007C007C007
-C007C007C007C007C007C007C007C007C007C007C007C007C007C007C007C007C007C007
-C007C00FE0FFFEFFFE0F397DB815> 105 D<0003800007C0000FE0000FE0000FE00007C0
-000380000000000000000000000000000000000000000000000000000000000000000000
-0000000000000007E000FFE000FFE0000FE00003E00003E00003E00003E00003E00003E0
-0003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E0
-0003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E0
-0003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E0
-7803C0FC07C0FC0780FC0780FC0F00780E00381C000FE000134A82B818> I<07C0FFC0FF
-C00FC007C007C007C007C007C007C007C007C007C007C007C007C007C007C007C007C007
-C007C007C007C007C007C007C007C007C007C007C007C007C007C007C007C007C007C007
-C007C007C007C007C007C007C007C007C007C007C007C007C007C007C007C007C007C007
-C00FE0FFFEFFFE0F3C7DBB15> 108 D<03E01FE0003FC000FFE0607C00C0F800FFE0801E
-01003C0007E3000F06001E0003E4000F88001F0003E4000F88001F0003E8000790000F00
-03E80007D0000F8003F00007E0000F8003F00007E0000F8003E00007C0000F8003E00007
-C0000F8003E00007C0000F8003E00007C0000F8003E00007C0000F8003E00007C0000F80
-03E00007C0000F8003E00007C0000F8003E00007C0000F8003E00007C0000F8003E00007
-C0000F8003E00007C0000F8003E00007C0000F8003E00007C0000F8003E00007C0000F80
-03E00007C0000F8003E00007C0000F8003E00007C0000F8003E00007C0000F8003E00007
-C0000F8003E00007C0000F8003E00007C0000F8003E00007C0000F8003E00007C0000F80
-07F0000FE0001FC0FFFF81FFFF03FFFEFFFF81FFFF03FFFE3F257EA443> I<03E01FE000
-FFE0607C00FFE0801E0007E3000F0003E4000F8003E4000F8003E800078003E80007C003
-F00007C003F00007C003E00007C003E00007C003E00007C003E00007C003E00007C003E0
-0007C003E00007C003E00007C003E00007C003E00007C003E00007C003E00007C003E000
-07C003E00007C003E00007C003E00007C003E00007C003E00007C003E00007C003E00007
-C003E00007C003E00007C003E00007C003E00007C007F0000FE0FFFF81FFFFFFFF81FFFF
-28257EA42C> I<0007FC0000001C070000007001C00001E000F00003C00078000780003C
-000F00001E001F00001F001E00000F003E00000F803E00000F807C000007C07C000007C0
-7C000007C0FC000007E0FC000007E0FC000007E0FC000007E0FC000007E0FC000007E0FC
-000007E0FC000007E0FC000007E07C000007C07C000007C07E00000FC03E00000F803E00
-000F801E00000F001F00001F000F00001E000780003C0003C000780001E000F000007001
-C000001C0700000007FC000023257EA427> I<03E03E00FFE0C300FFE1078007E20FC003
-E40FC003E80FC003E8078003E8030003F0000003F0000003F0000003E0000003E0000003
-E0000003E0000003E0000003E0000003E0000003E0000003E0000003E0000003E0000003
-E0000003E0000003E0000003E0000003E0000003E0000003E0000003E0000003E0000003
-E0000003E0000003E0000007F00000FFFFC000FFFFC0001A257EA41E> 114
-D<00FF02000700C6000C002E0010001E0030001E0060000E0060000E00E0000600E00006
-00E0000600F0000600F8000600FC0000007F0000003FF000003FFF80000FFFE00007FFF0
-0001FFFC00003FFE000001FE0000003F00C0001F00C0000F80C0000780E0000380E00003
-80E0000380E0000380F0000300F0000300F8000700F8000600E4000C00E2001800C18070
-00807F800019257DA41F> I<003000000030000000300000003000000030000000300000
-0070000000700000007000000070000000F0000000F0000001F0000001F0000003F00000
-07F000001FFFFE00FFFFFE0001F0000001F0000001F0000001F0000001F0000001F00000
-01F0000001F0000001F0000001F0000001F0000001F0000001F0000001F0000001F00000
-01F0000001F0000001F0000001F0000001F0018001F0018001F0018001F0018001F00180
-01F0018001F0018001F0018001F0018000F0010000F8030000F8030000780200003C0400
-000E08000003F00019357FB41E> I<FFFE000FFFFFFE000FFF07F00007F803E00003E003
-E00001C001F00001C001F000018001F800018000F800030000F8000300007C000600007C
-000600007E000600003E000C00003E000C00003F001C00001F001800001F001800000F80
-3000000F803000000FC070000007C060000007C060000003E0C0000003E0C0000003F1C0
-000001F180000001F180000000FB00000000FB00000000FF000000007E000000007E0000
-00003C000000003C000000003C0000000018000028257FA42A> 118
-D E
-%EndDVIPSBitmapFont
-end
-%%EndProlog
-%%BeginSetup
-%%Feature: *Resolution 300dpi
-TeXDict begin
-%%PaperSize: a4
-
-userdict/PStoPSxform PStoPSmatrix matrix currentmatrix
- matrix invertmatrix matrix concatmatrix
- matrix invertmatrix put
-%%EndSetup
-%%Page: (0,1) 1
-userdict/PStoPSsaved save put
-PStoPSmatrix setmatrix
-595.000000 0.271378 translate
-90 rotate
-0.706651 dup scale
-userdict/PStoPSmatrix matrix currentmatrix put
-userdict/PStoPSclip{0 0 moveto
- 595.000000 0 rlineto 0 842.000000 rlineto -595.000000 0 rlineto
- closepath}put initclip
-/showpage{}def/copypage{}def/erasepage{}def
-PStoPSxform concat
-1 0 bop Fn 281 370 a(Cleaner) p 570 370 a(seman) n(tics) p
-927 370 a(for) p 1047 370 a(Ob) t(jectiv) n(e) p 1404
-370 a(Lab) r(el) p Fm 717 518 a(Jacques) p 934 518 a(Garrigue) 719
-634 y(Octob) r(er) p 945 634 a(26,) p 1040 634 a(1999) p
-Fl 11 836 a(Credits) p Fk 11 929 a(This) p 122 929 a(prop) q(osal) p
-319 929 a(con) o(tains) p 510 929 a(ideas) p 632 929
-a(from) p 747 929 a(Damien) p 928 929 a(Doligez) p 1101
-929 a(and) p 1196 929 a(Pierre) p 1340 929 a(W) l(eis.) p
-Fl 11 1073 a(Lab) r(els) p 221 1073 a(and) p 351 1073
-a(optionals) p Fk 11 1165 a(Lab) q(els) p 165 1165 a(and) p
-259 1165 a(optional) p 449 1165 a(argumen) o(ts) p 687
-1165 a(had) p 781 1165 a(t) o(w) o(o) p 873 1165 a(problems) p
-1082 1165 a(in) p 1139 1165 a(Ob) s(jectiv) o(e) p 1360
-1165 a(Lab) q(el.) p Fj 83 1280 a(\017) p Fk 133 1280
-a(They) p 259 1280 a(w) o(ere) p 372 1280 a(not) p 459
-1280 a(fully) p 570 1280 a(coheren) o(t) p 767 1280 a(with) p
-878 1280 a(the) p 963 1280 a(original) p 1139 1280 a(call-b) o(y-v) m
-(alue) p 1423 1280 a(seman) o(tics) p 1644 1280 a(of) p
-1700 1280 a(the) p 1784 1280 a(lan-) 133 1340 y(guage.) p
-303 1340 a(In) p 368 1340 a(some) p 495 1340 a(\(subtle\)) p
-681 1340 a(cases,) p 823 1340 a(a) p 868 1340 a(side-e\013ect) p
-1099 1340 a(migh) o(t) p 1243 1340 a(get) p 1329 1340
-a(dela) o(y) o(ed) p 1508 1340 a(more) p 1635 1340 a(than) p
-1753 1340 a(in) p 1814 1340 a(an) 133 1400 y(un) o(t) o(yp) q(ed) p
-322 1400 a(seman) o(tics.) p Fj 83 1502 a(\017) p Fk
-133 1502 a(F) l(or) p 220 1502 a(optional) p 410 1502
-a(argumen) o(ts,) p 660 1502 a(no) p 728 1502 a(un) o(t) o(yp) q(ed) p
-918 1502 a(seman) o(tics) p 1139 1502 a(existed.) 84
-1616 y(This) p 195 1616 a(new) p 295 1616 a(prop) q(osal) p
-492 1616 a(corrects) p 674 1616 a(these) p 799 1616 a(t) o(w) o(o) p
-891 1616 a(\015a) o(ws.) p Fi 11 1746 a(Syn) n(tax) p
-Fk 11 1838 a(W) l(e) p 95 1838 a(k) o(eep) p 206 1838
-a(Ob) s(jectiv) o(e) p 426 1838 a(Lab) q(el's) p 594
-1838 a(syn) o(tax,) p 764 1838 a(except) p 917 1838 a(for) p
-991 1838 a(default) p 1155 1838 a(v) m(alues) p 1301
-1838 a(in) p 1357 1838 a(optional) p 1547 1838 a(argumen) o(ts.) p
-Fh 329 1944 a(typ) n(expr) p Fk 528 1944 a(::=) p Fg
-634 1944 a(:) p 656 1944 a(:) p 678 1944 a(:) p Fj 579
-2004 a(j) p Fh 634 2004 a(typ) n(expr) p Fj 806 2004
-a(!) p Fh 870 2004 a(typ) n(expr) p Fj 579 2064 a(j) p
-Fk 634 2064 a([?]) p Fi(lab) r(el) p Fk 801 2064 a(:) p
-Fh(typ) n(expr) p Fj 987 2064 a(!) p Fh 1050 2064 a(typ) n(expr) 391
-2124 y(expr) p Fk 528 2124 a(::=) p Fg 634 2124 a(:) p
-656 2124 a(:) p 678 2124 a(:) p Fj 579 2185 a(j) p Fh
-634 2185 a(expr) p 746 2185 a(lab) n(ele) n(d-expr) p
-Ff 991 2163 a(+) p Fj 579 2245 a(j) p Fe 634 2245 a(fun) p
-Fj 728 2245 a(f) p Fh(lab) n(ele) n(d-simple-p) n(attern) p
-Fj 1209 2245 a(g) p Ff 1234 2227 a(+) p Fk 1280 2245
-a([) p Fe(when) p Fh 1412 2245 a(expr) p Fk 1507 2245
-a(]) p Fj 1535 2245 a(!) p Fh 1599 2245 a(expr) p Fj
-579 2305 a(j) p Fe 634 2305 a(function) p Fh 856 2305
-a(lab) n(ele) n(d-p) n(attern) p Fk 1177 2305 a([) p
-Fe(when) p Fh 1309 2305 a(expr) p Fk 1404 2305 a(]) p
-Fj 1432 2305 a(!) p Fh 1496 2305 a(expr) p Fj 785 2365
-a(f) p Fe(|) p Fh 851 2365 a(lab) n(ele) n(d-p) n(attern) p
-Fk 1172 2365 a([) p Fe(when) p Fg 1305 2365 a(expr) p
-Fk 1403 2365 a(]) p Fj 1430 2365 a(!) p Fh 1494 2365
-a(expr) p Fj 1589 2365 a(g) p Fd 1614 2347 a(\003) p
-Fh 242 2425 a(lab) n(ele) n(d-expr) p Fk 528 2425 a(::=) p
-634 2425 a([?]) p Fh(expr) p Fj 579 2486 a(j) p Fk 634
-2486 a([?]) p Fi(lab) r(el) p Fk 801 2486 a(:) p Fh(expr) 182
-2546 y(lab) n(ele) n(d-p) n(attern) p Fk 528 2546 a(::=) p
-Fh 634 2546 a(p) n(attern) p Fj 579 2606 a(j) p Fi 634
-2606 a(lab) r(el) p Fk 751 2606 a(:) p Fh(p) n(attern) p
-Fj 579 2666 a(j) p Fk 634 2666 a(?[) p Fe(\() p Fh(expr) p
-Fe(\)) p Fk(]) p Fi(lab) r(el) p Fk 943 2666 a(:) p Fh
-956 2666 a(p) n(attern) p Fk 926 2937 a(1) p eop
-PStoPSsaved restore
-userdict/PStoPSsaved save put
-PStoPSmatrix setmatrix
-595.000000 421.271378 translate
-90 rotate
-0.706651 dup scale
-userdict/PStoPSmatrix matrix currentmatrix put
-userdict/PStoPSclip{0 0 moveto
- 595.000000 0 rlineto 0 842.000000 rlineto -595.000000 0 rlineto
- closepath}put initclip
-PStoPSxform concat
-2 1 bop Fi 11 168 a(Dynamic) p 247 168 a(seman) n(tics) p
-Fj 11 261 a(;) p Fk 52 261 a(is) p 101 261 a(a) p 141
-261 a(notation) p 337 261 a(for) p 411 261 a(the) p 495
-261 a(empt) o(y) p 644 261 a(lab) q(el.) 86 366 y(\() p
-Fe(fun) p Fi 198 366 a(l) p Fc 214 373 a(i) p Fk 227
-366 a(:) p Fg(x) p Fj 282 366 a(!) p Fg 346 366 a(e) p
-Fk(\)) p Fi 404 366 a(l) p Fc 420 373 a(1) p Fk 442 366
-a(:) p Fg 455 366 a(e) p Ff 478 373 a(1) p Fg 506 366
-a(:) p 528 366 a(:) p 550 366 a(:) p Fi 571 366 a(l) p
-Fc 587 373 a(n) p Fk 612 366 a(:) p Fg 625 366 a(e) p
-Fb 648 373 a(n) p Fj 515 427 a(!) p Fk 579 427 a(\() p
-Fg(e) p Fk([) p Fg(e) p Fb 658 434 a(i) p Fg 671 427
-a(=x) p Fk(]) p Fi 752 427 a(l) p Fc 768 434 a(1) p Fk
-790 427 a(:) p Fg(e) p Ff 827 434 a(1) p Fg 855 427 a(:) p
-877 427 a(:) p 899 427 a(:) p Fi 920 427 a(l) p Fc 936
-434 a(i) p Fd(\000) p Fc(1) p Fk 997 427 a(:) p Fg 1010
-427 a(e) p Fb 1033 434 a(i) p Fd(\000) p Ff(1) p Fi 1108
-427 a(l) p Fc 1124 434 a(i) p Ff(+) p Fc(1) p Fk 1185
-427 a(:) p Fg(e) p Fb 1222 434 a(i) p Ff(+1) p Fg 1289
-427 a(:) p 1311 427 a(:) p 1333 427 a(:) p Fi 1354 427
-a(l) p Fc 1370 434 a(n) p Fk 1395 427 a(:) p Fg 1408
-427 a(e) p Fb 1431 434 a(n) p Fk 86 487 a(\() p Fe(fun) p
-Fk 198 487 a(?) p Fi(l) p Fc 237 494 a(i) p Fk 250 487
-a(:) p Fg(x) p Fj 305 487 a(!) p Fg 369 487 a(e) p Fk(\)) p
-Fi 427 487 a(l) p Fc 443 494 a(1) p Fk 465 487 a(:) p
-Fg 478 487 a(e) p Ff 501 494 a(1) p Fg 529 487 a(:) p
-551 487 a(:) p 573 487 a(:) p Fi 594 487 a(l) p Fc 610
-494 a(n) p Fk 635 487 a(:) p Fg 648 487 a(e) p Fb 671
-494 a(n) p Fj 515 547 a(!) p Fg 579 547 a(e) p Fk([) p
-Fe(Some) p Fk 717 547 a(\() p Fg(e) p Fb 759 554 a(i) p
-Fk 773 547 a(\)) p Fg(=x) p Fk(]) p Fi 874 547 a(l) p
-Fc 890 554 a(1) p Fk 912 547 a(:) p Fg 925 547 a(e) p
-Ff 948 554 a(1) p Fg 976 547 a(:) p 998 547 a(:) p 1020
-547 a(:) p Fi 1042 547 a(l) p Fc 1058 554 a(i) p Fd(\000) p
-Fc(1) p Fk 1118 547 a(:) p Fg(e) p Fb 1155 554 a(i) p
-Fd(\000) p Ff(1) p Fi 1230 547 a(l) p Fc 1246 554 a(i) p
-Ff(+) p Fc(1) p Fk 1307 547 a(:) p Fg 1320 547 a(e) p
-Fb 1343 554 a(i) p Ff(+1) p Fg 1410 547 a(:) p 1432 547
-a(:) p 1454 547 a(:) p Fi 1476 547 a(l) p Fc 1492 554
-a(n) p Fk 1516 547 a(:) p Fg(e) p Fb 1553 554 a(n) p
-Fk 86 607 a(\() p Fe(fun) p Fk 198 607 a(?) p Fi(l) p
-Fk(:) p Fg 250 607 a(x) p Fj 292 607 a(!) p Fg 356 607
-a(e) p Fk(\)) p Fi 413 607 a(l) p Fc 429 614 a(1) p Fk
-451 607 a(:) p Fg(e) p Ff 488 614 a(1) p Fg 516 607 a(:) p
-538 607 a(:) p 560 607 a(:) p Fi 581 607 a(l) p Fc 597
-614 a(n) p Fk 621 607 a(:) p Fg(e) p Fb 658 614 a(n) p
-Fk 1154 607 a(when) p Fi 1281 607 a(l) p Fc 1297 614
-a(i) p Fk 1324 607 a(=) p Fj 1376 607 a(;) p Fk 1417
-607 a(and) p Fg 1512 607 a(l) p Fj 1541 607 a(62) p 1588
-607 a(f) p Fi(l) p Fc 1629 614 a(1) p Fg 1660 607 a(:) p
-1682 607 a(:) p 1704 607 a(:) p Fi 1725 607 a(l) p Fc
-1741 614 a(n) p Fj 1765 607 a(g) 515 667 y(!) p Fg 579
-667 a(e) p Fk([) p Fe(None) p Fg 717 667 a(=x) p Fk(]) p
-Fi 799 667 a(l) p Fc 815 674 a(1) p Fk 837 667 a(:) p
-Fg(e) p Ff 874 674 a(1) p Fg 901 667 a(:) p 923 667 a(:) p
-945 667 a(:) p Fi 967 667 a(l) p Fc 983 674 a(n) p Fk
-1007 667 a(:) p Fg(e) p Fb 1044 674 a(n) p Fk 86 728
-a(\(\() p Fe(fun) p Fi 217 728 a(l) p Fk(:) p Fg 246
-728 a(x) p Fj 288 728 a(!) p Fg 352 728 a(e) p Fk(\)) p
-Fi 409 728 a(l) p Fc 425 735 a(1) p Fk 447 728 a(:) p
-Fg(e) p Ff 484 735 a(1) p Fg 511 728 a(:) p 533 728 a(:) p
-555 728 a(:) p Fi 577 728 a(l) p Fc 593 735 a(m) p Fk
-629 728 a(:) p Fg 642 728 a(e) p Fb 665 735 a(m) p Fk
-698 728 a(\)) p Fi 733 728 a(l) p Fc 749 735 a(m) p Ff(+) p
-Fc(1) p Fk 833 728 a(:) p Fg 846 728 a(e) p Fb 869 735
-a(m) p Ff(+1) p Fg 955 728 a(:) p 977 728 a(:) p 999
-728 a(:) p Fi 1021 728 a(l) p Fc 1037 735 a(n) p Fk 1061
-728 a(:) p Fg(e) p Fb 1098 735 a(n) p Fk 1373 728 a(when) p
-Fi 1501 728 a(l) p Fj 1530 728 a(62) p 1577 728 a(f) p
-Fi(l) p Fc 1618 735 a(1) p Fg 1648 728 a(:) p 1670 728
-a(:) p 1692 728 a(:) p Fi 1714 728 a(l) p Fc 1730 735
-a(m) p Fj 1765 728 a(g) 515 788 y(!) p Fk 579 788 a(\() p
-Fe(fun) p Fi 691 788 a(l) p Fk(:) p Fg 720 788 a(x) p
-Fj 761 788 a(!) p Fg 825 788 a(e) p Fk(\)) p Fi 883 788
-a(l) p Fc 899 795 a(1) p Fk 921 788 a(:) p Fg 934 788
-a(e) p Ff 957 795 a(1) p Fg 985 788 a(:) p 1007 788 a(:) p
-1029 788 a(:) p Fi 1051 788 a(l) p Fc 1067 795 a(n) p
-Fk 1091 788 a(:) p Fg 1104 788 a(e) p Fb 1127 795 a(n) p
-Fk 86 848 a(\(\() p Fe(fun) p Fk 217 848 a(?) p Fi(l) p
-Fk(:) p Fg 269 848 a(x) p Fj 311 848 a(!) p Fg 375 848
-a(e) p Fk(\)) p Fi 432 848 a(l) p Fc 448 855 a(1) p Fk
-470 848 a(:) p Fg(e) p Ff 507 855 a(1) p Fg 535 848 a(:) p
-557 848 a(:) p 579 848 a(:) p Fi 600 848 a(l) p Fc 616
-855 a(m) p Fk 652 848 a(:) p Fg 665 848 a(e) p Fb 688
-855 a(m) p Fk 721 848 a(\)) p Fi 756 848 a(l) p Fc 772
-855 a(m) p Ff(+) p Fc(1) p Fk 856 848 a(:) p Fg 869 848
-a(e) p Fb 892 855 a(m) p Ff(+1) p Fg 978 848 a(:) p 1000
-848 a(:) p 1022 848 a(:) p Fi 1044 848 a(l) p Fc 1060
-855 a(n) p Fk 1084 848 a(:) p Fg(e) p Fb 1121 855 a(n) p
-Fk 1261 848 a(when) p Fj 1388 848 a(f) p Fi(l) p Fg(;) p
-Fj 1451 848 a(;g) p 1530 848 a(6) m(\\) p 1577 848 a(f) p
-Fi(l) p Fc 1618 855 a(1) p Fg 1648 848 a(:) p 1670 848
-a(:) p 1692 848 a(:) p Fi 1714 848 a(l) p Fc 1730 855
-a(m) p Fj 1765 848 a(g) 515 908 y(!) p Fk 579 908 a(\() p
-Fe(fun) p Fk 691 908 a(?) p Fi(l) p Fk(:) p Fg 743 908
-a(x) p Fj 785 908 a(!) p Fg 848 908 a(e) p Fk(\)) p Fi
-906 908 a(l) p Fc 922 915 a(1) p Fk 944 908 a(:) p Fg(e) p
-Ff 981 915 a(1) p Fg 1008 908 a(:) p 1030 908 a(:) p
-1052 908 a(:) p Fi 1074 908 a(l) p Fc 1090 915 a(n) p
-Fk 1114 908 a(:) p Fg 1127 908 a(e) p Fb 1150 915 a(n) p
-Fi 11 1035 a(T) n(yping) p Fk 11 1127 a(Seman) o(tics) p
-240 1127 a(are) p 321 1127 a(k) o(ept) p 430 1127 a(throughout) p
-685 1127 a(compilation) p 950 1127 a(b) o(y) p 1018 1127
-a(disallo) o(wing) p 1269 1127 a(lab) q(el) p 1387 1127
-a(comm) o(utation) p 1684 1127 a(for) p 1759 1127 a(func-) 11
-1187 y(tion) p 116 1187 a(t) o(yp) q(es.) p 278 1187
-a(Ho) o(w) o(ev) o(er,) p 494 1187 a(the) p 583 1187
-a(original) p 764 1187 a(comfort) p 949 1187 a(of) p
-1009 1187 a(out-of-order) p 1283 1187 a(application) p
-1540 1187 a(is) p 1594 1187 a(reco) o(v) o(ered) p 1814
-1187 a(b) o(y) 11 1247 y(allo) o(wing) p 207 1247 a(argumen) o(t) p
-431 1247 a(reordering) p 670 1247 a(in) p 732 1247 a(application,) p
-1005 1247 a(when) p 1138 1247 a(the) p 1227 1247 a(function's) p
-1457 1247 a(t) o(yp) q(e) p 1572 1247 a(is) p Fh 1626
-1247 a(wel) r(l) p 1731 1247 a(known) p Fk 11 1308 a(\() p
-Fh(c.f.) p Fk 118 1308 a(p) q(olymorphic) p 400 1308
-a(metho) q(ds\).) p Fl 11 1452 a(V) p 56 1452 a(arian) n(ts) p
-Fk 11 1544 a(V) l(arian) o(t) p 187 1544 a(t) o(yping,) p
-355 1544 a(as) p 417 1544 a(it) p 468 1544 a(is) p 519
-1544 a(presen) o(ted) p 739 1544 a(in) p 798 1544 a(the) p
-884 1544 a(user's) p 1022 1544 a(man) o(ual,) p 1210
-1544 a(is) p 1261 1544 a(not) p 1350 1544 a(principal:) p
-1576 1544 a(in) p 1635 1544 a(some) p 1760 1544 a(cases) 11
-1605 y(t) o(ypabilit) o(y) p 239 1605 a(of) p 301 1605
-a(an) p 375 1605 a(expression) p 616 1605 a(ma) o(y) p
-728 1605 a(dep) q(end) p 904 1605 a(on) p 978 1605 a(the) p
-1069 1605 a(order) p 1202 1605 a(in) p 1265 1605 a(whic) o(h) p
-1411 1605 a(the) p 1502 1605 a(t) o(yping) p 1660 1605
-a(algorithm) 11 1665 y(pro) q(ceeds.) p Fe 133 1779 a(#) p
-184 1779 a(let) p 286 1779 a(f1) p 363 1779 a(\(x) p
-440 1779 a(:) p 491 1779 a([<) p 568 1779 a(a) p 620
-1779 a(b\(int\)]\)) p 850 1779 a(=) p 902 1779 a(\(\)) 184
-1839 y(let) p 286 1839 a(f2) p 363 1839 a(\(x) p 440
-1839 a(:) p 491 1839 a([<) p 568 1839 a(a]\)) p 671 1839
-a(=) p 722 1839 a(\(\)) 184 1899 y(let) p 286 1899 a(f3) p
-363 1899 a(\(x) p 440 1899 a(:) p 491 1899 a([<) p 568
-1899 a(a) p 620 1899 a(b\(bool\)]\)) p 876 1899 a(=) p
-927 1899 a(\(\);;) 133 1960 y(val) p 235 1960 a(f1) p
-312 1960 a(:) p 363 1960 a([<) p 440 1960 a(a) p 491
-1960 a(b\(int\)]) p 696 1960 a(->) p 773 1960 a(unit) p
-902 1960 a(=) p 953 1960 a(<fun>) 133 2020 y(val) p 235
-2020 a(f2) p 312 2020 a(:) p 363 2020 a([<) p 440 2020
-a(a]) p 517 2020 a(->) p 594 2020 a(unit) p 722 2020
-a(=) p 773 2020 a(<fun>) 133 2080 y(val) p 235 2080 a(f3) p
-312 2080 a(:) p 363 2080 a([<) p 440 2080 a(a) p 491
-2080 a(b\(bool\)]) p 722 2080 a(->) p 799 2080 a(unit) p
-927 2080 a(=) p 978 2080 a(<fun>) 133 2140 y(#) p 184
-2140 a(fun) p 286 2140 a(x) p 338 2140 a(->) p 414 2140
-a(f1) p 491 2140 a(x;) p 568 2140 a(f2) p 645 2140 a(x;) p
-722 2140 a(f3) p 799 2140 a(x;;) 133 2200 y(-) p 184
-2200 a(:) p 235 2200 a([<) p 312 2200 a(a]) p 389 2200
-a(->) p 466 2200 a(unit) p 594 2200 a(=) p 645 2200 a(<fun>) 133
-2260 y(#) p 184 2260 a(fun) p 286 2260 a(x) p 338 2260
-a(->) p 414 2260 a(f1) p 491 2260 a(x;) p 568 2260 a(f3) p
-645 2260 a(x;;) 133 2321 y(Character) o(s) p 414 2321
-a(18-19:) 133 2381 y(This) p 261 2381 a(expressio) o(n) p
-543 2381 a(has) p 645 2381 a(type) p 773 2381 a([<) p
-850 2381 a(a) p 902 2381 a(b\(int\)]) p 1107 2381 a(but) p
-1209 2381 a(is) p 1286 2381 a(here) p 1414 2381 a(used) p
-1542 2381 a(with) p 1670 2381 a(type) 184 2441 y([<) p
-261 2441 a(a) p 312 2441 a(b\(bool\)]) p Fk 84 2555 a(Here) p
-204 2555 a(the) p 292 2555 a(constrain) o(t) p 526 2555
-a(in) o(tro) q(duced) p 775 2555 a(b) o(y) p Fe 848 2555
-a(f2) p Fk 920 2555 a(hides) p 1049 2555 a(the) p 1138
-2555 a(constructor) p Fe 1401 2555 a(b) p Fk(,) p 1462
-2555 a(and) p 1562 2555 a(a) o(v) o(oids) p 1714 2555
-a(a) p 1760 2555 a(clash) 11 2615 y(b) q(et) o(w) o(een) p
-Fe 199 2615 a(int) p Fk 292 2615 a(and) p Fe 387 2615
-a(bool) p Fk(.) 84 2676 y(An) p 163 2676 a(easy) p 270
-2676 a(w) o(a) o(y) p 369 2676 a(to) p 428 2676 a(solv) o(e) p
-547 2676 a(this) p 642 2676 a(w) o(ould) p 784 2676 a(b) q(e) p
-850 2676 a(to) p 909 2676 a(restrict) p 1077 2676 a(hiding) p
-1226 2676 a(absen) o(t) p 1379 2676 a(lab) q(els) p 1515
-2676 a(to) p 1575 2676 a(generic) p 1739 2676 a(t) o(yp) q(es.) 11
-2736 y(This) p 124 2736 a(w) o(a) o(y) p 224 2736 a(the) p
-310 2736 a(second) p 469 2736 a(case) p 574 2736 a(w) o(ould) p
-718 2736 a(still) p 814 2736 a(fail,) p 913 2736 a(since) p
-Fe 1034 2736 a(x) p Fk 1077 2736 a(has) p 1166 2736 a(a) p
-1208 2736 a(monorphic) p 1451 2736 a(t) o(yp) q(e.) p
-1584 2736 a(This) p 1697 2736 a(solution) 11 2796 y(w) o(ould) p
-153 2796 a(b) q(e) p 219 2796 a(correct) p 382 2796 a(and) p
-477 2796 a(principal.) 926 2937 y(2) p eop
-PStoPSsaved restore
-%%Page: (2,3) 2
-userdict/PStoPSsaved save put
-PStoPSmatrix setmatrix
-595.000000 0.271378 translate
-90 rotate
-0.706651 dup scale
-userdict/PStoPSmatrix matrix currentmatrix put
-userdict/PStoPSclip{0 0 moveto
- 595.000000 0 rlineto 0 842.000000 rlineto -595.000000 0 rlineto
- closepath}put initclip
-/showpage{}def/copypage{}def/erasepage{}def
-PStoPSxform concat
-3 2 bop Fk 84 168 a(Ho) o(w) o(ev) o(er,) p 293 168 a(one) p
-382 168 a(can) p 472 168 a(easily) p 606 168 a(see) p
-684 168 a(that) p 789 168 a(this) p 884 168 a(solution) p
-1068 168 a(is) p 1117 168 a(coun) o(ter-in) o(tuitiv) o(e.) p
-1504 168 a(F) l(or) p 1591 168 a(the) p 1675 168 a(user,) p
-Fe 1791 168 a(b) p Fk 1833 168 a(is) 11 229 y(already) p
-183 229 a(an) p 250 229 a(imp) q(ossible) p 488 229 a(constructor,) p
-759 229 a(and) p 854 229 a(ha) o(ving) p 1011 229 a(a) p
-1052 229 a(clash) p 1174 229 a(on) p 1242 229 a(it) p
-1291 229 a(is) p 1340 229 a(hard) p 1453 229 a(to) p
-1513 229 a(understand.) 84 289 y(Another) p 277 289 a(solution) p
-463 289 a(is) p 514 289 a(to) p 575 289 a(go) p 642 289
-a(the) p 728 289 a(opp) q(osite) p 924 289 a(w) o(a) o(y) l(.) p
-1044 289 a(T) l(o) p 1117 289 a(accept) p 1271 289 a(more) p
-1395 289 a(programs.) p 1634 289 a(This) p 1747 289 a(is) p
-1798 289 a(the) 11 349 y(w) o(a) o(y) p 109 349 a(w) o(e) p
-181 349 a(explore) p 351 349 a(here,) p 470 349 a(with) p
-581 349 a(an) p 649 349 a(unc) o(hanged) p 891 349 a(syn) o(tax.) p
-Fi 11 479 a(T) n(yping) p Fk 11 571 a(The) p 114 571
-a(idea) p 220 571 a(is) p 273 571 a(to) p 336 571 a(dela) o(y) p
-466 571 a(uni\014cation) p 711 571 a(on) p 782 571 a(constructor) p
-1043 571 a(un) o(til) p 1161 571 a(they) p 1274 571 a(are) p
-1359 571 a(explicitely) p 1595 571 a(kno) o(wn) p 1753
-571 a(to) p 1816 571 a(b) q(e) 11 631 y(presen) o(t.) p
-199 631 a(W) l(e) p 280 631 a(k) o(eep) p 390 631 a(the) p
-472 631 a(\() p Fg(T) t(;) p 546 631 a(U;) p 601 631
-a(L) p Fk(\)) p 666 631 a(represen) o(tation) p 983 631
-a(of) p 1036 631 a(v) m(arian) o(t) p 1200 631 a(t) o(yp) q(es,) p
-1341 631 a(but) p Fg 1428 631 a(T) p Fk 1478 631 a(is) p
-1525 631 a(no) p 1591 631 a(longer) p 1735 631 a(a) p
-1774 631 a(map) 11 692 y(from) p 126 692 a(constructors) p
-403 692 a(to) p 462 692 a(t) o(yp) q(es,) p 605 692 a(but) p
-694 692 a(from) p 809 692 a(constructors) p 1086 692
-a(to) p 1146 692 a(sets) p 1241 692 a(of) p 1297 692
-a(t) o(yp) q(es.) 84 752 y(When) p 230 752 a(w) o(e) p
-307 752 a(unify) p 436 752 a(t) o(w) o(o) p 532 752 a(v) m(arian) o(t) p
-702 752 a(t) o(yp) q(es,) p 850 752 a(the) p 938 752
-a(\014rst) p 1043 752 a(step) p 1150 752 a(is) p 1204
-752 a(just) p 1305 752 a(to) p 1369 752 a(tak) o(e) p
-1479 752 a(the) p 1567 752 a(union) p 1707 752 a(of) p
-1767 752 a(b) q(oth) 11 812 y(t) o(yping) p 162 812 a(en) o(vironmen) o
-(ts,) p 476 812 a(dropping) p 682 812 a(unnecessary) p
-952 812 a(t) o(yp) q(es.) 204 932 y(\() p Fg(T) p Ff
-252 939 a(1) p Fg 272 932 a(;) p 294 932 a(U) p Ff 327
-939 a(1) p Fg 346 932 a(;) p 368 932 a(L) p Ff 401 939
-a(1) p Fk 421 932 a(\)) p Fj 451 932 a(^) p Fk 495 932
-a(\() p Fg(T) p Ff 543 939 a(2) p Fg 563 932 a(;) p 585
-932 a(U) p Ff 618 939 a(2) p Fg 637 932 a(;) p 659 932
-a(L) p Ff 692 939 a(2) p Fk 712 932 a(\)) p 745 932 a(=) p
-797 932 a(\(\() p Fg(T) p Ff 864 939 a(1) p Fj 883 932
-a(j) p Fb 897 939 a(U) p Fa 921 944 a(1) p Fd 938 939
-a(\\) p Fb(U) p Fa 986 944 a(2) p Fk 1005 932 a(\)) p
-Fj 1035 932 a([) p Fk 1079 932 a(\() p Fg(T) p Ff 1127
-939 a(2) p Fj 1146 932 a(j) p Fb 1160 939 a(U) p Fa 1184
-944 a(1) p Fd 1201 939 a(\\) p Fb(U) p Fa 1249 944 a(2) p
-Fk 1268 932 a(\)) p Fg(;) p 1309 932 a(U) p Ff 1342 939
-a(1) p Fj 1373 932 a(\\) p Fg 1417 932 a(U) p Ff 1450
-939 a(2) p Fg 1470 932 a(;) p 1492 932 a(L) p Ff 1525
-939 a(1) p Fj 1556 932 a([) p Fg 1600 932 a(L) p Ff 1633
-939 a(2) p Fk 1653 932 a(\)) 84 1042 y(Here) p 203 1042
-a(the) p 291 1042 a(union) p 431 1042 a(of) p 490 1042
-a(t) o(w) o(o) p 587 1042 a(t) o(yping) p 742 1042 a(en) o(vironmen) o
-(ts) p 1046 1042 a(is) p 1099 1042 a(the) p 1187 1042
-a(p) q(oin) o(t) o(wise) p 1407 1042 a(union) p 1547
-1042 a(of) p 1606 1042 a(their) p 1727 1042 a(sets) p
-1826 1042 a(of) 11 1102 y(t) o(yp) q(es) p 140 1102 a(for) p
-214 1102 a(eac) o(h) p 324 1102 a(constructor.) 84 1162
-y(This) p 195 1162 a(\014rst) p 296 1162 a(step) p 399
-1162 a(nev) o(er) p 529 1162 a(fails.) 84 1222 y(In) p
-145 1222 a(a) p 186 1222 a(second) p 343 1222 a(step,) p
-460 1222 a(structural) p 685 1222 a(constrain) o(ts) p
-934 1222 a(are) p 1015 1222 a(enforced) p 1209 1222 a(on) p
-1277 1222 a(the) p 1361 1222 a(resulting) p 1562 1222
-a(t) o(yp) q(e) p 1672 1222 a(\() p Fg(T) t(;) p 1746
-1222 a(U;) p 1801 1222 a(L) p Fk(\).) 11 1282 y(First,) p
-Fg 144 1282 a(L) p Fk 195 1282 a(should) p 351 1282 a(b) q(e) p
-418 1282 a(included) p 614 1282 a(in) p Fg 672 1282 a(U) p
-Fk 710 1282 a(.) p 749 1282 a(Then,) p 892 1282 a(for) p
-967 1282 a(all) p 1036 1282 a(constructors) p 1314 1282
-a(app) q(earing) p 1542 1282 a(in) p Fg 1600 1282 a(L) p
-Fk(,) p 1664 1282 a(the) p 1749 1282 a(set) p 1826 1282
-a(of) 11 1343 y(t) o(yp) q(es) p 136 1343 a(asso) q(ciated) p
-365 1343 a(with) p 472 1343 a(eac) o(h) p 578 1343 a(constructor) p
-833 1343 a(is) p 878 1343 a(collapsed) p 1084 1343 a(b) o(y) p
-1148 1343 a(uni\014cation.) p 1407 1343 a(This) p 1515
-1343 a(can) p 1600 1343 a(b) q(e) p 1663 1343 a(expressed) 11
-1403 y(b) o(y) p 78 1403 a(rewriting) p 287 1403 a(rules,) p
-417 1403 a(where) p Fg 558 1403 a(e) p Fk 597 1403 a(is) p
-646 1403 a(a) p 687 1403 a(m) o(ulti-equation) p 1015
-1403 a(and) p Fg 1109 1403 a(\036) p Fk 1155 1403 a(a) p
-1195 1403 a(set) p 1271 1403 a(of) p 1327 1403 a(m) o(ultiequations) 249
-1509 y(if) p Fg 294 1509 a(L) p Fj 341 1509 a(6\032) p
-Fg 393 1509 a(U) p Fk 448 1509 a(then) p 559 1509 a(\() p
-Fg(T) t(;) p 633 1509 a(U;) p 688 1509 a(L) p Fk(\)) p
-753 1509 a(=) p Fg 805 1509 a(e) p Fj 839 1509 a(^) p
-Fg 883 1509 a(\036) p Fj 926 1509 a(\000) p 956 1509
-a(!) p 1020 1509 a(?) p Fk 249 1629 a(if) p Fg 294 1629
-a(l) p Fj 323 1629 a(2) p Fg 370 1629 a(L) p Fk 420 1629
-a(and) p Fg 515 1629 a(T) p Fk 551 1629 a(\() p Fg(l) p
-Fk 586 1629 a(\)) p 617 1629 a(=) p Fj 669 1629 a(f) p
-Fg(\034) p Ff 715 1636 a(1) p Fg 735 1629 a(;) p 757
-1629 a(:) p 779 1629 a(:) p 801 1629 a(:) p 822 1629
-a(;) p 844 1629 a(\034) p Fb 865 1636 a(n) p Fj 889 1629
-a(g) p Fk 930 1629 a(then) 298 1689 y(\() p Fg(T) t(;) p
-372 1689 a(U;) p 427 1689 a(L) p Fk(\)) p 492 1689 a(=) p
-Fg 544 1689 a(e) p Fj 577 1689 a(^) p Fg 622 1689 a(\036) p
-Fj 664 1689 a(\000) p 695 1689 a(!) p Fk 759 1689 a(\() p
-Fg(T) p Fj 814 1689 a(f) p Fg(l) p Fj 867 1689 a(7!) p
-Fg 931 1689 a(\034) p Ff 952 1696 a(1) p Fj 972 1689
-a(g) p Fg(;) p 1019 1689 a(U;) p 1074 1689 a(L) p Fk(\)) p
-1139 1689 a(=) p Fg 1191 1689 a(e) p Fj 1225 1689 a(^) p
-Fg 1269 1689 a(\034) p Ff 1290 1696 a(1) p Fk 1324 1689
-a(=) p Fg 1376 1689 a(:) p 1398 1689 a(:) p 1420 1689
-a(:) p Fk 1447 1689 a(=) p Fg 1498 1689 a(\034) p Fb
-1519 1696 a(n) p Fj 1554 1689 a(^) p Fg 1598 1689 a(\036) p
-Fk 84 1796 a(Optionally) p 331 1796 a(one) p 425 1796
-a(can) p 519 1796 a(add) p 619 1796 a(rules) p 740 1796
-a(that) p 850 1796 a(remo) o(v) o(e) p 1022 1796 a(a) p
-1067 1796 a(constructor) p Fg 1329 1796 a(l) p Fk 1366
-1796 a(from) p Fg 1486 1796 a(U) p Fk 1545 1796 a(if) p
-1594 1796 a(the) p 1683 1796 a(equation) 11 1856 y(obtained) p
-211 1856 a(from) p Fg 326 1856 a(T) p Fk 362 1856 a(\() p
-Fg(l) p Fk 397 1856 a(\)) p 431 1856 a(has) p 518 1856
-a(no) p 586 1856 a(solution.) p 790 1856 a(Suc) o(h) p
-908 1856 a(rules) p 1024 1856 a(w) o(ould) p 1167 1856
-a(b) q(e) p 1233 1856 a(sound) p 1374 1856 a(and) p 1469
-1856 a(complete.) p Fi 11 1986 a(Syn) n(tax) p 198 1986
-a(of) p 262 1986 a(t) n(yp) r(es) p Fk 11 2078 a(Thanks) p
-188 2078 a(to) p 250 2078 a(the) p 336 2078 a(go) q(o) q(d) p
-458 2078 a(prop) q(erties) p 689 2078 a(of) p 747 2078
-a(these) p 874 2078 a(constrain) o(ts,) p 1139 2078 a(the) p
-1226 2078 a(surface) p 1392 2078 a(syn) o(tax) p 1551
-2078 a(of) p 1608 2078 a(t) o(yp) q(es) p 1740 2078 a(w) o(ould) 11
-2138 y(only) p 118 2138 a(ha) o(v) o(e) p 230 2138 a(to) p
-290 2138 a(b) q(e) p 356 2138 a(sligh) o(tly) p 527 2138
-a(extended.) p Fh 590 2244 a(tag-typ) n(e) p Fk 798 2244
-a(::=) p Fh 904 2244 a(ident) p Fj 849 2304 a(j) p Fh
-904 2304 a(ident) p Fe 1031 2304 a(\() p Fh(typ) n(expr-list) p
-Fe(\)) p Fh 523 2365 a(typ) n(expr-list) p Fk 798 2365
-a(::=) p Fh 904 2365 a(typ) n(expr) p Fj 849 2425 a(j) p
-Fh 904 2425 a(typ) n(expr) p Fe 1078 2425 a(&) p Fh 1120
-2425 a(typ) n(expr-list) p Fk 84 2531 a(Notice) p 234
-2531 a(that) p 336 2531 a(a) p 373 2531 a(0-ary) p 496
-2531 a(constructor) p 751 2531 a(and) p 842 2531 a(an) p
-907 2531 a(1-ary) p 1030 2531 a(construtor) p 1262 2531
-a(are) p 1340 2531 a(con) o(tradictory) l(,) p 1648 2531
-a(and) p 1740 2531 a(w) o(ould) 11 2592 y(result) p 146
-2592 a(in) p 203 2592 a(the) p 287 2592 a(absence) p
-466 2592 a(of) p 522 2592 a(this) p 617 2592 a(constructor.) 926
-2937 y(3) p eop
-PStoPSsaved restore
-userdict/PStoPSsaved save put
-PStoPSmatrix setmatrix
-595.000000 421.271378 translate
-90 rotate
-0.706651 dup scale
-userdict/PStoPSmatrix matrix currentmatrix put
-userdict/PStoPSclip{0 0 moveto
- 595.000000 0 rlineto 0 842.000000 rlineto -595.000000 0 rlineto
- closepath}put initclip
-PStoPSxform concat
-4 3 bop Fi 11 168 a(Discussion) p Fk 11 261 a(Suc) o(h) p
-133 261 a(a) p 179 261 a(c) o(hange) p 345 261 a(has) p
-436 261 a(the) p 525 261 a(ma) s(jor) p 672 261 a(adv) m(an) o(tage) p
-907 261 a(of) p 967 261 a(b) q(oth) p 1087 261 a(reco) o(v) o(ering) p
-1324 261 a(principalit) o(y) p 1589 261 a(and) p 1688
-261 a(a) o(v) o(oiding) 11 321 y(unin) o(tuitiv) o(e) p
-266 321 a(error) p 392 321 a(messages.) p 640 321 a(Constrain) o(ts) p
-909 321 a(created) p 1087 321 a(in) p 1152 321 a(suc) o(h) p
-1269 321 a(a) p 1317 321 a(w) o(a) o(y) p 1423 321 a(are) p
-1512 321 a(v) o(ery) p 1626 321 a(ligh) o(t:) p 1772
-321 a(they) 11 381 y(alw) o(a) o(ys) p 165 381 a(app) q(ear) p
-325 381 a(inside) p 463 381 a(a) p 502 381 a(v) m(arian) o(t) p
-666 381 a(t) o(yp) q(e,) p 788 381 a(and) p 882 381 a(if) p
-926 381 a(the) p 1008 381 a(v) m(arian) o(t) p 1172 381
-a(t) o(yp) q(e) p 1281 381 a(do) q(es) p 1390 381 a(not) p
-1475 381 a(app) q(ear) p 1635 381 a(in) p 1691 381 a(the) p
-1774 381 a(\014nal) 11 441 y(t) o(yp) q(e) p 120 441
-a(sc) o(heme,) p 301 441 a(then) p 412 441 a(the) p 496
-441 a(constrain) o(t) p 725 441 a(can) p 815 441 a(b) q(e) p
-881 441 a(discarded) p 1098 441 a(safely) l(.) 84 501
-y(On) p 165 501 a(the) p 249 501 a(other) p 376 501 a(hand,) p
-512 501 a(there) p 637 501 a(are) p 718 501 a(t) o(w) o(o) p
-810 501 a(dra) o(wbac) o(ks.) p Fj 83 616 a(\017) p Fk
-133 616 a(Some) p 259 616 a(errors) p 393 616 a(will) p
-482 616 a(b) q(e) p 544 616 a(dela) o(y) o(ed) p 715
-616 a(longer) p 858 616 a(than) p 968 616 a(no) o(w,) p
-1080 616 a(un) o(til) p 1191 616 a(a) p 1228 616 a(construtor) p
-1460 616 a(is) p 1505 616 a(actually) p 1687 616 a(included) 133
-676 y(in) p Fg 189 676 a(L) p Fk(.) p 258 676 a(It) p
-311 676 a(is) p 360 676 a(not) p 446 676 a(clear) p 563
-676 a(ho) o(w) p 665 676 a(damageable) p 930 676 a(it) p
-979 676 a(is.) p Fj 83 777 a(\017) p Fk 133 777 a(While) p
-272 777 a(t) o(yp) q(e) p 378 777 a(inference) p 579
-777 a(is) p 625 777 a(simple) p 774 777 a(and) p 865
-777 a(costless) p 1036 777 a(for) p 1108 777 a(this) p
-1200 777 a(extension,) p 1426 777 a(simpli\014cation) p
-1724 777 a(of) p 1776 777 a(con-) 133 838 y(strain) o(ts) p
-310 838 a(|marking) p 551 838 a(constructors) p 830 838
-a(with) p 943 838 a(unsolv) m(able) p 1182 838 a(constrain) o(ts) p
-1432 838 a(as) p 1494 838 a(absen) o(t,) p 1663 838 a(and) p
-1760 838 a(elim-) 133 898 y(inating) p 300 898 a(redundan) o(t) p
-536 898 a(t) o(yp) q(es) p 667 898 a(in) p 726 898 a(constrain) o(ts|) p
-1025 898 a(is) p 1076 898 a(a) p 1119 898 a(bit) p 1197
-898 a(more) p 1320 898 a(exp) q(ensiv) o(e.) p 1565 898
-a(Also,) p 1691 898 a(allo) o(wing) 133 958 y(suc) o(h) p
-244 958 a(constrained) p 506 958 a(t) o(yp) q(es) p 637
-958 a(inside) p 777 958 a(signatures) p 1010 958 a(w) o(ould) p
-1154 958 a(mean) p 1286 958 a(ha) o(ving) p 1444 958
-a(to) p 1506 958 a(solv) o(e) p 1627 958 a(a) p 1669
-958 a(matc) o(hing) 133 1018 y(problem,) p 333 1018 a(whic) o(h) p
-469 1018 a(is) p 514 1018 a(exp) q(onen) o(tial) p 772
-1018 a(in) p 825 1018 a(the) p 906 1018 a(n) o(um) o(b) q(er) p
-1080 1018 a(of) p 1132 1018 a(connected) p 1356 1018
-a(constrain) o(ts) p 1600 1018 a(inside) p 1735 1018
-a(a) p 1772 1018 a(t) o(yp) q(e) 133 1078 y(sc) o(heme.) 84
-1193 y(Reasonably) p 340 1193 a(e\016cien) o(t) p 516
-1193 a(algorithms) p 754 1193 a(exist) p 866 1193 a(to) p
-922 1193 a(solv) o(e) p 1038 1193 a(these) p 1159 1193
-a(problems,) p 1379 1193 a(so) p 1435 1193 a(the) p 1515
-1193 a(di\016cult) o(y) p 1715 1193 a(is) p 1760 1193
-a(more) 11 1253 y(in) p 67 1253 a(the) p 151 1253 a(increased) p
-363 1253 a(complexit) o(y) p 611 1253 a(of) p 667 1253
-a(the) p 751 1253 a(t) o(yp) q(e-c) o(hec) o(k) o(er) p
-1031 1253 a(than) p 1145 1253 a(in) p 1202 1253 a(run-time) p
-1402 1253 a(cost.) p Fl 11 1397 a(Other) p 205 1397 a(features) p
-Fk 11 1490 a(Ob) s(jectiv) o(e) p 238 1490 a(Lab) q(el) p
-380 1490 a(con) o(tains) p 579 1490 a(t) o(w) o(o) p
-678 1490 a(other) p 812 1490 a(features:) p 1029 1490
-a(p) q(olymorphic) p 1318 1490 a(metho) q(ds) p 1521
-1490 a(and) p 1623 1490 a(t) o(yp) q(e-driv) o(en) 11
-1550 y(access) p 153 1550 a(of) p 208 1550 a(records.) p
-394 1550 a(Both) p 514 1550 a(of) p 568 1550 a(them) p
-692 1550 a(use) p 775 1550 a(the) p 857 1550 a(same) p
-978 1550 a(metho) q(d) p 1154 1550 a(of) p 1209 1550
-a(enforcing) p 1417 1550 a(principalit) o(y) p 1676 1550
-a(of) p 1730 1550 a(t) o(yping) 11 1610 y(through) p
-191 1610 a(tracing) p 351 1610 a(user) p 450 1610 a(pro) o(vided) p
-647 1610 a(t) o(yp) q(e) p 752 1610 a(information.) p
-1034 1610 a(With) p 1155 1610 a(this) p 1246 1610 a(tracing,) p
-1422 1610 a(their) p 1534 1610 a(implem) o(en) n(tation) 11
-1670 y(is) p 60 1670 a(v) o(ery) p 167 1670 a(easy) l(,) p
-283 1670 a(but) p 373 1670 a(without) p 554 1670 a(it) p
-603 1670 a(they) p 713 1670 a(lo) q(ose) p 834 1670 a(principalit) o(y)
-l(.) 84 1730 y(While) p 229 1730 a(these) p 357 1730
-a(features) p 543 1730 a(pro) o(vide) p 720 1730 a(some) p
-845 1730 a(comfort) p 1029 1730 a(in) p 1089 1730 a(writing) p
-1260 1730 a(user) p 1366 1730 a(programs,) p 1598 1730
-a(they) p 1711 1730 a(are) p 1795 1730 a(not) 11 1791
-y(strictly) p 182 1791 a(necessary) p 403 1791 a(for) p
-482 1791 a(the) p 571 1791 a(v) m(arious) p 742 1791
-a(libraries) p 934 1791 a(coming) p 1107 1791 a(with) p
-1223 1791 a(O'Labl) p 1391 1791 a(\(LablTk,) p 1602 1791
-a(LablGL) p 1787 1791 a(and) 11 1851 y(LablGTK\).) 926
-2937 y(4) p eop
-PStoPSsaved restore
-%%Trailer
-end
-userdict /end-hook known{end-hook}if
-%%EOF
diff --git a/experimental/garrigue/objvariant.diffs b/experimental/garrigue/objvariant.diffs
deleted file mode 100644 (file)
index 75deb24..0000000
+++ /dev/null
@@ -1,354 +0,0 @@
-? objvariants-3.09.1.diffs
-? objvariants.diffs
-Index: btype.ml
-===================================================================
-RCS file: /net/yquem/devel/caml/repository/csl/typing/btype.ml,v
-retrieving revision 1.37.4.1
-diff -u -r1.37.4.1 btype.ml
---- btype.ml   5 Dec 2005 13:18:42 -0000       1.37.4.1
-+++ btype.ml   16 Jan 2006 02:23:14 -0000
-@@ -177,7 +177,8 @@
-     Tvariant row -> iter_row f row
-   | Tvar | Tunivar | Tsubst _ | Tconstr _ ->
-       Misc.may (fun (_,l) -> List.iter f l) row.row_name;
--      List.iter f row.row_bound
-+      List.iter f row.row_bound;
-+      List.iter (fun (s,k,t) -> f t) row.row_object
-   | _ -> assert false
- let iter_type_expr f ty =
-@@ -224,7 +225,9 @@
-     | Some (path, tl) -> Some (path, List.map f tl) in
-   { row_fields = fields; row_more = more;
-     row_bound = !bound; row_fixed = row.row_fixed && fixed;
--    row_closed = row.row_closed; row_name = name; }
-+    row_closed = row.row_closed; row_name = name;
-+    row_object = List.map (fun (s,k,t) -> (s,k,f t)) row.row_object;
-+  }
- let rec copy_kind = function
-     Fvar{contents = Some k} -> copy_kind k
-Index: ctype.ml
-===================================================================
-RCS file: /net/yquem/devel/caml/repository/csl/typing/ctype.ml,v
-retrieving revision 1.197.2.6
-diff -u -r1.197.2.6 ctype.ml
---- ctype.ml   15 Dec 2005 02:28:38 -0000      1.197.2.6
-+++ ctype.ml   16 Jan 2006 02:23:15 -0000
-@@ -1421,7 +1421,7 @@
-   newgenty
-     (Tvariant
-        {row_fields = fields; row_closed = closed; row_more = newvar();
--        row_bound = []; row_fixed = false; row_name = None })
-+        row_bound = []; row_fixed = false; row_name = None; row_object=[]})
- (**** Unification ****)
-@@ -1724,8 +1724,11 @@
-     else None
-   in
-   let bound = row1.row_bound @ row2.row_bound in
-+  let opairs, _, miss2 = associate_fields row1.row_object row2.row_object in
-+  let row_object = row1.row_object @ miss2 in
-   let row0 = {row_fields = []; row_more = more; row_bound = bound;
--              row_closed = closed; row_fixed = fixed; row_name = name} in
-+              row_closed = closed; row_fixed = fixed; row_name = name;
-+              row_object = row_object } in
-   let set_more row rest =
-     let rest =
-       if closed then
-@@ -1758,6 +1761,18 @@
-           raise (Unify ((mkvariant [l,f1] true,
-                          mkvariant [l,f2] true) :: trace)))
-       pairs;
-+    List.iter (fun (s,_,ty1,_,ty2) -> unify env ty1 ty2) opairs;
-+    if row_object <> [] then begin
-+      List.iter
-+        (fun (l,f) ->
-+          match row_field_repr f with
-+            Rpresent (Some ty) ->
-+              let fi = build_fields generic_level row_object (newgenvar()) in
-+              unify env (newgenty (Tobject (fi, ref None))) ty
-+          | Rpresent None -> raise (Unify [])
-+          | _ -> ())
-+        (row_repr row1).row_fields
-+    end;
-   with exn ->
-     log_type rm1; rm1.desc <- md1; log_type rm2; rm2.desc <- md2; raise exn
-   end
-@@ -2789,7 +2804,8 @@
-       let row =
-         { row_fields = List.map fst fields; row_more = newvar();
-           row_bound = !bound; row_closed = posi; row_fixed = false;
--          row_name = if c > Unchanged then None else row.row_name }
-+          row_name = if c > Unchanged then None else row.row_name;
-+          row_object = [] }
-       in
-       (newty (Tvariant row), Changed)
-   | Tobject (t1, _) ->
-Index: oprint.ml
-===================================================================
-RCS file: /net/yquem/devel/caml/repository/csl/typing/oprint.ml,v
-retrieving revision 1.22
-diff -u -r1.22 oprint.ml
---- oprint.ml  23 Mar 2005 03:08:37 -0000      1.22
-+++ oprint.ml  16 Jan 2006 02:23:15 -0000
-@@ -185,7 +185,7 @@
-       fprintf ppf "@[<2>< %a >@]" (print_fields rest) fields
-   | Otyp_stuff s -> fprintf ppf "%s" s
-   | Otyp_var (ng, s) -> fprintf ppf "'%s%s" (if ng then "_" else "") s
--  | Otyp_variant (non_gen, row_fields, closed, tags) ->
-+  | Otyp_variant (non_gen, row_fields, closed, tags, obj) ->
-       let print_present ppf =
-         function
-           None | Some [] -> ()
-@@ -198,12 +198,17 @@
-               ppf fields
-         | Ovar_name (id, tyl) ->
-             fprintf ppf "@[%a%a@]" print_typargs tyl print_ident id
-+      and print_object ppf obj =
-+        if obj <> [] then
-+          fprintf ppf "@ as @[<2>< %a >@]" (print_fields (Some false)) obj
-       in
--      fprintf ppf "%s[%s@[<hv>@[<hv>%a@]%a ]@]" (if non_gen then "_" else "")
-+      fprintf ppf "%s[%s@[<hv>@[<hv>%a@]%a%a ]@]"
-+        (if non_gen then "_" else "")
-         (if closed then if tags = None then " " else "< "
-          else if tags = None then "> " else "? ")
-         print_fields row_fields
-         print_present tags
-+        print_object obj
-   | Otyp_alias _ | Otyp_poly _ | Otyp_arrow _ | Otyp_tuple _ as ty ->
-       fprintf ppf "@[<1>(%a)@]" print_out_type ty
-   | Otyp_abstract | Otyp_sum _ | Otyp_record _ | Otyp_manifest (_, _) -> ()
-Index: outcometree.mli
-===================================================================
-RCS file: /net/yquem/devel/caml/repository/csl/typing/outcometree.mli,v
-retrieving revision 1.14
-diff -u -r1.14 outcometree.mli
---- outcometree.mli    23 Mar 2005 03:08:37 -0000      1.14
-+++ outcometree.mli    16 Jan 2006 02:23:15 -0000
-@@ -59,6 +59,7 @@
-   | Otyp_var of bool * string
-   | Otyp_variant of
-       bool * out_variant * bool * (string list) option
-+      * (string * out_type) list
-   | Otyp_poly of string list * out_type
- and out_variant =
-   | Ovar_fields of (string * bool * out_type list) list
-Index: printtyp.ml
-===================================================================
-RCS file: /net/yquem/devel/caml/repository/csl/typing/printtyp.ml,v
-retrieving revision 1.139.2.2
-diff -u -r1.139.2.2 printtyp.ml
---- printtyp.ml        7 Dec 2005 23:37:27 -0000       1.139.2.2
-+++ printtyp.ml        16 Jan 2006 02:23:15 -0000
-@@ -244,7 +244,10 @@
-             visited_objects := px :: !visited_objects;
-           match row.row_name with
-           | Some(p, tyl) when namable_row row ->
--              List.iter (mark_loops_rec visited) tyl
-+              List.iter (mark_loops_rec visited) tyl;
-+              if not (static_row row) then
-+                List.iter (fun (s,k,t) -> mark_loops_rec visited t)
-+                  row.row_object
-           | _ ->
-               iter_row (mark_loops_rec visited) {row with row_bound = []}
-          end
-@@ -343,25 +346,27 @@
-                | _ -> false)
-             fields in
-         let all_present = List.length present = List.length fields in
-+        let static = row.row_closed && all_present in
-+        let obj =
-+          if static then [] else
-+          List.map (fun (s,k,t) -> (s, tree_of_typexp sch t)) row.row_object
-+        in
-+        let tags = if all_present then None else Some (List.map fst present) in
-         begin match row.row_name with
-         | Some(p, tyl) when namable_row row ->
-             let id = tree_of_path p in
-             let args = tree_of_typlist sch tyl in
--            if row.row_closed && all_present then
-+            if static then
-               Otyp_constr (id, args)
-             else
-               let non_gen = is_non_gen sch px in
--              let tags =
--                if all_present then None else Some (List.map fst present) in
-               Otyp_variant (non_gen, Ovar_name(tree_of_path p, args),
--                            row.row_closed, tags)
-+                            row.row_closed, tags, obj)
-         | _ ->
--            let non_gen =
--              not (row.row_closed && all_present) && is_non_gen sch px in
-+            let non_gen = not static && is_non_gen sch px in
-             let fields = List.map (tree_of_row_field sch) fields in
--            let tags =
--              if all_present then None else Some (List.map fst present) in
--            Otyp_variant (non_gen, Ovar_fields fields, row.row_closed, tags)
-+            Otyp_variant (non_gen, Ovar_fields fields, row.row_closed,
-+                          tags, obj)
-         end
-     | Tobject (fi, nm) ->
-         tree_of_typobject sch fi nm
-Index: typecore.ml
-===================================================================
-RCS file: /net/yquem/devel/caml/repository/csl/typing/typecore.ml,v
-retrieving revision 1.176.2.2
-diff -u -r1.176.2.2 typecore.ml
---- typecore.ml        11 Dec 2005 09:56:33 -0000      1.176.2.2
-+++ typecore.ml        16 Jan 2006 02:23:15 -0000
-@@ -170,7 +170,8 @@
-       (* Force check of well-formedness *)
-       unify_pat pat.pat_env pat
-         (newty(Tvariant{row_fields=[]; row_more=newvar(); row_closed=false;
--                        row_bound=[]; row_fixed=false; row_name=None}));
-+                        row_bound=[]; row_fixed=false; row_name=None;
-+                        row_object=[]}));
-   | _ -> ()
- let rec iter_pattern f p =
-@@ -251,7 +252,7 @@
-       let ty = may_map (build_as_type env) p' in
-       newty (Tvariant{row_fields=[l, Rpresent ty]; row_more=newvar();
-                       row_bound=[]; row_name=None;
--                      row_fixed=false; row_closed=false})
-+                      row_fixed=false; row_closed=false; row_object=[]})
-   | Tpat_record lpl ->
-       let lbl = fst(List.hd lpl) in
-       if lbl.lbl_private = Private then p.pat_type else
-@@ -318,7 +319,8 @@
-       ([],[]) fields in
-   let row =
-     { row_fields = List.rev fields; row_more = newvar(); row_bound = !bound;
--      row_closed = false; row_fixed = false; row_name = Some (path, tyl) }
-+      row_closed = false; row_fixed = false; row_name = Some (path, tyl);
-+      row_object = [] }
-   in
-   let ty = newty (Tvariant row) in
-   let gloc = {loc with Location.loc_ghost=true} in
-@@ -428,7 +430,8 @@
-                   row_closed = false;
-                   row_more = newvar ();
-                   row_fixed = false;
--                  row_name = None } in
-+                  row_name = None;
-+                  row_object = [] } in
-       rp {
-         pat_desc = Tpat_variant(l, arg, row);
-         pat_loc = sp.ppat_loc;
-@@ -976,7 +979,8 @@
-                                   row_bound = [];
-                                   row_closed = false;
-                                   row_fixed = false;
--                                  row_name = None});
-+                                  row_name = None;
-+                                  row_object = []});
-         exp_env = env }
-   | Pexp_record(lid_sexp_list, opt_sexp) ->
-       let ty = newvar() in
-@@ -1261,8 +1265,30 @@
-                   assert false
-               end
-           | _ ->
--              (Texp_send(obj, Tmeth_name met),
--               filter_method env met Public obj.exp_type)
-+              let obj, met_ty =
-+                match expand_head env obj.exp_type with
-+                  {desc = Tvariant _} ->
-+                    let exp_ty = newvar () in
-+                    let met_ty = filter_method env met Public exp_ty in
-+                    let row =
-+                      {row_fields=[]; row_more=newvar();
-+                       row_bound=[]; row_closed=false;
-+                       row_fixed=false; row_name=None;
-+                       row_object=[met, Fpresent, met_ty]} in
-+                    unify_exp env obj (newty (Tvariant row));
-+                    let prim = Primitive.parse_declaration 1 ["%field1"] in
-+                    let ty = newty(Tarrow("", obj.exp_type, exp_ty, Cok)) in
-+                    let vd = {val_type = ty; val_kind = Val_prim prim} in
-+                    let esnd =
-+                      {exp_desc=Texp_ident(Path.Pident(Ident.create"snd"), vd);
-+                       exp_loc = Location.none; exp_type = ty; exp_env = env}
-+                    in
-+                    ({obj with exp_type = exp_ty;
-+                      exp_desc = Texp_apply(esnd,[Some obj, Required])},
-+                     met_ty)
-+                | _ -> (obj, filter_method env met Public obj.exp_type)
-+              in
-+              (Texp_send(obj, Tmeth_name met), met_ty)
-         in
-         if !Clflags.principal then begin
-           end_def ();
-Index: types.ml
-===================================================================
-RCS file: /net/yquem/devel/caml/repository/csl/typing/types.ml,v
-retrieving revision 1.25
-diff -u -r1.25 types.ml
---- types.ml   9 Dec 2004 12:40:53 -0000       1.25
-+++ types.ml   16 Jan 2006 02:23:15 -0000
-@@ -44,7 +44,9 @@
-       row_bound: type_expr list;
-       row_closed: bool;
-       row_fixed: bool;
--      row_name: (Path.t * type_expr list) option }
-+      row_name: (Path.t * type_expr list) option;
-+      row_object: (string * field_kind * type_expr) list;
-+    }
- and row_field =
-     Rpresent of type_expr option
-Index: types.mli
-===================================================================
-RCS file: /net/yquem/devel/caml/repository/csl/typing/types.mli,v
-retrieving revision 1.25
-diff -u -r1.25 types.mli
---- types.mli  9 Dec 2004 12:40:53 -0000       1.25
-+++ types.mli  16 Jan 2006 02:23:15 -0000
-@@ -43,7 +43,9 @@
-       row_bound: type_expr list;
-       row_closed: bool;
-       row_fixed: bool;
--      row_name: (Path.t * type_expr list) option }
-+      row_name: (Path.t * type_expr list) option;
-+      row_object: (string * field_kind * type_expr) list;
-+    }
- and row_field =
-     Rpresent of type_expr option
-Index: typetexp.ml
-===================================================================
-RCS file: /net/yquem/devel/caml/repository/csl/typing/typetexp.ml,v
-retrieving revision 1.54
-diff -u -r1.54 typetexp.ml
---- typetexp.ml        22 Jul 2005 06:42:36 -0000      1.54
-+++ typetexp.ml        16 Jan 2006 02:23:15 -0000
-@@ -215,7 +215,8 @@
-           in
-           let row = { row_closed = true; row_fields = fields;
-                       row_bound = !bound; row_name = Some (path, args);
--                      row_fixed = false; row_more = newvar () } in
-+                      row_fixed = false; row_more = newvar ();
-+                      row_object = [] } in
-           let static = Btype.static_row row in
-           let row =
-             if static then row else
-@@ -262,7 +263,7 @@
-       let mkfield l f =
-         newty (Tvariant {row_fields=[l,f]; row_more=newvar();
-                          row_bound=[]; row_closed=true;
--                         row_fixed=false; row_name=None}) in
-+                         row_fixed=false; row_name=None; row_object=[]}) in
-       let add_typed_field loc l f fields =
-         try
-           let f' = List.assoc l fields in
-@@ -345,7 +346,7 @@
-       let row =
-         { row_fields = List.rev fields; row_more = newvar ();
-           row_bound = !bound; row_closed = closed;
--          row_fixed = false; row_name = !name } in
-+          row_fixed = false; row_name = !name; row_object = [] } in
-       let static = Btype.static_row row in
-       let row =
-         if static then row else
diff --git a/experimental/garrigue/objvariant.ml b/experimental/garrigue/objvariant.ml
deleted file mode 100644 (file)
index 3233e03..0000000
+++ /dev/null
@@ -1,42 +0,0 @@
-(* use with [cvs update -r objvariants typing] *)
-
-let f (x : [> ]) = x#m 3;;
-let o = object method m x = x+2 end;;
-f (`A o);;
-let l = [`A o; `B(object method m x = x -2 method y = 3 end)];;
-List.map f l;;
-let g = function `A x -> x#m 3 | `B x -> x#y;;
-List.map g l;;
-fun x -> ignore (x=f); List.map x l;;
-fun (x : [< `A of _ | `B of _] -> int) -> ignore (x=f); List.map x l;;
-
-
-class cvar name =
-  object
-    method name = name
-    method print ppf = Format.pp_print_string ppf name
-  end
-
-type var = [`Var of cvar]
-
-class cint n =
-  object
-    method n = n
-    method print ppf = Format.pp_print_int ppf n
-  end
-
-class ['a] cadd (e1 : 'a) (e2 : 'a) =
-  object
-    constraint 'a = [> ]
-    method e1 = e1
-    method e2 = e2
-    method print ppf = Format.fprintf ppf "(%t, %t)" e1#print e2#print
-  end
-
-type 'a expr = [var | `Int of cint | `Add of 'a cadd]
-
-type expr1 = expr1 expr
-
-let print = Format.printf "%t@."
-
-let e1 : expr1 = `Add (new cadd (`Var (new cvar "x")) (`Int (new cint 2)))
diff --git a/experimental/garrigue/parser-lessminus.diffs b/experimental/garrigue/parser-lessminus.diffs
deleted file mode 100644 (file)
index 7b53530..0000000
+++ /dev/null
@@ -1,77 +0,0 @@
-Index: parsing/parser.mly
-===================================================================
---- parsing/parser.mly (revision 11929)
-+++ parsing/parser.mly (working copy)
-@@ -319,6 +319,11 @@
-   let polyvars, core_type = varify_constructors newtypes core_type in
-   (exp, ghtyp(Ptyp_poly(polyvars,core_type)))
-+let no_lessminus =
-+  List.map (fun (p,e,b) ->
-+    match b with None -> (p,e)
-+    | Some loc -> raise (Syntaxerr.Error (Syntaxerr.Other loc)))
-+
- %}
- /* Tokens */
-@@ -597,8 +602,9 @@
- structure_item:
-     LET rec_flag let_bindings
-       { match $3 with
--          [{ ppat_desc = Ppat_any; ppat_loc = _ }, exp] -> mkstr(Pstr_eval exp)
--        | _ -> mkstr(Pstr_value($2, List.rev $3)) }
-+          [{ ppat_desc = Ppat_any; ppat_loc = _ }, exp, None] ->
-+            mkstr(Pstr_eval exp)
-+        | _ -> mkstr(Pstr_value($2, no_lessminus (List.rev $3))) }
-   | EXTERNAL val_ident COLON core_type EQUAL primitive_declaration
-       { mkstr(Pstr_primitive($2, {pval_type = $4; pval_prim = $6})) }
-   | TYPE type_declarations
-@@ -744,7 +750,7 @@
-   | class_simple_expr simple_labeled_expr_list
-       { mkclass(Pcl_apply($1, List.rev $2)) }
-   | LET rec_flag let_bindings IN class_expr
--      { mkclass(Pcl_let ($2, List.rev $3, $5)) }
-+      { mkclass(Pcl_let ($2, no_lessminus (List.rev $3), $5)) }
- ;
- class_simple_expr:
-     LBRACKET core_type_comma_list RBRACKET class_longident
-@@ -981,9 +987,15 @@
-   | simple_expr simple_labeled_expr_list
-       { mkexp(Pexp_apply($1, List.rev $2)) }
-   | LET rec_flag let_bindings IN seq_expr
--      { mkexp(Pexp_let($2, List.rev $3, $5)) }
-+      { match $3 with
-+        | [pat, expr, Some loc] when $2 = Nonrecursive ->
-+            mkexp(Pexp_apply(
-+              {pexp_desc = Pexp_ident(Lident "bind"); pexp_loc = loc},
-+              ["", expr;  "", ghexp(Pexp_function("", None, [pat, $5]))]))
-+        | bindings ->
-+            mkexp(Pexp_let($2, no_lessminus (List.rev $3), $5)) }
-   | LET DOT simple_expr let_binding IN seq_expr
--      { let (pat, expr) = $4 in
-+      { let (pat, expr, _) = $4 in
-         mkexp(Pexp_apply($3, ["", expr;  "", ghexp(Pexp_function("", None, [pat, $6]))])) }
-   | LET MODULE UIDENT module_binding IN seq_expr
-       { mkexp(Pexp_letmodule($3, $4, $6)) }
-@@ -1197,14 +1209,17 @@
- ;
- let_binding:
-     val_ident fun_binding
--      { (mkpatvar $1 1, $2) }
-+      { (mkpatvar $1 1, $2, None) }
-   | val_ident COLON typevar_list DOT core_type EQUAL seq_expr
--      { (ghpat(Ppat_constraint(mkpatvar $1 1, ghtyp(Ptyp_poly($3,$5)))), $7) }
-+      { (ghpat(Ppat_constraint(mkpatvar $1 1, ghtyp(Ptyp_poly($3,$5)))), $7,
-+        None) }
-   | val_ident COLON TYPE lident_list DOT core_type EQUAL seq_expr
-       { let exp, poly = wrap_type_annotation $4 $6 $8 in
--        (ghpat(Ppat_constraint(mkpatvar $1 1, poly)), exp) }
-+        (ghpat(Ppat_constraint(mkpatvar $1 1, poly)), exp, None) }
-   | pattern EQUAL seq_expr
--      { ($1, $3) }
-+      { ($1, $3, None) }
-+  | pattern LESSMINUS seq_expr
-+      { ($1, $3, Some (rhs_loc 2)) }
- ;
- fun_binding:
-     strict_binding
diff --git a/experimental/garrigue/printers.ml b/experimental/garrigue/printers.ml
deleted file mode 100644 (file)
index c80c42d..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-(* $Id$ *)
-
-open Types
-
-let ignore_abbrevs ppf ab =
-  let s = match ab with
-    Mnil -> "Mnil"
-  | Mlink _ -> "Mlink _"
-  | Mcons _ -> "Mcons _"
-  in
-  Format.pp_print_string ppf s
diff --git a/experimental/garrigue/show_types.diffs b/experimental/garrigue/show_types.diffs
deleted file mode 100644 (file)
index 0c29195..0000000
+++ /dev/null
@@ -1,160 +0,0 @@
-Index: typing/printtyp.ml
-===================================================================
---- typing/printtyp.ml (revision 11316)
-+++ typing/printtyp.ml (working copy)
-@@ -894,8 +894,10 @@
-       tree_of_class_declaration id decl rs :: tree_of_signature rem
-   | Tsig_cltype(id, decl, rs) :: tydecl1 :: tydecl2 :: rem ->
-       tree_of_cltype_declaration id decl rs :: tree_of_signature rem
--  | _ ->
--      assert false
-+  | Tsig_class(id, decl, rs) :: _ ->
-+      tree_of_class_declaration id decl rs :: []
-+  | Tsig_cltype(id, decl, rs) :: _ ->
-+      tree_of_cltype_declaration id decl rs :: []
- and tree_of_modtype_declaration id decl =
-   let mty =
-Index: toplevel/topdirs.ml
-===================================================================
---- toplevel/topdirs.ml        (revision 11316)
-+++ toplevel/topdirs.ml        (working copy)
-@@ -297,10 +297,92 @@
-     !traced_functions;
-   traced_functions := []
-+(* Warnings *)
-+
- let parse_warnings ppf iserr s =
-   try Warnings.parse_options iserr s
-   with Arg.Bad err -> fprintf ppf "%s.@." err
-+(* Typing information *)
-+
-+type pkind =
-+    Pvalue
-+  | Ptype
-+  | Pexception
-+  | Pmodule
-+  | Pmodtype
-+  | Pclass
-+  | Pcltype
-+
-+let name_of_kind = function
-+    Pvalue -> "value"
-+  | Ptype -> "type"
-+  | Pexception -> "exception"
-+  | Pmodule -> "module"
-+  | Pmodtype -> "module type"
-+  | Pclass -> "class"
-+  | Pcltype -> "class type"
-+
-+let rec trim_modtype = function
-+    Tmty_signature _ -> Tmty_signature []
-+  | Tmty_functor (id, mty, mty') ->
-+      Tmty_functor (id, mty, trim_modtype mty')
-+  | Tmty_ident _ as mty -> mty
-+
-+let trim_signature = function
-+    Tmty_signature sg ->
-+      Tmty_signature
-+        (List.map
-+           (function
-+               Tsig_module (id, mty, rs) ->
-+                 Tsig_module (id, trim_modtype mty, rs)
-+             (*| Tsig_modtype (id, Tmodtype_manifest mty) ->
-+                 Tsig_modtype (id, Tmodtype_manifest (trim_modtype mty))*)
-+             | item -> item)
-+           sg)
-+  | mty -> mty
-+
-+let show_type ppf kind lid =
-+  let env = !Toploop.toplevel_env in
-+  try
-+    let id =
-+      let s = match lid with
-+        Longident.Lident s -> s
-+      | Longident.Ldot (_,s) -> s
-+      | Longident.Lapply _ -> failwith "invalid"
-+      in Ident.create_persistent s
-+    in
-+    let item =
-+      match kind with
-+        Pvalue ->
-+          let path, desc = Env.lookup_value lid env in
-+          Tsig_value (id, desc)
-+      | Ptype ->
-+          let path, desc = Env.lookup_type lid env in
-+          Tsig_type (id, desc, Trec_not)
-+      | Pexception ->
-+          let desc = Env.lookup_constructor lid env in
-+          Tsig_exception (id, desc.cstr_args)
-+      | Pmodule ->
-+          let path, desc = Env.lookup_module lid env in
-+          Tsig_module (id, trim_signature desc, Trec_not)
-+      | Pmodtype ->
-+          let path, desc = Env.lookup_modtype lid env in
-+          Tsig_modtype (id, desc)
-+      | Pclass ->
-+          let path, desc = Env.lookup_class lid env in
-+          Tsig_class (id, desc, Trec_not)
-+      | Pcltype ->
-+          let path, desc = Env.lookup_cltype lid env in
-+          Tsig_cltype (id, desc, Trec_not)
-+    in
-+    fprintf ppf "%a@." Printtyp.signature [item]
-+  with
-+    Not_found ->
-+      fprintf ppf "Unknown %s.@." (name_of_kind kind)
-+  | Failure "invalid" ->
-+      fprintf ppf "Invalid path %a@." Printtyp.longident lid
-+
- let _ =
-   Hashtbl.add directive_table "trace" (Directive_ident (dir_trace std_out));
-   Hashtbl.add directive_table "untrace" (Directive_ident (dir_untrace std_out));
-@@ -329,4 +411,19 @@
-              (Directive_string (parse_warnings std_out false));
-   Hashtbl.add directive_table "warn_error"
--             (Directive_string (parse_warnings std_out true))
-+             (Directive_string (parse_warnings std_out true));
-+
-+  Hashtbl.add directive_table "show_value"
-+             (Directive_ident (show_type std_out Pvalue));
-+  Hashtbl.add directive_table "show_type"
-+             (Directive_ident (show_type std_out Ptype));
-+  Hashtbl.add directive_table "show_exception"
-+             (Directive_ident (show_type std_out Pexception));
-+  Hashtbl.add directive_table "show_module"
-+             (Directive_ident (show_type std_out Pmodule));
-+  Hashtbl.add directive_table "show_module_type"
-+             (Directive_ident (show_type std_out Pmodtype));
-+  Hashtbl.add directive_table "show_class"
-+             (Directive_ident (show_type std_out Pclass));
-+  Hashtbl.add directive_table "show_class_type"
-+             (Directive_ident (show_type std_out Pcltype))
-Index: parsing/parser.mly
-===================================================================
---- parsing/parser.mly (revision 11316)
-+++ parsing/parser.mly (working copy)
-@@ -1769,6 +1769,11 @@
-     LIDENT                                      { Lident $1 }
-   | mod_longident DOT LIDENT                    { Ldot($1, $3) }
- ;
-+any_longident:
-+    val_ident                                   { Lident $1 }
-+  | mod_longident DOT val_ident                 { Ldot($1, $3) }
-+  | mod_longident                               { $1 }
-+;
- /* Toplevel directives */
-@@ -1776,7 +1781,7 @@
-     SHARP ident                 { Ptop_dir($2, Pdir_none) }
-   | SHARP ident STRING          { Ptop_dir($2, Pdir_string $3) }
-   | SHARP ident INT             { Ptop_dir($2, Pdir_int $3) }
--  | SHARP ident val_longident   { Ptop_dir($2, Pdir_ident $3) }
-+  | SHARP ident any_longident   { Ptop_dir($2, Pdir_ident $3) }
-   | SHARP ident FALSE           { Ptop_dir($2, Pdir_bool false) }
-   | SHARP ident TRUE            { Ptop_dir($2, Pdir_bool true) }
- ;
diff --git a/experimental/garrigue/tests.ml b/experimental/garrigue/tests.ml
deleted file mode 100644 (file)
index c39d152..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-(* $Id$ *)
-
-let f1 = function `a x -> x=1 | `b -> true
-let f2 = function `a x -> x | `b -> true
-let f3 = function `b -> true
-let f x = f1 x && f2 x
-
-let sub s ?:pos{=0} ?:len{=String.length s - pos} () =
-  String.sub s pos len
-
-let cCAMLtoTKpack_options w = function
-        `After v1 -> "-after"
-        | `Anchor v1 -> "-anchor"
-        | `Before v1 -> "-before"
-        | `Expand v1 -> "-expand"
-        | `Fill v1 -> "-fill"
-        | `In v1 -> "-in"
-        | `Ipadx v1 -> "-ipadx"
-        | `Ipady v1 -> "-ipady"
-        | `Padx v1 -> "-padx"
-        | `Pady v1 -> "-pady"
-        | `Side v1 -> "-side"
diff --git a/experimental/garrigue/valvirt.diffs b/experimental/garrigue/valvirt.diffs
deleted file mode 100644 (file)
index 2cf5574..0000000
+++ /dev/null
@@ -1,2349 +0,0 @@
-Index: utils/warnings.ml
-===================================================================
-RCS file: /net/yquem/devel/caml/repository/csl/utils/warnings.ml,v
-retrieving revision 1.23
-diff -u -r1.23 warnings.ml
---- utils/warnings.ml  15 Sep 2005 03:09:26 -0000      1.23
-+++ utils/warnings.ml  5 Apr 2006 02:25:59 -0000
-@@ -26,7 +26,7 @@
-   | Statement_type                   (* S *)
-   | Unused_match                     (* U *)
-   | Unused_pat
--  | Hide_instance_variable of string (* V *)
-+  | Instance_variable_override of string (* V *)
-   | Illegal_backslash                (* X *)
-   | Implicit_public_methods of string list
-   | Unerasable_optional_argument
-@@ -54,7 +54,7 @@
-   | Statement_type ->           's'
-   | Unused_match
-   | Unused_pat ->               'u'
--  | Hide_instance_variable _ -> 'v'
-+  | Instance_variable_override _ -> 'v'
-   | Illegal_backslash
-   | Implicit_public_methods _
-   | Unerasable_optional_argument
-@@ -126,9 +126,9 @@
-       String.concat " "
-         ("the following methods are overridden \
-           by the inherited class:\n " :: slist)
--  | Hide_instance_variable lab ->
--      "this definition of an instance variable " ^ lab ^
--      " hides a previously\ndefined instance variable of the same name."
-+  | Instance_variable_override lab ->
-+      "the instance variable " ^ lab ^ " is overridden.\n" ^
-+      "The behaviour changed in ocaml 3.10 (previous behaviour was hiding.)"
-   | Partial_application ->
-       "this function application is partial,\n\
-        maybe some arguments are missing."
-Index: utils/warnings.mli
-===================================================================
-RCS file: /net/yquem/devel/caml/repository/csl/utils/warnings.mli,v
-retrieving revision 1.16
-diff -u -r1.16 warnings.mli
---- utils/warnings.mli 15 Sep 2005 03:09:26 -0000      1.16
-+++ utils/warnings.mli 5 Apr 2006 02:25:59 -0000
-@@ -26,7 +26,7 @@
-   | Statement_type                   (* S *)
-   | Unused_match                     (* U *)
-   | Unused_pat
--  | Hide_instance_variable of string (* V *)
-+  | Instance_variable_override of string (* V *)
-   | Illegal_backslash                (* X *)
-   | Implicit_public_methods of string list
-   | Unerasable_optional_argument
-Index: parsing/parser.mly
-===================================================================
-RCS file: /net/yquem/devel/caml/repository/csl/parsing/parser.mly,v
-retrieving revision 1.123
-diff -u -r1.123 parser.mly
---- parsing/parser.mly 23 Mar 2005 03:08:37 -0000      1.123
-+++ parsing/parser.mly 5 Apr 2006 02:25:59 -0000
-@@ -623,6 +623,8 @@
-       { [] }
-   | class_fields INHERIT class_expr parent_binder
-       { Pcf_inher ($3, $4) :: $1 }
-+  | class_fields VAL virtual_value
-+      { Pcf_valvirt $3 :: $1 }
-   | class_fields VAL value
-       { Pcf_val $3 :: $1 }
-   | class_fields virtual_method
-@@ -638,14 +640,20 @@
-     AS LIDENT
-           { Some $2 }
-   | /* empty */
--          {None}
-+          { None }
-+;
-+virtual_value:
-+    MUTABLE VIRTUAL label COLON core_type
-+      { $3, Mutable, $5, symbol_rloc () }
-+  | VIRTUAL mutable_flag label COLON core_type
-+      { $3, $2, $5, symbol_rloc () }
- ;
- value:
--        mutable_flag label EQUAL seq_expr
--          { $2, $1, $4, symbol_rloc () }
--      | mutable_flag label type_constraint EQUAL seq_expr
--          { $2, $1, (let (t, t') = $3 in ghexp(Pexp_constraint($5, t, t'))),
--            symbol_rloc () }
-+    mutable_flag label EQUAL seq_expr
-+      { $2, $1, $4, symbol_rloc () }
-+  | mutable_flag label type_constraint EQUAL seq_expr
-+      { $2, $1, (let (t, t') = $3 in ghexp(Pexp_constraint($5, t, t'))),
-+        symbol_rloc () }
- ;
- virtual_method:
-     METHOD PRIVATE VIRTUAL label COLON poly_type
-@@ -711,8 +719,12 @@
-   | class_sig_fields CONSTRAINT constrain       { Pctf_cstr  $3 :: $1 }
- ;
- value_type:
--    mutable_flag label COLON core_type
--      { $2, $1, Some $4, symbol_rloc () }
-+    VIRTUAL mutable_flag label COLON core_type
-+      { $3, $2, Virtual, $5, symbol_rloc () }
-+  | MUTABLE virtual_flag label COLON core_type
-+      { $3, Mutable, $2, $5, symbol_rloc () }
-+  | label COLON core_type
-+      { $1, Immutable, Concrete, $3, symbol_rloc () }
- ;
- method_type:
-     METHOD private_flag label COLON poly_type
-Index: parsing/parsetree.mli
-===================================================================
-RCS file: /net/yquem/devel/caml/repository/csl/parsing/parsetree.mli,v
-retrieving revision 1.42
-diff -u -r1.42 parsetree.mli
---- parsing/parsetree.mli      23 Mar 2005 03:08:37 -0000      1.42
-+++ parsing/parsetree.mli      5 Apr 2006 02:25:59 -0000
-@@ -152,7 +152,7 @@
- and class_type_field =
-     Pctf_inher of class_type
--  | Pctf_val   of (string * mutable_flag * core_type option * Location.t)
-+  | Pctf_val of (string * mutable_flag * virtual_flag * core_type * Location.t)
-   | Pctf_virt  of (string * private_flag * core_type * Location.t)
-   | Pctf_meth  of (string * private_flag * core_type * Location.t)
-   | Pctf_cstr  of (core_type * core_type * Location.t)
-@@ -179,6 +179,7 @@
- and class_field =
-     Pcf_inher of class_expr * string option
-+  | Pcf_valvirt of (string * mutable_flag * core_type * Location.t)
-   | Pcf_val   of (string * mutable_flag * expression * Location.t)
-   | Pcf_virt  of (string * private_flag * core_type * Location.t)
-   | Pcf_meth  of (string * private_flag * expression * Location.t)
-Index: parsing/printast.ml
-===================================================================
-RCS file: /net/yquem/devel/caml/repository/csl/parsing/printast.ml,v
-retrieving revision 1.29
-diff -u -r1.29 printast.ml
---- parsing/printast.ml        4 Jan 2006 16:55:50 -0000       1.29
-+++ parsing/printast.ml        5 Apr 2006 02:25:59 -0000
-@@ -353,10 +353,11 @@
-   | Pctf_inher (ct) ->
-       line i ppf "Pctf_inher\n";
-       class_type i ppf ct;
--  | Pctf_val (s, mf, cto, loc) ->
-+  | Pctf_val (s, mf, vf, ct, loc) ->
-       line i ppf
--        "Pctf_val \"%s\" %a %a\n" s fmt_mutable_flag mf fmt_location loc;
--      option i core_type ppf cto;
-+        "Pctf_val \"%s\" %a %a %a\n" s
-+        fmt_mutable_flag mf fmt_virtual_flag vf fmt_location loc;
-+      core_type (i+1) ppf ct;
-   | Pctf_virt (s, pf, ct, loc) ->
-       line i ppf
-         "Pctf_virt \"%s\" %a %a\n" s fmt_private_flag pf fmt_location loc;
-@@ -428,6 +429,10 @@
-       line i ppf "Pcf_inher\n";
-       class_expr (i+1) ppf ce;
-       option (i+1) string ppf so;
-+  | Pcf_valvirt (s, mf, ct, loc) ->
-+      line i ppf
-+        "Pcf_valvirt \"%s\" %a %a\n" s fmt_mutable_flag mf fmt_location loc;
-+      core_type (i+1) ppf ct;
-   | Pcf_val (s, mf, e, loc) ->
-       line i ppf
-         "Pcf_val \"%s\" %a %a\n" s fmt_mutable_flag mf fmt_location loc;
-Index: typing/btype.ml
-===================================================================
-RCS file: /net/yquem/devel/caml/repository/csl/typing/btype.ml,v
-retrieving revision 1.38
-diff -u -r1.38 btype.ml
---- typing/btype.ml    4 Jan 2006 16:55:50 -0000       1.38
-+++ typing/btype.ml    5 Apr 2006 02:25:59 -0000
-@@ -330,7 +330,7 @@
- let unmark_class_signature sign =
-   unmark_type sign.cty_self;
--  Vars.iter (fun l (m, t) -> unmark_type t) sign.cty_vars
-+  Vars.iter (fun l (m, v, t) -> unmark_type t) sign.cty_vars
- let rec unmark_class_type =
-   function
-Index: typing/ctype.ml
-===================================================================
-RCS file: /net/yquem/devel/caml/repository/csl/typing/ctype.ml,v
-retrieving revision 1.200
-diff -u -r1.200 ctype.ml
---- typing/ctype.ml    6 Jan 2006 02:16:24 -0000       1.200
-+++ typing/ctype.ml    5 Apr 2006 02:25:59 -0000
-@@ -857,7 +857,7 @@
-         Tcty_signature
-           {cty_self = copy sign.cty_self;
-            cty_vars =
--             Vars.map (function (mut, ty) -> (mut, copy ty)) sign.cty_vars;
-+             Vars.map (function (m, v, ty) -> (m, v, copy ty)) sign.cty_vars;
-            cty_concr = sign.cty_concr;
-            cty_inher =
-              List.map (fun (p,tl) -> (p, List.map copy tl)) sign.cty_inher}
-@@ -2354,10 +2354,11 @@
-   | CM_Val_type_mismatch of string * (type_expr * type_expr) list
-   | CM_Meth_type_mismatch of string * (type_expr * type_expr) list
-   | CM_Non_mutable_value of string
-+  | CM_Non_concrete_value of string
-   | CM_Missing_value of string
-   | CM_Missing_method of string
-   | CM_Hide_public of string
--  | CM_Hide_virtual of string
-+  | CM_Hide_virtual of string * string
-   | CM_Public_method of string
-   | CM_Private_method of string
-   | CM_Virtual_method of string
-@@ -2390,8 +2391,8 @@
-            end)
-         pairs;
-       Vars.iter
--        (fun lab (mut, ty) ->
--           let (mut', ty') = Vars.find lab sign1.cty_vars in
-+        (fun lab (mut, v, ty) ->
-+           let (mut', v', ty') = Vars.find lab sign1.cty_vars in
-            try moregen true type_pairs env ty' ty with Unify trace ->
-              raise (Failure [CM_Val_type_mismatch
-                                 (lab, expand_trace env trace)]))
-@@ -2437,7 +2438,7 @@
-              end
-            in
-            if Concr.mem lab sign1.cty_concr then err
--           else CM_Hide_virtual lab::err)
-+           else CM_Hide_virtual ("method", lab) :: err)
-         miss1 []
-     in
-     let missing_method = List.map (fun (m, _, _) -> m) miss2 in
-@@ -2455,11 +2456,13 @@
-     in
-     let error =
-       Vars.fold
--        (fun lab (mut, ty) err ->
-+        (fun lab (mut, vr, ty) err ->
-           try
--            let (mut', ty') = Vars.find lab sign1.cty_vars in
-+            let (mut', vr', ty') = Vars.find lab sign1.cty_vars in
-             if mut = Mutable && mut' <> Mutable then
-               CM_Non_mutable_value lab::err
-+            else if vr = Concrete && vr' <> Concrete then
-+              CM_Non_concrete_value lab::err
-             else
-               err
-           with Not_found ->
-@@ -2467,6 +2470,14 @@
-         sign2.cty_vars error
-     in
-     let error =
-+      Vars.fold
-+        (fun lab (_,vr,_) err ->
-+          if vr = Virtual && not (Vars.mem lab sign2.cty_vars) then
-+            CM_Hide_virtual ("instance variable", lab) :: err
-+          else err)
-+        sign1.cty_vars error
-+    in
-+    let error =
-       List.fold_right
-         (fun e l ->
-            if List.mem e missing_method then l else CM_Virtual_method e::l)
-@@ -2516,8 +2527,8 @@
-              end)
-           pairs;
-         Vars.iter
--          (fun lab (mut, ty) ->
--             let (mut', ty') = Vars.find lab sign1.cty_vars in
-+          (fun lab (_, _, ty) ->
-+             let (_, _, ty') = Vars.find lab sign1.cty_vars in
-              try eqtype true type_pairs subst env ty ty' with Unify trace ->
-                raise (Failure [CM_Val_type_mismatch
-                                   (lab, expand_trace env trace)]))
-@@ -2554,7 +2565,7 @@
-           end
-         in
-         if Concr.mem lab sign1.cty_concr then err
--        else CM_Hide_virtual lab::err)
-+        else CM_Hide_virtual ("method", lab) :: err)
-       miss1 []
-   in
-   let missing_method = List.map (fun (m, _, _) -> m) miss2 in
-@@ -2578,11 +2589,13 @@
-   in
-   let error =
-     Vars.fold
--      (fun lab (mut, ty) err ->
-+      (fun lab (mut, vr, ty) err ->
-          try
--           let (mut', ty') = Vars.find lab sign1.cty_vars in
-+           let (mut', vr', ty') = Vars.find lab sign1.cty_vars in
-            if mut = Mutable && mut' <> Mutable then
-              CM_Non_mutable_value lab::err
-+           else if vr = Concrete && vr' <> Concrete then
-+             CM_Non_concrete_value lab::err
-            else
-              err
-          with Not_found ->
-@@ -2590,6 +2603,14 @@
-       sign2.cty_vars error
-   in
-   let error =
-+    Vars.fold
-+      (fun lab (_,vr,_) err ->
-+        if vr = Virtual && not (Vars.mem lab sign2.cty_vars) then
-+          CM_Hide_virtual ("instance variable", lab) :: err
-+        else err)
-+      sign1.cty_vars error
-+  in
-+  let error =
-     List.fold_right
-       (fun e l ->
-         if List.mem e missing_method then l else CM_Virtual_method e::l)
-@@ -3279,7 +3300,7 @@
- let nondep_class_signature env id sign =
-   { cty_self = nondep_type_rec env id sign.cty_self;
-     cty_vars =
--      Vars.map (function (m, t) -> (m, nondep_type_rec env id t))
-+      Vars.map (function (m, v, t) -> (m, v, nondep_type_rec env id t))
-         sign.cty_vars;
-     cty_concr = sign.cty_concr;
-     cty_inher =
-Index: typing/ctype.mli
-===================================================================
-RCS file: /net/yquem/devel/caml/repository/csl/typing/ctype.mli,v
-retrieving revision 1.53
-diff -u -r1.53 ctype.mli
---- typing/ctype.mli   9 Dec 2004 12:40:53 -0000       1.53
-+++ typing/ctype.mli   5 Apr 2006 02:25:59 -0000
-@@ -170,10 +170,11 @@
-   | CM_Val_type_mismatch of string * (type_expr * type_expr) list
-   | CM_Meth_type_mismatch of string * (type_expr * type_expr) list
-   | CM_Non_mutable_value of string
-+  | CM_Non_concrete_value of string
-   | CM_Missing_value of string
-   | CM_Missing_method of string
-   | CM_Hide_public of string
--  | CM_Hide_virtual of string
-+  | CM_Hide_virtual of string * string
-   | CM_Public_method of string
-   | CM_Private_method of string
-   | CM_Virtual_method of string
-Index: typing/includeclass.ml
-===================================================================
-RCS file: /net/yquem/devel/caml/repository/csl/typing/includeclass.ml,v
-retrieving revision 1.7
-diff -u -r1.7 includeclass.ml
---- typing/includeclass.ml     6 Mar 2000 22:11:57 -0000       1.7
-+++ typing/includeclass.ml     5 Apr 2006 02:25:59 -0000
-@@ -78,14 +78,17 @@
-   | CM_Non_mutable_value lab ->
-       fprintf ppf
-        "@[The non-mutable instance variable %s cannot become mutable@]" lab
-+  | CM_Non_concrete_value lab ->
-+      fprintf ppf
-+       "@[The virtual instance variable %s cannot become concrete@]" lab
-   | CM_Missing_value lab ->
-       fprintf ppf "@[The first class type has no instance variable %s@]" lab
-   | CM_Missing_method lab ->
-       fprintf ppf "@[The first class type has no method %s@]" lab
-   | CM_Hide_public lab ->
-      fprintf ppf "@[The public method %s cannot be hidden@]" lab
--  | CM_Hide_virtual lab ->
--      fprintf ppf "@[The virtual method %s cannot be hidden@]" lab
-+  | CM_Hide_virtual (k, lab) ->
-+      fprintf ppf "@[The virtual %s %s cannot be hidden@]" k lab
-   | CM_Public_method lab ->
-       fprintf ppf "@[The public method %s cannot become private" lab
-   | CM_Virtual_method lab ->
-Index: typing/oprint.ml
-===================================================================
-RCS file: /net/yquem/devel/caml/repository/csl/typing/oprint.ml,v
-retrieving revision 1.22
-diff -u -r1.22 oprint.ml
---- typing/oprint.ml   23 Mar 2005 03:08:37 -0000      1.22
-+++ typing/oprint.ml   5 Apr 2006 02:25:59 -0000
-@@ -291,8 +291,10 @@
-       fprintf ppf "@[<2>method %s%s%s :@ %a@]"
-         (if priv then "private " else "") (if virt then "virtual " else "")
-         name !out_type ty
--  | Ocsg_value (name, mut, ty) ->
--      fprintf ppf "@[<2>val %s%s :@ %a@]" (if mut then "mutable " else "")
-+  | Ocsg_value (name, mut, vr, ty) ->
-+      fprintf ppf "@[<2>val %s%s%s :@ %a@]"
-+        (if mut then "mutable " else "")
-+        (if vr then "virtual " else "")
-         name !out_type ty
- let out_class_type = ref print_out_class_type
-Index: typing/outcometree.mli
-===================================================================
-RCS file: /net/yquem/devel/caml/repository/csl/typing/outcometree.mli,v
-retrieving revision 1.14
-diff -u -r1.14 outcometree.mli
---- typing/outcometree.mli     23 Mar 2005 03:08:37 -0000      1.14
-+++ typing/outcometree.mli     5 Apr 2006 02:25:59 -0000
-@@ -71,7 +71,7 @@
- and out_class_sig_item =
-   | Ocsg_constraint of out_type * out_type
-   | Ocsg_method of string * bool * bool * out_type
--  | Ocsg_value of string * bool * out_type
-+  | Ocsg_value of string * bool * bool * out_type
- type out_module_type =
-   | Omty_abstract
-Index: typing/printtyp.ml
-===================================================================
-RCS file: /net/yquem/devel/caml/repository/csl/typing/printtyp.ml,v
-retrieving revision 1.140
-diff -u -r1.140 printtyp.ml
---- typing/printtyp.ml 4 Jan 2006 16:55:50 -0000       1.140
-+++ typing/printtyp.ml 5 Apr 2006 02:26:00 -0000
-@@ -650,7 +650,7 @@
-         Ctype.flatten_fields (Ctype.object_fields sign.cty_self)
-       in
-       List.iter (fun met -> mark_loops (method_type met)) fields;
--      Vars.iter (fun _ (_, ty) -> mark_loops ty) sign.cty_vars
-+      Vars.iter (fun _ (_, _, ty) -> mark_loops ty) sign.cty_vars
-   | Tcty_fun (_, ty, cty) ->
-       mark_loops ty;
-       prepare_class_type params cty
-@@ -682,13 +682,15 @@
-           csil (tree_of_constraints params)
-       in
-       let all_vars =
--        Vars.fold (fun l (m, t) all -> (l, m, t) :: all) sign.cty_vars [] in
-+        Vars.fold (fun l (m, v, t) all -> (l, m, v, t) :: all) sign.cty_vars []
-+      in
-       (* Consequence of PR#3607: order of Map.fold has changed! *)
-       let all_vars = List.rev all_vars in
-       let csil =
-         List.fold_left
--          (fun csil (l, m, t) ->
--             Ocsg_value (l, m = Mutable, tree_of_typexp sch t) :: csil)
-+          (fun csil (l, m, v, t) ->
-+            Ocsg_value (l, m = Mutable, v = Virtual, tree_of_typexp sch t)
-+            :: csil)
-           csil all_vars
-       in
-       let csil =
-@@ -763,7 +765,9 @@
-     List.exists
-       (fun (lab, _, ty) ->
-          not (lab = dummy_method || Concr.mem lab sign.cty_concr))
--      fields in
-+      fields
-+    || Vars.fold (fun _ (_,vr,_) b -> vr = Virtual || b) sign.cty_vars false
-+  in
-   Osig_class_type
-     (virt, Ident.name id,
-Index: typing/subst.ml
-===================================================================
-RCS file: /net/yquem/devel/caml/repository/csl/typing/subst.ml,v
-retrieving revision 1.49
-diff -u -r1.49 subst.ml
---- typing/subst.ml    4 Jan 2006 16:55:50 -0000       1.49
-+++ typing/subst.ml    5 Apr 2006 02:26:00 -0000
-@@ -178,7 +178,8 @@
- let class_signature s sign =
-   { cty_self = typexp s sign.cty_self;
--    cty_vars = Vars.map (function (m, t) -> (m, typexp s t)) sign.cty_vars;
-+    cty_vars =
-+      Vars.map (function (m, v, t) -> (m, v, typexp s t)) sign.cty_vars;
-     cty_concr = sign.cty_concr;
-     cty_inher =
-       List.map (fun (p, tl) -> (type_path s p, List.map (typexp s) tl))
-Index: typing/typeclass.ml
-===================================================================
-RCS file: /net/yquem/devel/caml/repository/csl/typing/typeclass.ml,v
-retrieving revision 1.85
-diff -u -r1.85 typeclass.ml
---- typing/typeclass.ml        22 Jul 2005 06:42:36 -0000      1.85
-+++ typing/typeclass.ml        5 Apr 2006 02:26:00 -0000
-@@ -24,7 +24,7 @@
- type error =
-     Unconsistent_constraint of (type_expr * type_expr) list
--  | Method_type_mismatch of string * (type_expr * type_expr) list
-+  | Field_type_mismatch of string * string * (type_expr * type_expr) list
-   | Structure_expected of class_type
-   | Cannot_apply of class_type
-   | Apply_wrong_label of label
-@@ -36,7 +36,7 @@
-   | Unbound_class_type_2 of Longident.t
-   | Abbrev_type_clash of type_expr * type_expr * type_expr
-   | Constructor_type_mismatch of string * (type_expr * type_expr) list
--  | Virtual_class of bool * string list
-+  | Virtual_class of bool * string list * string list
-   | Parameter_arity_mismatch of Longident.t * int * int
-   | Parameter_mismatch of (type_expr * type_expr) list
-   | Bad_parameters of Ident.t * type_expr * type_expr
-@@ -49,6 +49,7 @@
-   | Non_collapsable_conjunction of
-       Ident.t * Types.class_declaration * (type_expr * type_expr) list
-   | Final_self_clash of (type_expr * type_expr) list
-+  | Mutability_mismatch of string * mutable_flag
- exception Error of Location.t * error
-@@ -90,7 +91,7 @@
-       generalize_class_type cty
-   | Tcty_signature {cty_self = sty; cty_vars = vars; cty_inher = inher} ->
-       Ctype.generalize sty;
--      Vars.iter (fun _ (_, ty) -> Ctype.generalize ty) vars;
-+      Vars.iter (fun _ (_, _, ty) -> Ctype.generalize ty) vars;
-       List.iter (fun (_,tl) -> List.iter Ctype.generalize tl) inher
-   | Tcty_fun (_, ty, cty) ->
-       Ctype.generalize ty;
-@@ -152,7 +153,7 @@
-   | Tcty_signature sign ->
-       Ctype.closed_schema sign.cty_self
-         &&
--      Vars.fold (fun _ (_, ty) cc -> Ctype.closed_schema ty && cc)
-+      Vars.fold (fun _ (_, _, ty) cc -> Ctype.closed_schema ty && cc)
-         sign.cty_vars
-         true
-   | Tcty_fun (_, ty, cty) ->
-@@ -172,7 +173,7 @@
-       limited_generalize rv cty
-   | Tcty_signature sign ->
-       Ctype.limited_generalize rv sign.cty_self;
--      Vars.iter (fun _ (_, ty) -> Ctype.limited_generalize rv ty)
-+      Vars.iter (fun _ (_, _, ty) -> Ctype.limited_generalize rv ty)
-         sign.cty_vars;
-       List.iter (fun (_, tl) -> List.iter (Ctype.limited_generalize rv) tl)
-         sign.cty_inher
-@@ -201,11 +202,25 @@
-    Env.add_value id {val_type = ty; val_kind = Val_unbound} par_env)
- (* Enter an instance variable in the environment *)
--let enter_val cl_num vars lab mut ty val_env met_env par_env =
--  let (id, val_env, met_env, par_env) as result =
--    enter_met_env lab (Val_ivar (mut, cl_num)) ty val_env met_env par_env
-+let enter_val cl_num vars inh lab mut virt ty val_env met_env par_env loc =
-+  let (id, virt) =
-+    try
-+      let (id, mut', virt', ty') = Vars.find lab !vars in
-+      if mut' <> mut then raise (Error(loc, Mutability_mismatch(lab, mut)));
-+      Ctype.unify val_env (Ctype.instance ty) (Ctype.instance ty');
-+      (if not inh then Some id else None),
-+      (if virt' = Concrete then virt' else virt)
-+    with
-+      Ctype.Unify tr ->
-+        raise (Error(loc, Field_type_mismatch("instance variable", lab, tr)))
-+    | Not_found -> None, virt
-+  in
-+  let (id, _, _, _) as result =
-+    match id with Some id -> (id, val_env, met_env, par_env)
-+    | None ->
-+        enter_met_env lab (Val_ivar (mut, cl_num)) ty val_env met_env par_env
-   in
--  vars := Vars.add lab (id, mut, ty) !vars;
-+  vars := Vars.add lab (id, mut, virt, ty) !vars;
-   result
- let inheritance self_type env concr_meths warn_meths loc parent =
-@@ -218,7 +233,7 @@
-       with Ctype.Unify trace ->
-         match trace with
-           _::_::_::({desc = Tfield(n, _, _, _)}, _)::rem ->
--            raise(Error(loc, Method_type_mismatch (n, rem)))
-+            raise(Error(loc, Field_type_mismatch ("method", n, rem)))
-         | _ ->
-             assert false
-       end;
-@@ -243,7 +258,7 @@
-   in
-   let ty = transl_simple_type val_env false sty in
-   try Ctype.unify val_env ty ty' with Ctype.Unify trace ->
--    raise(Error(loc, Method_type_mismatch (lab, trace)))
-+    raise(Error(loc, Field_type_mismatch ("method", lab, trace)))
- let delayed_meth_specs = ref []
-@@ -253,7 +268,7 @@
-   in
-   let unif ty =
-     try Ctype.unify val_env ty ty' with Ctype.Unify trace ->
--      raise(Error(loc, Method_type_mismatch (lab, trace)))
-+      raise(Error(loc, Field_type_mismatch ("method", lab, trace)))
-   in
-   match sty.ptyp_desc, priv with
-     Ptyp_poly ([],sty), Public ->
-@@ -279,6 +294,15 @@
- (*******************************)
-+let add_val env loc lab (mut, virt, ty) val_sig = 
-+  let virt =
-+    try
-+      let (mut', virt', ty') = Vars.find lab val_sig in
-+      if virt' = Concrete then virt' else virt
-+    with Not_found -> virt
-+  in
-+  Vars.add lab (mut, virt, ty) val_sig
-+
- let rec class_type_field env self_type meths (val_sig, concr_meths, inher) =
-   function
-     Pctf_inher sparent ->
-@@ -293,25 +317,12 @@
-           parent
-       in
-       let val_sig =
--        Vars.fold
--          (fun lab (mut, ty) val_sig -> Vars.add lab (mut, ty) val_sig)
--          cl_sig.cty_vars val_sig
--      in
-+        Vars.fold (add_val env sparent.pcty_loc) cl_sig.cty_vars val_sig in
-       (val_sig, concr_meths, inher)
--  | Pctf_val (lab, mut, sty_opt, loc) ->
--      let (mut, ty) =
--        match sty_opt with
--          None     ->
--            let (mut', ty) =
--              try Vars.find lab val_sig with Not_found ->
--                raise(Error(loc, Unbound_val lab))
--            in
--            (if mut = Mutable then mut' else Immutable), ty
--        | Some sty ->
--            mut, transl_simple_type env false sty
--      in
--      (Vars.add lab (mut, ty) val_sig, concr_meths, inher)
-+  | Pctf_val (lab, mut, virt, sty, loc) ->
-+      let ty = transl_simple_type env false sty in
-+      (add_val env loc lab (mut, virt, ty) val_sig, concr_meths, inher)
-   | Pctf_virt (lab, priv, sty, loc) ->
-       declare_method env meths self_type lab priv sty loc;
-@@ -397,7 +408,7 @@
- let rec class_field cl_num self_type meths vars
-     (val_env, met_env, par_env, fields, concr_meths, warn_meths,
--     inh_vals, inher) =
-+     warn_vals, inher) =
-   function
-     Pcf_inher (sparent, super) ->
-       let parent = class_expr cl_num val_env par_env sparent in
-@@ -411,18 +422,23 @@
-           parent.cl_type
-       in
-       (* Variables *)
--      let (val_env, met_env, par_env, inh_vars, inh_vals) =
-+      let (val_env, met_env, par_env, inh_vars, warn_vals) =
-         Vars.fold
--          (fun lab (mut, ty) (val_env, met_env, par_env, inh_vars, inh_vals) ->
-+          (fun lab info (val_env, met_env, par_env, inh_vars, warn_vals) ->
-+             let mut, vr, ty = info in
-              let (id, val_env, met_env, par_env) =
--               enter_val cl_num vars lab mut ty val_env met_env par_env
-+               enter_val cl_num vars true lab mut vr ty val_env met_env par_env
-+                 sparent.pcl_loc
-              in
--             if StringSet.mem lab inh_vals then
--               Location.prerr_warning sparent.pcl_loc
--                 (Warnings.Hide_instance_variable lab);
--             (val_env, met_env, par_env, (lab, id) :: inh_vars,
--              StringSet.add lab inh_vals))
--          cl_sig.cty_vars (val_env, met_env, par_env, [], inh_vals)
-+             let warn_vals =
-+               if vr = Virtual then warn_vals else
-+               if StringSet.mem lab warn_vals then
-+                 (Location.prerr_warning sparent.pcl_loc
-+                   (Warnings.Instance_variable_override lab); warn_vals)
-+               else StringSet.add lab warn_vals
-+             in
-+             (val_env, met_env, par_env, (lab, id) :: inh_vars, warn_vals))
-+          cl_sig.cty_vars (val_env, met_env, par_env, [], warn_vals)
-       in
-       (* Inherited concrete methods *)
-       let inh_meths = 
-@@ -443,11 +459,26 @@
-       in
-       (val_env, met_env, par_env,
-        lazy(Cf_inher (parent, inh_vars, inh_meths))::fields,
--       concr_meths, warn_meths, inh_vals, inher)
-+       concr_meths, warn_meths, warn_vals, inher)
-+
-+  | Pcf_valvirt (lab, mut, styp, loc) ->
-+      if !Clflags.principal then Ctype.begin_def ();
-+      let ty = Typetexp.transl_simple_type val_env false styp in
-+      if !Clflags.principal then begin
-+        Ctype.end_def ();
-+        Ctype.generalize_structure ty
-+      end;
-+      let (id, val_env, met_env', par_env) =
-+        enter_val cl_num vars false lab mut Virtual ty
-+          val_env met_env par_env loc
-+      in
-+      (val_env, met_env', par_env,
-+       lazy(Cf_val (lab, id, None, met_env' == met_env)) :: fields,
-+       concr_meths, warn_meths, StringSet.remove lab warn_vals, inher)
-   | Pcf_val (lab, mut, sexp, loc) ->
--      if StringSet.mem lab inh_vals then
--        Location.prerr_warning loc (Warnings.Hide_instance_variable lab);
-+      if StringSet.mem lab warn_vals then
-+        Location.prerr_warning loc (Warnings.Instance_variable_override lab);
-       if !Clflags.principal then Ctype.begin_def ();
-       let exp =
-         try type_exp val_env sexp with Ctype.Unify [(ty, _)] ->
-@@ -457,17 +488,19 @@
-         Ctype.end_def ();
-         Ctype.generalize_structure exp.exp_type
-       end;
--      let (id, val_env, met_env, par_env) =
--        enter_val cl_num vars lab mut exp.exp_type val_env met_env par_env
--      in
--      (val_env, met_env, par_env, lazy(Cf_val (lab, id, exp)) :: fields,
--       concr_meths, warn_meths, inh_vals, inher)
-+      let (id, val_env, met_env', par_env) =
-+        enter_val cl_num vars false lab mut Concrete exp.exp_type
-+          val_env met_env par_env loc
-+      in
-+      (val_env, met_env', par_env,
-+       lazy(Cf_val (lab, id, Some exp, met_env' == met_env)) :: fields,
-+       concr_meths, warn_meths, StringSet.add lab warn_vals, inher)
-   | Pcf_virt (lab, priv, sty, loc) ->
-       virtual_method val_env meths self_type lab priv sty loc;
-       let warn_meths = Concr.remove lab warn_meths in
-       (val_env, met_env, par_env, fields, concr_meths, warn_meths,
--       inh_vals, inher)
-+       warn_vals, inher)
-   | Pcf_meth (lab, priv, expr, loc)  ->
-       let (_, ty) =
-@@ -493,7 +526,7 @@
-           end
-       | _ -> assert false
-       with Ctype.Unify trace ->
--        raise(Error(loc, Method_type_mismatch (lab, trace)))
-+        raise(Error(loc, Field_type_mismatch ("method", lab, trace)))
-       end;
-       let meth_expr = make_method cl_num expr in
-       (* backup variables for Pexp_override *)
-@@ -510,12 +543,12 @@
-           Cf_meth (lab, texp)
-         end in
-       (val_env, met_env, par_env, field::fields,
--       Concr.add lab concr_meths, Concr.add lab warn_meths, inh_vals, inher)
-+       Concr.add lab concr_meths, Concr.add lab warn_meths, warn_vals, inher)
-   | Pcf_cstr (sty, sty', loc) ->
-       type_constraint val_env sty sty' loc;
-       (val_env, met_env, par_env, fields, concr_meths, warn_meths,
--       inh_vals, inher)
-+       warn_vals, inher)
-   | Pcf_let (rec_flag, sdefs, loc) ->
-       let (defs, val_env) =
-@@ -545,7 +578,7 @@
-           ([], met_env, par_env)
-       in
-       (val_env, met_env, par_env, lazy(Cf_let(rec_flag, defs, vals))::fields,
--       concr_meths, warn_meths, inh_vals, inher)
-+       concr_meths, warn_meths, warn_vals, inher)
-   | Pcf_init expr ->
-       let expr = make_method cl_num expr in
-@@ -562,7 +595,7 @@
-           Cf_init texp
-         end in
-       (val_env, met_env, par_env, field::fields,
--       concr_meths, warn_meths, inh_vals, inher)
-+       concr_meths, warn_meths, warn_vals, inher)
- and class_structure cl_num final val_env met_env loc (spat, str) =
-   (* Environment for substructures *)
-@@ -616,7 +649,7 @@
-   Ctype.unify val_env self_type (Ctype.newvar ());
-   let sign =
-     {cty_self = public_self;
--     cty_vars = Vars.map (function (id, mut, ty) -> (mut, ty)) !vars;
-+     cty_vars = Vars.map (fun (id, mut, vr, ty) -> (mut, vr, ty)) !vars;
-      cty_concr = concr_meths;
-      cty_inher = inher} in
-   let methods = get_methods self_type in
-@@ -628,7 +661,11 @@
-        be modified after this point *)
-     Ctype.close_object self_type;
-     let mets = virtual_methods {sign with cty_self = self_type} in
--    if mets <> [] then raise(Error(loc, Virtual_class(true, mets)));
-+    let vals =
-+      Vars.fold
-+        (fun name (mut, vr, ty) l -> if vr = Virtual then name :: l else l)
-+        sign.cty_vars [] in
-+    if mets <> [] then raise(Error(loc, Virtual_class(true, mets, vals)));
-     let self_methods =
-       List.fold_right
-         (fun (lab,kind,ty) rem ->
-@@ -1135,9 +1172,14 @@
-   in
-   if cl.pci_virt = Concrete then begin
--    match virtual_methods (Ctype.signature_of_class_type typ) with
--      []   -> ()
--    | mets -> raise(Error(cl.pci_loc, Virtual_class(define_class, mets)))
-+    let sign = Ctype.signature_of_class_type typ in
-+    let mets = virtual_methods sign in
-+    let vals =
-+      Vars.fold
-+        (fun name (mut, vr, ty) l -> if vr = Virtual then name :: l else l)
-+        sign.cty_vars [] in
-+    if mets <> []  || vals <> [] then
-+      raise(Error(cl.pci_loc, Virtual_class(true, mets, vals)));
-   end;
-   (* Misc. *)
-@@ -1400,10 +1442,10 @@
-       Printtyp.report_unification_error ppf trace
-         (fun ppf -> fprintf ppf "Type")
-         (fun ppf -> fprintf ppf "is not compatible with type")
--  | Method_type_mismatch (m, trace) ->
-+  | Field_type_mismatch (k, m, trace) ->
-       Printtyp.report_unification_error ppf trace
-         (function ppf ->
--           fprintf ppf "The method %s@ has type" m)
-+           fprintf ppf "The %s %s@ has type" k m)
-         (function ppf ->
-            fprintf ppf "but is expected to have type")
-   | Structure_expected clty ->
-@@ -1451,15 +1493,20 @@
-            fprintf ppf "The expression \"new %s\" has type" c)
-         (function ppf ->
-            fprintf ppf "but is used with type")
--  | Virtual_class (cl, mets) ->
-+  | Virtual_class (cl, mets, vals) ->
-       let print_mets ppf mets =
-         List.iter (function met -> fprintf ppf "@ %s" met) mets in
-       let cl_mark = if cl then "" else " type" in
-+      let missings =
-+        match mets, vals with
-+          [], _ -> "variables"
-+        | _, [] -> "methods"
-+        | _ -> "methods and variables"
-+      in
-       fprintf ppf
--        "@[This class%s should be virtual@ \
--           @[<2>The following methods are undefined :%a@]
--         @]"
--        cl_mark print_mets mets
-+        "@[This class%s should be virtual.@ \
-+           @[<2>The following %s are undefined :%a@]@]"
-+          cl_mark missings print_mets (mets @ vals)
-   | Parameter_arity_mismatch(lid, expected, provided) ->
-       fprintf ppf
-         "@[The class constructor %a@ expects %i type argument(s),@ \
-@@ -1532,3 +1579,10 @@
-            fprintf ppf "This object is expected to have type")
-         (function ppf ->
-            fprintf ppf "but has actually type")
-+  | Mutability_mismatch (lab, mut) ->
-+      let mut1, mut2 =
-+        if mut = Immutable then "mutable", "immutable"
-+        else "immutable", "mutable" in
-+      fprintf ppf
-+        "@[The instance variable is %s,@ it cannot be redefined as %s@]"
-+        mut1 mut2
-Index: typing/typeclass.mli
-===================================================================
-RCS file: /net/yquem/devel/caml/repository/csl/typing/typeclass.mli,v
-retrieving revision 1.18
-diff -u -r1.18 typeclass.mli
---- typing/typeclass.mli       1 Dec 2003 00:32:11 -0000       1.18
-+++ typing/typeclass.mli       5 Apr 2006 02:26:00 -0000
-@@ -49,7 +49,7 @@
- type error =
-     Unconsistent_constraint of (type_expr * type_expr) list
--  | Method_type_mismatch of string * (type_expr * type_expr) list
-+  | Field_type_mismatch of string * string * (type_expr * type_expr) list
-   | Structure_expected of class_type
-   | Cannot_apply of class_type
-   | Apply_wrong_label of label
-@@ -61,7 +61,7 @@
-   | Unbound_class_type_2 of Longident.t
-   | Abbrev_type_clash of type_expr * type_expr * type_expr
-   | Constructor_type_mismatch of string * (type_expr * type_expr) list
--  | Virtual_class of bool * string list
-+  | Virtual_class of bool * string list * string list
-   | Parameter_arity_mismatch of Longident.t * int * int
-   | Parameter_mismatch of (type_expr * type_expr) list
-   | Bad_parameters of Ident.t * type_expr * type_expr
-@@ -74,6 +74,7 @@
-   | Non_collapsable_conjunction of
-       Ident.t * Types.class_declaration * (type_expr * type_expr) list
-   | Final_self_clash of (type_expr * type_expr) list
-+  | Mutability_mismatch of string * mutable_flag
- exception Error of Location.t * error
-Index: typing/typecore.ml
-===================================================================
-RCS file: /net/yquem/devel/caml/repository/csl/typing/typecore.ml,v
-retrieving revision 1.178
-diff -u -r1.178 typecore.ml
---- typing/typecore.ml 6 Jan 2006 02:25:37 -0000       1.178
-+++ typing/typecore.ml 5 Apr 2006 02:26:00 -0000
-@@ -611,11 +611,11 @@
-       List.for_all
-         (function
-             Cf_meth _ -> true
--          | Cf_val (_,_,e) -> incr count; is_nonexpansive e
-+          | Cf_val (_,_,e,_) -> incr count; is_nonexpansive_opt e
-           | Cf_init e -> is_nonexpansive e
-           | Cf_inher _ | Cf_let _ -> false)
-         fields &&
--      Vars.fold (fun _ (mut,_) b -> decr count; b && mut = Immutable)
-+      Vars.fold (fun _ (mut,_,_) b -> decr count; b && mut = Immutable)
-         vars true &&
-       !count = 0
-   | _ -> false
-@@ -1356,7 +1356,7 @@
-         (path_self, _) ->
-           let type_override (lab, snewval) =
-             begin try
--              let (id, _, ty) = Vars.find lab !vars in
-+              let (id, _, _, ty) = Vars.find lab !vars in
-               (Path.Pident id, type_expect env snewval (instance ty))
-             with
-               Not_found ->
-Index: typing/typecore.mli
-===================================================================
-RCS file: /net/yquem/devel/caml/repository/csl/typing/typecore.mli,v
-retrieving revision 1.37
-diff -u -r1.37 typecore.mli
---- typing/typecore.mli        4 Mar 2005 14:51:31 -0000       1.37
-+++ typing/typecore.mli        5 Apr 2006 02:26:00 -0000
-@@ -38,7 +38,8 @@
-         string -> type_expr -> Env.t -> Env.t -> Env.t -> Parsetree.pattern ->
-         Typedtree.pattern *
-         (Ident.t * type_expr) Meths.t ref *
--        (Ident.t * Asttypes.mutable_flag * type_expr) Vars.t ref *
-+        (Ident.t * Asttypes.mutable_flag * Asttypes.virtual_flag * type_expr)
-+            Vars.t ref *
-         Env.t * Env.t * Env.t
- val type_expect:
-         ?in_function:(Location.t * type_expr) ->
-Index: typing/typedtree.ml
-===================================================================
-RCS file: /net/yquem/devel/caml/repository/csl/typing/typedtree.ml,v
-retrieving revision 1.36
-diff -u -r1.36 typedtree.ml
---- typing/typedtree.ml        25 Nov 2003 09:20:43 -0000      1.36
-+++ typing/typedtree.ml        5 Apr 2006 02:26:00 -0000
-@@ -106,7 +106,7 @@
- and class_field =
-     Cf_inher of class_expr * (string * Ident.t) list * (string * Ident.t) list
--  | Cf_val of string * Ident.t * expression
-+  | Cf_val of string * Ident.t * expression option * bool
-   | Cf_meth of string * expression
-   | Cf_let of rec_flag * (pattern * expression) list *
-               (Ident.t * expression) list
-@@ -140,7 +140,8 @@
-   | Tstr_recmodule of (Ident.t * module_expr) list
-   | Tstr_modtype of Ident.t * module_type
-   | Tstr_open of Path.t
--  | Tstr_class of (Ident.t * int * string list * class_expr) list
-+  | Tstr_class of
-+      (Ident.t * int * string list * class_expr * virtual_flag) list
-   | Tstr_cltype of (Ident.t * cltype_declaration) list
-   | Tstr_include of module_expr * Ident.t list
-Index: typing/typedtree.mli
-===================================================================
-RCS file: /net/yquem/devel/caml/repository/csl/typing/typedtree.mli,v
-retrieving revision 1.34
-diff -u -r1.34 typedtree.mli
---- typing/typedtree.mli       25 Nov 2003 09:20:43 -0000      1.34
-+++ typing/typedtree.mli       5 Apr 2006 02:26:00 -0000
-@@ -107,7 +107,8 @@
- and class_field =
-     Cf_inher of class_expr * (string * Ident.t) list * (string * Ident.t) list
-     (* Inherited instance variables and concrete methods *)
--  | Cf_val of string * Ident.t * expression
-+  | Cf_val of string * Ident.t * expression option * bool
-+        (* None = virtual, true = override *)
-   | Cf_meth of string * expression
-   | Cf_let of rec_flag * (pattern * expression) list *
-               (Ident.t * expression) list
-@@ -141,7 +142,8 @@
-   | Tstr_recmodule of (Ident.t * module_expr) list
-   | Tstr_modtype of Ident.t * module_type
-   | Tstr_open of Path.t
--  | Tstr_class of (Ident.t * int * string list * class_expr) list
-+  | Tstr_class of
-+      (Ident.t * int * string list * class_expr * virtual_flag) list
-   | Tstr_cltype of (Ident.t * cltype_declaration) list
-   | Tstr_include of module_expr * Ident.t list
-Index: typing/typemod.ml
-===================================================================
-RCS file: /net/yquem/devel/caml/repository/csl/typing/typemod.ml,v
-retrieving revision 1.73
-diff -u -r1.73 typemod.ml
---- typing/typemod.ml  8 Aug 2005 09:41:51 -0000       1.73
-+++ typing/typemod.ml  5 Apr 2006 02:26:00 -0000
-@@ -17,6 +17,7 @@
- open Misc
- open Longident
- open Path
-+open Asttypes
- open Parsetree
- open Types
- open Typedtree
-@@ -667,8 +668,9 @@
-         let (classes, new_env) = Typeclass.class_declarations env cl in
-         let (str_rem, sig_rem, final_env) = type_struct new_env srem in
-         (Tstr_class
--           (List.map (fun (i, _,_,_,_,_,_,_, s, m, c) ->
--              (i, s, m, c)) classes) ::
-+           (List.map (fun (i, d, _,_,_,_,_,_, s, m, c) ->
-+              let vf = if d.cty_new = None then Virtual else Concrete in
-+              (i, s, m, c, vf)) classes) ::
-          Tstr_cltype
-            (List.map (fun (_,_, i, d, _,_,_,_,_,_,_) -> (i, d)) classes) ::
-          Tstr_type
-Index: typing/types.ml
-===================================================================
-RCS file: /net/yquem/devel/caml/repository/csl/typing/types.ml,v
-retrieving revision 1.25
-diff -u -r1.25 types.ml
---- typing/types.ml    9 Dec 2004 12:40:53 -0000       1.25
-+++ typing/types.ml    5 Apr 2006 02:26:00 -0000
-@@ -90,7 +90,8 @@
-   | Val_prim of Primitive.description   (* Primitive *)
-   | Val_ivar of mutable_flag * string   (* Instance variable (mutable ?) *)
-   | Val_self of (Ident.t * type_expr) Meths.t ref *
--                (Ident.t * Asttypes.mutable_flag * type_expr) Vars.t ref *
-+                (Ident.t * Asttypes.mutable_flag *
-+                 Asttypes.virtual_flag * type_expr) Vars.t ref *
-                 string * type_expr
-                                         (* Self *)
-   | Val_anc of (string * Ident.t) list * string
-@@ -156,7 +157,8 @@
- and class_signature =
-   { cty_self: type_expr;
--    cty_vars: (Asttypes.mutable_flag * type_expr) Vars.t;
-+    cty_vars:
-+      (Asttypes.mutable_flag * Asttypes.virtual_flag * type_expr) Vars.t;
-     cty_concr: Concr.t;
-     cty_inher: (Path.t * type_expr list) list }
-Index: typing/types.mli
-===================================================================
-RCS file: /net/yquem/devel/caml/repository/csl/typing/types.mli,v
-retrieving revision 1.25
-diff -u -r1.25 types.mli
---- typing/types.mli   9 Dec 2004 12:40:53 -0000       1.25
-+++ typing/types.mli   5 Apr 2006 02:26:00 -0000
-@@ -91,7 +91,8 @@
-   | Val_prim of Primitive.description   (* Primitive *)
-   | Val_ivar of mutable_flag * string   (* Instance variable (mutable ?) *)
-   | Val_self of (Ident.t * type_expr) Meths.t ref *
--                (Ident.t * Asttypes.mutable_flag * type_expr) Vars.t ref *
-+                (Ident.t * Asttypes.mutable_flag *
-+                 Asttypes.virtual_flag * type_expr) Vars.t ref *
-                 string * type_expr
-                                         (* Self *)
-   | Val_anc of (string * Ident.t) list * string
-@@ -158,7 +159,8 @@
- and class_signature =
-   { cty_self: type_expr;
--    cty_vars: (Asttypes.mutable_flag * type_expr) Vars.t;
-+    cty_vars:
-+      (Asttypes.mutable_flag * Asttypes.virtual_flag * type_expr) Vars.t;
-     cty_concr: Concr.t;
-     cty_inher: (Path.t * type_expr list) list }
-Index: typing/unused_var.ml
-===================================================================
-RCS file: /net/yquem/devel/caml/repository/csl/typing/unused_var.ml,v
-retrieving revision 1.5
-diff -u -r1.5 unused_var.ml
---- typing/unused_var.ml       4 Jan 2006 16:55:50 -0000       1.5
-+++ typing/unused_var.ml       5 Apr 2006 02:26:00 -0000
-@@ -245,7 +245,7 @@
-   match cf with
-   | Pcf_inher (ce, _) -> class_expr ppf tbl ce;
-   | Pcf_val (_, _, e, _) -> expression ppf tbl e;
--  | Pcf_virt _ -> ()
-+  | Pcf_virt _ | Pcf_valvirt _ -> ()
-   | Pcf_meth (_, _, e, _) -> expression ppf tbl e;
-   | Pcf_cstr _ -> ()
-   | Pcf_let (recflag, pel, _) -> let_pel ppf tbl recflag pel None;
-Index: bytecomp/translclass.ml
-===================================================================
-RCS file: /net/yquem/devel/caml/repository/csl/bytecomp/translclass.ml,v
-retrieving revision 1.38
-diff -u -r1.38 translclass.ml
---- bytecomp/translclass.ml    13 Aug 2005 20:59:37 -0000      1.38
-+++ bytecomp/translclass.ml    5 Apr 2006 02:26:00 -0000
-@@ -133,10 +133,10 @@
-                        (fun _ -> lambda_unit) cl
-                    in
-                    (inh_init, lsequence obj_init' obj_init, true)
--               | Cf_val (_, id, exp) ->
-+               | Cf_val (_, id, Some exp, _) ->
-                    (inh_init, lsequence (set_inst_var obj id exp) obj_init,
-                     has_init)
--               | Cf_meth _ ->
-+               | Cf_meth _ | Cf_val _ ->
-                    (inh_init, obj_init, has_init)
-                | Cf_init _ ->
-                    (inh_init, obj_init, true)
-@@ -213,27 +213,17 @@
-   if len < 2 && nvals = 0 then Meths.fold (bind_method tbl) meths cl_init else
-   if len = 0 && nvals < 2 then transl_vals tbl true vals cl_init else
-   let ids = Ident.create "ids" in
--  let i = ref len in
--  let getter, names, cl_init =
--    match vals with [] -> "get_method_labels", [], cl_init
--    | (_,id0)::vals' ->
--        incr i;
--        let i = ref (List.length vals) in
--        "new_methods_variables",
--        [transl_meth_list (List.map fst vals)],
--        Llet(Strict, id0, lfield ids 0,
--           List.fold_right
--             (fun (name,id) rem ->
--               decr i;
--                 Llet(Alias, id, Lprim(Poffsetint !i, [Lvar id0]), rem))
--             vals' cl_init)
-+  let i = ref (len + nvals) in
-+  let getter, names =
-+    if nvals = 0 then "get_method_labels", [] else
-+    "new_methods_variables", [transl_meth_list (List.map fst vals)]
-   in
-   Llet(StrictOpt, ids,
-        Lapply (oo_prim getter,
-                [Lvar tbl; transl_meth_list (List.map fst methl)] @ names),
-        List.fold_right
-          (fun (lab,id) lam -> decr i; Llet(StrictOpt, id, lfield ids !i, lam))
--         methl cl_init)
-+         (methl @ vals) cl_init)
- let output_methods tbl methods lam =
-   match methods with
-@@ -283,8 +273,9 @@
-                     (vals, meths_super cla str.cl_meths meths)
-                     inh_init cl_init msubst top cl in
-                 (inh_init, cl_init, [], values)
--            | Cf_val (name, id, exp) ->
--                (inh_init, cl_init, methods, (name, id)::values)
-+            | Cf_val (name, id, exp, over) ->
-+                let values = if over then values else (name, id) :: values in
-+                (inh_init, cl_init, methods, values)
-             | Cf_meth (name, exp) ->
-                 let met_code = msubst true (transl_exp exp) in
-                 let met_code =
-@@ -342,27 +333,24 @@
-         assert (Path.same path path');
-         let lpath = transl_path path in
-           let inh = Ident.create "inh"
--          and inh_vals = Ident.create "vals"
--          and inh_meths = Ident.create "meths"
-+          and ofs = List.length vals + 1
-           and valids, methids = super in
-           let cl_init =
-             List.fold_left
-               (fun init (nm, id, _) ->
--                Llet(StrictOpt, id, lfield inh_meths (index nm concr_meths),
-+                Llet(StrictOpt, id, lfield inh (index nm concr_meths + ofs),
-                      init))
-               cl_init methids in
-           let cl_init =
-             List.fold_left
-               (fun init (nm, id) ->
--                Llet(StrictOpt, id, lfield inh_vals (index nm vals), init))
-+                Llet(StrictOpt, id, lfield inh (index nm vals + 1), init))
-               cl_init valids in
-           (inh_init,
-            Llet (Strict, inh, 
-                Lapply(oo_prim "inherits", narrow_args @
-                       [lpath; Lconst(Const_pointer(if top then 1 else 0))]),
--                 Llet(StrictOpt, obj_init, lfield inh 0,
--                 Llet(Alias, inh_vals, lfield inh 1,
--                 Llet(Alias, inh_meths, lfield inh 2, cl_init)))))
-+                 Llet(StrictOpt, obj_init, lfield inh 0, cl_init)))
-       | _ ->
-         let core cl_init =
-             build_class_init cla true super inh_init cl_init msubst top cl
-@@ -397,12 +385,16 @@
-    XXX Il devrait etre peu couteux d'ecrire des classes :
-      class c x y = d e f
- *)
--let rec transl_class_rebind obj_init cl =
-+let rec transl_class_rebind obj_init cl vf =
-   match cl.cl_desc with
-     Tclass_ident path ->
-+      if vf = Concrete then begin
-+        try if (Env.find_class path cl.cl_env).cty_new = None then raise Exit
-+        with Not_found -> raise Exit
-+      end;
-       (path, obj_init)
-   | Tclass_fun (pat, _, cl, partial) ->
--      let path, obj_init = transl_class_rebind obj_init cl in
-+      let path, obj_init = transl_class_rebind obj_init cl vf in
-       let build params rem =
-         let param = name_pattern "param" [pat, ()] in
-         Lfunction (Curried, param::params,
-@@ -414,14 +406,14 @@
-          Lfunction (Curried, params, rem) -> build params rem
-        | rem                              -> build [] rem)
-   | Tclass_apply (cl, oexprs) ->
--      let path, obj_init = transl_class_rebind obj_init cl in
-+      let path, obj_init = transl_class_rebind obj_init cl vf in
-       (path, transl_apply obj_init oexprs)
-   | Tclass_let (rec_flag, defs, vals, cl) ->
--      let path, obj_init = transl_class_rebind obj_init cl in
-+      let path, obj_init = transl_class_rebind obj_init cl vf in
-       (path, Translcore.transl_let rec_flag defs obj_init)
-   | Tclass_structure _ -> raise Exit
-   | Tclass_constraint (cl', _, _, _) ->
--      let path, obj_init = transl_class_rebind obj_init cl' in
-+      let path, obj_init = transl_class_rebind obj_init cl' vf in
-       let rec check_constraint = function
-           Tcty_constr(path', _, _) when Path.same path path' -> ()
-         | Tcty_fun (_, _, cty) -> check_constraint cty
-@@ -430,21 +422,21 @@
-       check_constraint cl.cl_type;
-       (path, obj_init)
--let rec transl_class_rebind_0 self obj_init cl =
-+let rec transl_class_rebind_0 self obj_init cl vf =
-   match cl.cl_desc with
-     Tclass_let (rec_flag, defs, vals, cl) ->
--      let path, obj_init = transl_class_rebind_0 self obj_init cl in
-+      let path, obj_init = transl_class_rebind_0 self obj_init cl vf in
-       (path, Translcore.transl_let rec_flag defs obj_init)
-   | _ ->
--      let path, obj_init = transl_class_rebind obj_init cl in
-+      let path, obj_init = transl_class_rebind obj_init cl vf in
-       (path, lfunction [self] obj_init)
--let transl_class_rebind ids cl =
-+let transl_class_rebind ids cl vf =
-   try
-     let obj_init = Ident.create "obj_init"
-     and self = Ident.create "self" in
-     let obj_init0 = lapply (Lvar obj_init) [Lvar self] in
--    let path, obj_init' = transl_class_rebind_0 self obj_init0 cl in
-+    let path, obj_init' = transl_class_rebind_0 self obj_init0 cl vf in
-     if not (Translcore.check_recursive_lambda ids obj_init') then
-       raise(Error(cl.cl_loc, Illegal_class_expr));
-     let id = (obj_init' = lfunction [self] obj_init0) in
-@@ -592,9 +584,9 @@
- *)
--let transl_class ids cl_id arity pub_meths cl =
-+let transl_class ids cl_id arity pub_meths cl vflag =
-   (* First check if it is not only a rebind *)
--  let rebind = transl_class_rebind ids cl in
-+  let rebind = transl_class_rebind ids cl vflag in
-   if rebind <> lambda_unit then rebind else
-   (* Prepare for heavy environment handling *)
-@@ -696,9 +688,7 @@
-   (* Simplest case: an object defined at toplevel (ids=[]) *)
-   if top && ids = [] then llets (ltable cla (ldirect obj_init)) else
--  let concrete =
--    ids = [] ||
--    Typeclass.virtual_methods (Ctype.signature_of_class_type cl.cl_type) = []
-+  let concrete = (vflag = Concrete)
-   and lclass lam =
-     let cl_init = llets (Lfunction(Curried, [cla], cl_init)) in
-     Llet(Strict, class_init, cl_init, lam (free_variables cl_init))
-@@ -800,11 +790,11 @@
- (* Wrapper for class compilation *)
--let transl_class ids cl_id arity pub_meths cl =
--  oo_wrap cl.cl_env false (transl_class ids cl_id arity pub_meths) cl
-+let transl_class ids cl_id arity pub_meths cl vf =
-+  oo_wrap cl.cl_env false (transl_class ids cl_id arity pub_meths cl) vf
- let () =
--  transl_object := (fun id meths cl -> transl_class [] id 0 meths cl)
-+  transl_object := (fun id meths cl -> transl_class [] id 0 meths cl Concrete)
- (* Error report *)
-Index: bytecomp/translclass.mli
-===================================================================
-RCS file: /net/yquem/devel/caml/repository/csl/bytecomp/translclass.mli,v
-retrieving revision 1.11
-diff -u -r1.11 translclass.mli
---- bytecomp/translclass.mli   12 Aug 2004 12:55:11 -0000      1.11
-+++ bytecomp/translclass.mli   5 Apr 2006 02:26:00 -0000
-@@ -16,7 +16,8 @@
- open Lambda
- val transl_class :
--  Ident.t list -> Ident.t -> int -> string list -> class_expr -> lambda;;
-+  Ident.t list -> Ident.t ->
-+  int -> string list -> class_expr -> Asttypes.virtual_flag -> lambda;;
- type error = Illegal_class_expr | Tags of string * string
-Index: bytecomp/translmod.ml
-===================================================================
-RCS file: /net/yquem/devel/caml/repository/csl/bytecomp/translmod.ml,v
-retrieving revision 1.51
-diff -u -r1.51 translmod.ml
---- bytecomp/translmod.ml      12 Aug 2004 12:55:11 -0000      1.51
-+++ bytecomp/translmod.ml      5 Apr 2006 02:26:00 -0000
-@@ -317,10 +317,10 @@
-   | Tstr_open path :: rem ->
-       transl_structure fields cc rootpath rem
-   | Tstr_class cl_list :: rem ->
--      let ids = List.map (fun (i, _, _, _) -> i) cl_list in
-+      let ids = List.map (fun (i, _, _, _, _) -> i) cl_list in
-       Lletrec(List.map
--                (fun (id, arity, meths, cl) ->
--                  (id, transl_class ids id arity meths cl))
-+                (fun (id, arity, meths, cl, vf) ->
-+                  (id, transl_class ids id arity meths cl vf))
-                 cl_list,
-               transl_structure (List.rev ids @ fields) cc rootpath rem)
-   | Tstr_cltype cl_list :: rem ->
-@@ -414,11 +414,11 @@
-   | Tstr_open path :: rem ->
-       transl_store subst rem
-   | Tstr_class cl_list :: rem ->
--      let ids = List.map (fun (i, _, _, _) -> i) cl_list in
-+      let ids = List.map (fun (i, _, _, _, _) -> i) cl_list in
-       let lam =
-         Lletrec(List.map
--                  (fun (id, arity, meths, cl) ->
--                     (id, transl_class ids id arity meths cl))
-+                  (fun (id, arity, meths, cl, vf) ->
-+                     (id, transl_class ids id arity meths cl vf))
-                   cl_list,
-                 store_idents ids) in
-       Lsequence(subst_lambda subst lam,
-@@ -485,7 +485,7 @@
-   | Tstr_modtype(id, decl) :: rem -> defined_idents rem
-   | Tstr_open path :: rem -> defined_idents rem
-   | Tstr_class cl_list :: rem ->
--      List.map (fun (i, _, _, _) -> i) cl_list @ defined_idents rem
-+      List.map (fun (i, _, _, _, _) -> i) cl_list @ defined_idents rem
-   | Tstr_cltype cl_list :: rem -> defined_idents rem
-   | Tstr_include(modl, ids) :: rem -> ids @ defined_idents rem
-@@ -603,14 +603,14 @@
-   | Tstr_class cl_list ->
-       (* we need to use unique names for the classes because there might
-          be a value named identically *)
--      let ids = List.map (fun (i, _, _, _) -> i) cl_list in
-+      let ids = List.map (fun (i, _, _, _, _) -> i) cl_list in
-       List.iter set_toplevel_unique_name ids;
-       Lletrec(List.map
--                (fun (id, arity, meths, cl) ->
--                   (id, transl_class ids id arity meths cl))
-+                (fun (id, arity, meths, cl, vf) ->
-+                   (id, transl_class ids id arity meths cl vf))
-                 cl_list,
-               make_sequence
--                (fun (id, _, _, _) -> toploop_setvalue_id id)
-+                (fun (id, _, _, _, _) -> toploop_setvalue_id id)
-                 cl_list)
-   | Tstr_cltype cl_list ->
-       lambda_unit
-Index: driver/main_args.ml
-===================================================================
-RCS file: /net/yquem/devel/caml/repository/csl/driver/main_args.ml,v
-retrieving revision 1.48
-diff -u -r1.48 main_args.ml
---- driver/main_args.ml        4 Jan 2006 16:55:49 -0000       1.48
-+++ driver/main_args.ml        5 Apr 2006 02:26:00 -0000
-@@ -136,11 +136,11 @@
-       \032    E/e enable/disable fragile match\n\
-       \032    F/f enable/disable partially applied function\n\
-       \032    L/l enable/disable labels omitted in application\n\
--      \032    M/m enable/disable overridden method\n\
-+      \032    M/m enable/disable overridden methods\n\
-       \032    P/p enable/disable partial match\n\
-       \032    S/s enable/disable non-unit statement\n\
-       \032    U/u enable/disable unused match case\n\
--      \032    V/v enable/disable hidden instance variable\n\
-+      \032    V/v enable/disable overridden instance variables\n\
-       \032    Y/y enable/disable suspicious unused variables\n\
-       \032    Z/z enable/disable all other unused variables\n\
-       \032    X/x enable/disable all other warnings\n\
-Index: driver/optmain.ml
-===================================================================
-RCS file: /net/yquem/devel/caml/repository/csl/driver/optmain.ml,v
-retrieving revision 1.87
-diff -u -r1.87 optmain.ml
---- driver/optmain.ml  4 Jan 2006 16:55:49 -0000       1.87
-+++ driver/optmain.ml  5 Apr 2006 02:26:00 -0000
-@@ -173,7 +173,7 @@
-          \032    P/p enable/disable partial match\n\
-          \032    S/s enable/disable non-unit statement\n\
-          \032    U/u enable/disable unused match case\n\
--         \032    V/v enable/disable hidden instance variables\n\
-+         \032    V/v enable/disable overridden instance variables\n\
-          \032    Y/y enable/disable suspicious unused variables\n\
-          \032    Z/z enable/disable all other unused variables\n\
-          \032    X/x enable/disable all other warnings\n\
-Index: stdlib/camlinternalOO.ml
-===================================================================
-RCS file: /net/yquem/devel/caml/repository/csl/stdlib/camlinternalOO.ml,v
-retrieving revision 1.14
-diff -u -r1.14 camlinternalOO.ml
---- stdlib/camlinternalOO.ml   25 Oct 2005 18:34:07 -0000      1.14
-+++ stdlib/camlinternalOO.ml   5 Apr 2006 02:26:00 -0000
-@@ -206,7 +206,11 @@
-      (table.methods_by_name, table.methods_by_label, table.hidden_meths,
-       table.vars, virt_meth_labs, vars)
-      :: table.previous_states;
--  table.vars <- Vars.empty;
-+  table.vars <-
-+    Vars.fold
-+      (fun lab info tvars ->
-+        if List.mem lab vars then Vars.add lab info tvars else tvars)
-+      table.vars Vars.empty;
-   let by_name = ref Meths.empty in
-   let by_label = ref Labs.empty in
-   List.iter2
-@@ -255,9 +259,11 @@
-   index
- let new_variable table name =
--  let index = new_slot table in
--  table.vars <- Vars.add name index table.vars;
--  index
-+  try Vars.find name table.vars
-+  with Not_found ->
-+    let index = new_slot table in
-+    table.vars <- Vars.add name index table.vars;
-+    index
- let to_array arr =
-   if arr = Obj.magic 0 then [||] else arr
-@@ -265,16 +271,17 @@
- let new_methods_variables table meths vals =
-   let meths = to_array meths in
-   let nmeths = Array.length meths and nvals = Array.length vals in
--  let index = new_variable table vals.(0) in
--  let res = Array.create (nmeths + 1) index in
--  for i = 1 to nvals - 1 do ignore (new_variable table vals.(i)) done;
-+  let res = Array.create (nmeths + nvals) 0 in
-   for i = 0 to nmeths - 1 do
--    res.(i+1) <- get_method_label table meths.(i)
-+    res.(i) <- get_method_label table meths.(i)
-+  done;
-+  for i = 0 to nvals - 1 do
-+    res.(i+nmeths) <- new_variable table vals.(i)
-   done;
-   res
- let get_variable table name =
--  Vars.find name table.vars
-+  try Vars.find name table.vars with Not_found -> assert false
- let get_variables table names =
-   Array.map (get_variable table) names
-@@ -315,9 +322,12 @@
-   let init =
-     if top then super cla env else Obj.repr (super cla) in
-   widen cla;
--  (init, Array.map (get_variable cla) (to_array vals),
--   Array.map (fun nm -> get_method cla (get_method_label cla nm))
--     (to_array concr_meths))
-+  Array.concat
-+    [[| repr init |];
-+     magic (Array.map (get_variable cla) (to_array vals) : int array);
-+     Array.map
-+       (fun nm -> repr (get_method cla (get_method_label cla nm) : closure))
-+       (to_array concr_meths) ]
- let make_class pub_meths class_init =
-   let table = create_table pub_meths in
-Index: stdlib/camlinternalOO.mli
-===================================================================
-RCS file: /net/yquem/devel/caml/repository/csl/stdlib/camlinternalOO.mli,v
-retrieving revision 1.9
-diff -u -r1.9 camlinternalOO.mli
---- stdlib/camlinternalOO.mli  25 Oct 2005 18:34:07 -0000      1.9
-+++ stdlib/camlinternalOO.mli  5 Apr 2006 02:26:00 -0000
-@@ -46,8 +46,7 @@
- val init_class : table -> unit
- val inherits :
-     table -> string array -> string array -> string array ->
--    (t * (table -> obj -> Obj.t) * t * obj) -> bool ->
--    (Obj.t * int array * closure array)
-+    (t * (table -> obj -> Obj.t) * t * obj) -> bool -> Obj.t array
- val make_class :
-     string array -> (table -> Obj.t -> t) ->
-     (t * (table -> Obj.t -> t) * (Obj.t -> t) * Obj.t)
-@@ -79,6 +78,7 @@
- (** {6 Builtins to reduce code size} *)
-+(*
- val get_const : t -> closure
- val get_var : int -> closure
- val get_env : int -> int -> closure
-@@ -103,6 +103,7 @@
- val send_var : tag -> int -> int -> closure
- val send_env : tag -> int -> int -> int -> closure
- val send_meth : tag -> label -> int -> closure
-+*)
- type impl =
-     GetConst
-Index: stdlib/sys.ml
-===================================================================
-RCS file: /net/yquem/devel/caml/repository/csl/stdlib/sys.ml,v
-retrieving revision 1.142
-diff -u -r1.142 sys.ml
---- stdlib/sys.ml      22 Mar 2006 12:39:39 -0000      1.142
-+++ stdlib/sys.ml      5 Apr 2006 02:26:00 -0000
-@@ -78,4 +78,4 @@
- (* OCaml version string, must be in the format described in sys.mli. *)
--let ocaml_version = "3.10+dev4 (2006-03-22)";;
-+let ocaml_version = "3.10+dev5 (2006-04-05)";;
-Index: tools/depend.ml
-===================================================================
-RCS file: /net/yquem/devel/caml/repository/csl/tools/depend.ml,v
-retrieving revision 1.9
-diff -u -r1.9 depend.ml
---- tools/depend.ml    23 Mar 2005 03:08:37 -0000      1.9
-+++ tools/depend.ml    5 Apr 2006 02:26:00 -0000
-@@ -87,7 +87,7 @@
- and add_class_type_field bv = function
-     Pctf_inher cty -> add_class_type bv cty
--  | Pctf_val(_, _, oty, _) -> add_opt add_type bv oty
-+  | Pctf_val(_, _, _, ty, _) -> add_type bv ty
-   | Pctf_virt(_, _, ty, _) -> add_type bv ty
-   | Pctf_meth(_, _, ty, _) -> add_type bv ty
-   | Pctf_cstr(ty1, ty2, _) -> add_type bv ty1; add_type bv ty2
-@@ -280,6 +280,7 @@
- and add_class_field bv = function
-     Pcf_inher(ce, _) -> add_class_expr bv ce
-   | Pcf_val(_, _, e, _) -> add_expr bv e
-+  | Pcf_valvirt(_, _, ty, _)
-   | Pcf_virt(_, _, ty, _) -> add_type bv ty
-   | Pcf_meth(_, _, e, _) -> add_expr bv e
-   | Pcf_cstr(ty1, ty2, _) -> add_type bv ty1; add_type bv ty2
-Index: tools/ocamlprof.ml
-===================================================================
-RCS file: /net/yquem/devel/caml/repository/csl/tools/ocamlprof.ml,v
-retrieving revision 1.38
-diff -u -r1.38 ocamlprof.ml
---- tools/ocamlprof.ml 24 Mar 2005 17:20:54 -0000      1.38
-+++ tools/ocamlprof.ml 5 Apr 2006 02:26:00 -0000
-@@ -328,7 +328,7 @@
-       rewrite_patexp_list iflag spat_sexp_list
-   | Pcf_init sexp ->
-       rewrite_exp iflag sexp
--  | Pcf_virt _ | Pcf_cstr _  -> ()
-+  | Pcf_valvirt _ | Pcf_virt _ | Pcf_cstr _  -> ()
- and rewrite_class_expr iflag cexpr =
-   match cexpr.pcl_desc with
-Index: otherlibs/labltk/browser/searchpos.ml
-===================================================================
-RCS file: /net/yquem/devel/caml/repository/csl/otherlibs/labltk/browser/searchpos.ml,v
-retrieving revision 1.48
-diff -u -r1.48 searchpos.ml
---- otherlibs/labltk/browser/searchpos.ml      23 Mar 2005 03:08:37 -0000      1.48
-+++ otherlibs/labltk/browser/searchpos.ml      5 Apr 2006 02:26:01 -0000
-@@ -141,9 +141,8 @@
-         List.iter cfl ~f:
-           begin function
-               Pctf_inher cty -> search_pos_class_type cty ~pos ~env
--            | Pctf_val (_, _, Some ty, loc) ->
-+            | Pctf_val (_, _, _, ty, loc) ->
-                 if in_loc loc ~pos then search_pos_type ty ~pos ~env
--            | Pctf_val _ -> ()
-             | Pctf_virt (_, _, ty, loc) ->
-                 if in_loc loc ~pos then search_pos_type ty ~pos ~env
-             | Pctf_meth (_, _, ty, loc) ->
-@@ -675,7 +674,7 @@
-   | Tstr_modtype _ -> ()
-   | Tstr_open _ -> ()
-   | Tstr_class l ->
--      List.iter l ~f:(fun (id, _, _, cl) -> search_pos_class_expr cl ~pos)
-+      List.iter l ~f:(fun (id, _, _, cl, _) -> search_pos_class_expr cl ~pos)
-   | Tstr_cltype _ -> ()
-   | Tstr_include (m, _) -> search_pos_module_expr m ~pos
-   end
-@@ -685,7 +684,8 @@
-     begin function
-         Cf_inher (cl, _, _) ->
-           search_pos_class_expr cl ~pos
--      | Cf_val (_, _, exp) -> search_pos_expr exp ~pos
-+      | Cf_val (_, _, Some exp, _) -> search_pos_expr exp ~pos
-+      | Cf_val _ -> ()
-       | Cf_meth (_, exp) -> search_pos_expr exp ~pos
-       | Cf_let (_, pel, iel) ->
-           List.iter pel ~f:
-Index: ocamldoc/Makefile
-===================================================================
-RCS file: /net/yquem/devel/caml/repository/csl/ocamldoc/Makefile,v
-retrieving revision 1.61
-diff -u -r1.61 Makefile
---- ocamldoc/Makefile  4 Jan 2006 16:55:49 -0000       1.61
-+++ ocamldoc/Makefile  5 Apr 2006 02:26:01 -0000
-@@ -31,7 +31,7 @@
- MKDIR=mkdir -p
- CP=cp -f
- OCAMLDOC=ocamldoc
--OCAMLDOC_RUN=sh ./runocamldoc $(SUPPORTS_SHARED_LIBRARIES)
-+OCAMLDOC_RUN=./ocamldoc.opt #sh ./runocamldoc $(SUPPORTS_SHARED_LIBRARIES)
- OCAMLDOC_OPT=$(OCAMLDOC).opt
- OCAMLDOC_LIBCMA=odoc_info.cma
- OCAMLDOC_LIBCMI=odoc_info.cmi
-@@ -188,12 +188,12 @@
-       ../otherlibs/num/num.mli
- all: exe lib
--      $(MAKE) manpages
- exe: $(OCAMLDOC)
- lib: $(OCAMLDOC_LIBCMA) $(OCAMLDOC_LIBCMI) $(ODOC_TEST)
- opt.opt: exeopt libopt
-+      $(MAKE) manpages
- exeopt: $(OCAMLDOC_OPT)
- libopt: $(OCAMLDOC_LIBCMXA) $(OCAMLDOC_LIBCMI)
- debug:
-Index: ocamldoc/odoc_ast.ml
-===================================================================
-RCS file: /net/yquem/devel/caml/repository/csl/ocamldoc/odoc_ast.ml,v
-retrieving revision 1.27
-diff -u -r1.27 odoc_ast.ml
---- ocamldoc/odoc_ast.ml       4 Jan 2006 16:55:49 -0000       1.27
-+++ ocamldoc/odoc_ast.ml       5 Apr 2006 02:26:01 -0000
-@@ -88,7 +88,7 @@
-             ident_type_decl_list
-       | Typedtree.Tstr_class info_list ->
-           List.iter
--            (fun ((id,_,_,_) as ci) ->
-+            (fun ((id,_,_,_,_) as ci) ->
-               Hashtbl.add table (C (Name.from_ident id))
-                 (Typedtree.Tstr_class [ci]))
-             info_list
-@@ -146,7 +146,7 @@
-     let search_class_exp table name =
-       match Hashtbl.find table (C name) with
--      | (Typedtree.Tstr_class [(_,_,_,ce)]) ->
-+      | (Typedtree.Tstr_class [(_,_,_,ce,_)]) ->
-           (
-            try
-              let type_decl = search_type_declaration table name in
-@@ -184,7 +184,7 @@
-       let rec iter = function
-         | [] ->
-             raise Not_found
--        | Typedtree.Cf_val (_, ident, exp) :: q
-+        | Typedtree.Cf_val (_, ident, Some exp, _) :: q
-           when Name.from_ident ident = name ->
-             exp.Typedtree.exp_type
-         | _ :: q ->
-@@ -523,7 +523,8 @@
-               p_clexp.Parsetree.pcl_loc.Location.loc_end.Lexing.pos_cnum
-               q
--        | (Parsetree.Pcf_val (label, mutable_flag, expression, loc)) :: q ->
-+        | (Parsetree.Pcf_val (label, mutable_flag, _, loc) |
-+           Parsetree.Pcf_valvirt (label, mutable_flag, _, loc)) :: q ->
-             let complete_name = Name.concat current_class_name label in
-             let (info_opt, ele_comments) = get_comments_in_class last_pos loc.Location.loc_start.Lexing.pos_cnum in
-             let type_exp =
-Index: ocamldoc/odoc_sig.ml
-===================================================================
-RCS file: /net/yquem/devel/caml/repository/csl/ocamldoc/odoc_sig.ml,v
-retrieving revision 1.37
-diff -u -r1.37 odoc_sig.ml
---- ocamldoc/odoc_sig.ml       4 Jan 2006 16:55:50 -0000       1.37
-+++ ocamldoc/odoc_sig.ml       5 Apr 2006 02:26:01 -0000
-@@ -107,7 +107,7 @@
-       | _ -> assert false
-     let search_attribute_type name class_sig =
--      let (_, type_expr) = Types.Vars.find name class_sig.Types.cty_vars in
-+      let (_, _, type_expr) = Types.Vars.find name class_sig.Types.cty_vars in
-       type_expr
-     let search_method_type name class_sig =
-@@ -269,7 +269,7 @@
-           [] -> pos_limit
-         | ele2 :: _ ->
-             match ele2 with
--              Parsetree.Pctf_val (_, _, _, loc)
-+              Parsetree.Pctf_val (_, _, _, _, loc)
-             | Parsetree.Pctf_virt (_, _, _, loc)
-             | Parsetree.Pctf_meth (_, _, _, loc)
-             | Parsetree.Pctf_cstr (_, _, loc) -> loc.Location.loc_start.Lexing.pos_cnum
-@@ -330,7 +330,7 @@
-             in
-             ([], ele_comments)
--        | Parsetree.Pctf_val (name, mutable_flag, _, loc) :: q ->
-+        | Parsetree.Pctf_val (name, mutable_flag, _, _, loc) :: q ->
-             (* of (string * mutable_flag * core_type option * Location.t)*)
-             let (comment_opt, eles_comments) = get_comments_in_class last_pos loc.Location.loc_start.Lexing.pos_cnum in
-             let complete_name = Name.concat current_class_name name in
-Index: camlp4/camlp4/ast2pt.ml
-===================================================================
-RCS file: /net/yquem/devel/caml/repository/csl/camlp4/camlp4/ast2pt.ml,v
-retrieving revision 1.36
-diff -u -r1.36 ast2pt.ml
---- camlp4/camlp4/ast2pt.ml    29 Jun 2005 04:11:26 -0000      1.36
-+++ camlp4/camlp4/ast2pt.ml    5 Apr 2006 02:26:01 -0000
-@@ -244,6 +244,7 @@
- ;
- value mkmutable m = if m then Mutable else Immutable;
- value mkprivate m = if m then Private else Public;
-+value mkvirtual m = if m then Virtual else Concrete;
- value mktrecord (loc, n, m, t) =
-   (n, mkmutable m, ctyp (mkpolytype t), mkloc loc);
- value mkvariant (loc, c, tl) = (c, List.map ctyp tl, mkloc loc);
-@@ -862,8 +863,8 @@
-   | CgInh loc ct -> [Pctf_inher (class_type ct) :: l]
-   | CgMth loc s pf t ->
-       [Pctf_meth (s, mkprivate pf, ctyp (mkpolytype t), mkloc loc) :: l]
--  | CgVal loc s b t ->
--      [Pctf_val (s, mkmutable b, Some (ctyp t), mkloc loc) :: l]
-+  | CgVal loc s b v t ->
-+      [Pctf_val (s, mkmutable b, mkvirtual v, ctyp t, mkloc loc) :: l]
-   | CgVir loc s b t ->
-       [Pctf_virt (s, mkprivate b, ctyp (mkpolytype t), mkloc loc) :: l] ]
- and class_expr =
-@@ -907,7 +908,9 @@
-       [Pcf_meth (s, mkprivate b, e, mkloc loc) :: l]
-   | CrVal loc s b e -> [Pcf_val (s, mkmutable b, expr e, mkloc loc) :: l]
-   | CrVir loc s b t ->
--      [Pcf_virt (s, mkprivate b, ctyp (mkpolytype t), mkloc loc) :: l] ]
-+      [Pcf_virt (s, mkprivate b, ctyp (mkpolytype t), mkloc loc) :: l]
-+  | CrVvr loc s b t ->
-+      [Pcf_valvirt (s, mkmutable b, ctyp t, mkloc loc) :: l] ]
- ;
- value interf ast = List.fold_right sig_item ast [];
-Index: camlp4/camlp4/mLast.mli
-===================================================================
-RCS file: /net/yquem/devel/caml/repository/csl/camlp4/camlp4/mLast.mli,v
-retrieving revision 1.18
-diff -u -r1.18 mLast.mli
---- camlp4/camlp4/mLast.mli    29 Jun 2005 04:11:26 -0000      1.18
-+++ camlp4/camlp4/mLast.mli    5 Apr 2006 02:26:01 -0000
-@@ -180,7 +180,7 @@
-   | CgDcl of loc and list class_sig_item
-   | CgInh of loc and class_type
-   | CgMth of loc and string and bool and ctyp
--  | CgVal of loc and string and bool and ctyp
-+  | CgVal of loc and string and bool and bool and ctyp
-   | CgVir of loc and string and bool and ctyp ]
- and class_expr =
-   [ CeApp of loc and class_expr and expr
-@@ -196,7 +196,8 @@
-   | CrIni of loc and expr
-   | CrMth of loc and string and bool and expr and option ctyp
-   | CrVal of loc and string and bool and expr
--  | CrVir of loc and string and bool and ctyp ]
-+  | CrVir of loc and string and bool and ctyp
-+  | CrVvr of loc and string and bool and ctyp ]
- ;
- external loc_of_ctyp : ctyp -> loc = "%field0";
-Index: camlp4/camlp4/reloc.ml
-===================================================================
-RCS file: /net/yquem/devel/caml/repository/csl/camlp4/camlp4/reloc.ml,v
-retrieving revision 1.18
-diff -u -r1.18 reloc.ml
---- camlp4/camlp4/reloc.ml     29 Jun 2005 04:11:26 -0000      1.18
-+++ camlp4/camlp4/reloc.ml     5 Apr 2006 02:26:01 -0000
-@@ -350,7 +350,7 @@
-     | CgDcl loc x1 -> let nloc = floc loc in CgDcl nloc (List.map (class_sig_item floc sh) x1)
-     | CgInh loc x1 -> let nloc = floc loc in CgInh nloc (class_type floc sh x1)
-     | CgMth loc x1 x2 x3 -> let nloc = floc loc in CgMth nloc x1 x2 (ctyp floc sh x3)
--    | CgVal loc x1 x2 x3 -> let nloc = floc loc in CgVal nloc x1 x2 (ctyp floc sh x3)
-+    | CgVal loc x1 x2 x3 x4 -> let nloc = floc loc in CgVal nloc x1 x2 x3 (ctyp floc sh x4)
-     | CgVir loc x1 x2 x3 -> let nloc = floc loc in CgVir nloc x1 x2 (ctyp floc sh x3) ]
- and class_expr floc sh =
-   self where rec self =
-@@ -377,5 +377,6 @@
-     | CrMth loc x1 x2 x3 x4 ->
-         let nloc = floc loc in CrMth nloc x1 x2 (expr floc sh x3) (option_map (ctyp floc sh) x4)
-     | CrVal loc x1 x2 x3 -> let nloc = floc loc in CrVal nloc x1 x2 (expr floc sh x3)
--    | CrVir loc x1 x2 x3 -> let nloc = floc loc in CrVir nloc x1 x2 (ctyp floc sh x3) ]
-+    | CrVir loc x1 x2 x3 -> let nloc = floc loc in CrVir nloc x1 x2 (ctyp floc sh x3)
-+    | CrVvr loc x1 x2 x3 -> let nloc = floc loc in CrVvr nloc x1 x2 (ctyp floc sh x3) ]
- ;
-Index: camlp4/etc/pa_o.ml
-===================================================================
-RCS file: /net/yquem/devel/caml/repository/csl/camlp4/etc/pa_o.ml,v
-retrieving revision 1.66
-diff -u -r1.66 pa_o.ml
---- camlp4/etc/pa_o.ml 29 Jun 2005 04:11:26 -0000      1.66
-+++ camlp4/etc/pa_o.ml 5 Apr 2006 02:26:01 -0000
-@@ -1037,8 +1037,14 @@
-   class_str_item:
-     [ [ "inherit"; ce = class_expr; pb = OPT [ "as"; i = LIDENT -> i ] ->
-           <:class_str_item< inherit $ce$ $opt:pb$ >>
--      | "val"; mf = OPT "mutable"; lab = label; e = cvalue_binding ->
--          <:class_str_item< value $opt:o2b mf$ $lab$ = $e$ >>
-+      | "val"; "mutable"; lab = label; e = cvalue_binding ->
-+          <:class_str_item< value mutable $lab$ = $e$ >>
-+      | "val"; lab = label; e = cvalue_binding ->
-+          <:class_str_item< value $lab$ = $e$ >>
-+      | "val"; "mutable"; "virtual"; lab = label; ":"; t = ctyp ->
-+          <:class_str_item< value virtual mutable $lab$ : $t$ >>
-+      | "val"; "virtual"; mf = OPT "mutable"; lab = label; ":"; t = ctyp ->
-+          <:class_str_item< value virtual $opt:o2b mf$ $lab$ : $t$ >>
-       | "method"; "private"; "virtual"; l = label; ":"; t = poly_type ->
-           <:class_str_item< method virtual private $l$ : $t$ >>
-       | "method"; "virtual"; "private"; l = label; ":"; t = poly_type ->
-@@ -1087,8 +1093,9 @@
-   ;
-   class_sig_item:
-     [ [ "inherit"; cs = class_signature -> <:class_sig_item< inherit $cs$ >>
--      | "val"; mf = OPT "mutable"; l = label; ":"; t = ctyp ->
--          <:class_sig_item< value $opt:o2b mf$ $l$ : $t$ >>
-+      | "val"; mf = OPT "mutable"; vf = OPT "virtual";
-+        l = label; ":"; t = ctyp ->
-+          <:class_sig_item< value $opt:o2b mf$ $opt:o2b vf$ $l$ : $t$ >>
-       | "method"; "private"; "virtual"; l = label; ":"; t = poly_type ->
-           <:class_sig_item< method virtual private $l$ : $t$ >>
-       | "method"; "virtual"; "private"; l = label; ":"; t = poly_type ->
-Index: camlp4/etc/pr_o.ml
-===================================================================
-RCS file: /net/yquem/devel/caml/repository/csl/camlp4/etc/pr_o.ml,v
-retrieving revision 1.51
-diff -u -r1.51 pr_o.ml
---- camlp4/etc/pr_o.ml 5 Jan 2006 10:44:29 -0000       1.51
-+++ camlp4/etc/pr_o.ml 5 Apr 2006 02:26:01 -0000
-@@ -1768,10 +1768,11 @@
-                   [: `S LR "method"; private_flag pf; `label lab;
-                      `S LR ":" :];
-                `ctyp t "" k :]
--      | MLast.CgVal _ lab mf t ->
-+      | MLast.CgVal _ lab mf vf t ->
-           fun curr next dg k ->
-             [: `HVbox
--                  [: `S LR "val"; mutable_flag mf; `label lab; `S LR ":" :];
-+                  [: `S LR "val"; mutable_flag mf; virtual_flag vf;
-+                     `label lab; `S LR ":" :];
-                `ctyp t "" k :]
-       | MLast.CgVir _ lab pf t ->
-           fun curr next dg k ->
-Index: camlp4/meta/pa_r.ml
-===================================================================
-RCS file: /net/yquem/devel/caml/repository/csl/camlp4/meta/pa_r.ml,v
-retrieving revision 1.64
-diff -u -r1.64 pa_r.ml
---- camlp4/meta/pa_r.ml        29 Jun 2005 04:11:26 -0000      1.64
-+++ camlp4/meta/pa_r.ml        5 Apr 2006 02:26:01 -0000
-@@ -658,7 +658,9 @@
-       | "inherit"; ce = class_expr; pb = OPT as_lident ->
-           <:class_str_item< inherit $ce$ $opt:pb$ >>
-       | "value"; mf = OPT "mutable"; lab = label; e = cvalue_binding ->
--          <:class_str_item< value $opt:o2b mf$ $lab$ = $e$ >>
-+          <:class_str_item< value $opt:o2b mf$ $lab$ = $e$ >> 
-+      | "value"; "virtual"; mf = OPT "mutable"; l = label; ":"; t = ctyp ->
-+          <:class_str_item< value virtual $opt:o2b mf$ $l$ : $t$ >>
-       | "method"; "virtual"; pf = OPT "private"; l = label; ":"; t = ctyp ->
-           <:class_str_item< method virtual $opt:o2b pf$ $l$ : $t$ >>
-       | "method"; pf = OPT "private"; l = label; topt = OPT polyt;
-@@ -701,8 +703,9 @@
-     [ [ "declare"; st = LIST0 [ s = class_sig_item; ";" -> s ]; "end" ->
-           <:class_sig_item< declare $list:st$ end >>
-       | "inherit"; cs = class_type -> <:class_sig_item< inherit $cs$ >>
--      | "value"; mf = OPT "mutable"; l = label; ":"; t = ctyp ->
--          <:class_sig_item< value $opt:o2b mf$ $l$ : $t$ >>
-+      | "value"; mf = OPT "mutable"; vf = OPT "virtual";
-+        l = label; ":"; t = ctyp ->
-+          <:class_sig_item< value $opt:o2b mf$ $opt:o2b vf$ $l$ : $t$ >>
-       | "method"; "virtual"; pf = OPT "private"; l = label; ":"; t = ctyp ->
-           <:class_sig_item< method virtual $opt:o2b pf$ $l$ : $t$ >>
-       | "method"; pf = OPT "private"; l = label; ":"; t = ctyp ->
-Index: camlp4/meta/q_MLast.ml
-===================================================================
-RCS file: /net/yquem/devel/caml/repository/csl/camlp4/meta/q_MLast.ml,v
-retrieving revision 1.60
-diff -u -r1.60 q_MLast.ml
---- camlp4/meta/q_MLast.ml     29 Jun 2005 04:11:26 -0000      1.60
-+++ camlp4/meta/q_MLast.ml     5 Apr 2006 02:26:01 -0000
-@@ -947,6 +947,8 @@
-           Qast.Node "CrDcl" [Qast.Loc; st]
-       | "inherit"; ce = class_expr; pb = SOPT as_lident ->
-           Qast.Node "CrInh" [Qast.Loc; ce; pb]
-+      | "value"; "virtual"; mf = SOPT "mutable"; l = label; ":"; t = ctyp ->
-+          Qast.Node "CrVvr" [Qast.Loc; l; o2b mf; t]
-       | "value"; mf = SOPT "mutable"; lab = label; e = cvalue_binding ->
-           Qast.Node "CrVal" [Qast.Loc; lab; o2b mf; e]
-       | "method"; "virtual"; pf = SOPT "private"; l = label; ":"; t = ctyp ->
-@@ -992,8 +994,9 @@
-     [ [ "declare"; st = SLIST0 [ s = class_sig_item; ";" -> s ]; "end" ->
-           Qast.Node "CgDcl" [Qast.Loc; st]
-       | "inherit"; cs = class_type -> Qast.Node "CgInh" [Qast.Loc; cs]
--      | "value"; mf = SOPT "mutable"; l = label; ":"; t = ctyp ->
--          Qast.Node "CgVal" [Qast.Loc; l; o2b mf; t]
-+      | "value"; mf = SOPT "mutable"; vf = SOPT "virtual";
-+        l = label; ":"; t = ctyp ->
-+          Qast.Node "CgVal" [Qast.Loc; l; o2b mf; o2b vf; t]
-       | "method"; "virtual"; pf = SOPT "private"; l = label; ":"; t = ctyp ->
-           Qast.Node "CgVir" [Qast.Loc; l; o2b pf; t]
-       | "method"; pf = SOPT "private"; l = label; ":"; t = ctyp ->
-Index: camlp4/ocaml_src/camlp4/ast2pt.ml
-===================================================================
-RCS file: /net/yquem/devel/caml/repository/csl/camlp4/ocaml_src/camlp4/ast2pt.ml,v
-retrieving revision 1.36
-diff -u -r1.36 ast2pt.ml
---- camlp4/ocaml_src/camlp4/ast2pt.ml  29 Jun 2005 04:11:26 -0000      1.36
-+++ camlp4/ocaml_src/camlp4/ast2pt.ml  5 Apr 2006 02:26:01 -0000
-@@ -227,6 +227,7 @@
- ;;
- let mkmutable m = if m then Mutable else Immutable;;
- let mkprivate m = if m then Private else Public;;
-+let mkvirtual m = if m then Virtual else Concrete;;
- let mktrecord (loc, n, m, t) =
-   n, mkmutable m, ctyp (mkpolytype t), mkloc loc
- ;;
-@@ -878,8 +879,8 @@
-   | CgInh (loc, ct) -> Pctf_inher (class_type ct) :: l
-   | CgMth (loc, s, pf, t) ->
-       Pctf_meth (s, mkprivate pf, ctyp (mkpolytype t), mkloc loc) :: l
--  | CgVal (loc, s, b, t) ->
--      Pctf_val (s, mkmutable b, Some (ctyp t), mkloc loc) :: l
-+  | CgVal (loc, s, b, v, t) ->
-+      Pctf_val (s, mkmutable b, mkvirtual v, ctyp t, mkloc loc) :: l
-   | CgVir (loc, s, b, t) ->
-       Pctf_virt (s, mkprivate b, ctyp (mkpolytype t), mkloc loc) :: l
- and class_expr =
-@@ -923,6 +924,8 @@
-   | CrVal (loc, s, b, e) -> Pcf_val (s, mkmutable b, expr e, mkloc loc) :: l
-   | CrVir (loc, s, b, t) ->
-       Pcf_virt (s, mkprivate b, ctyp (mkpolytype t), mkloc loc) :: l
-+  | CrVvr (loc, s, b, t) ->
-+      Pcf_valvirt (s, mkmutable b, ctyp t, mkloc loc) :: l
- ;;
- let interf ast = List.fold_right sig_item ast [];;
-Index: camlp4/ocaml_src/camlp4/mLast.mli
-===================================================================
-RCS file: /net/yquem/devel/caml/repository/csl/camlp4/ocaml_src/camlp4/mLast.mli,v
-retrieving revision 1.20
-diff -u -r1.20 mLast.mli
---- camlp4/ocaml_src/camlp4/mLast.mli  29 Jun 2005 04:11:26 -0000      1.20
-+++ camlp4/ocaml_src/camlp4/mLast.mli  5 Apr 2006 02:26:01 -0000
-@@ -180,7 +180,7 @@
-   | CgDcl of loc * class_sig_item list
-   | CgInh of loc * class_type
-   | CgMth of loc * string * bool * ctyp
--  | CgVal of loc * string * bool * ctyp
-+  | CgVal of loc * string * bool * bool * ctyp
-   | CgVir of loc * string * bool * ctyp
- and class_expr =
-     CeApp of loc * class_expr * expr
-@@ -197,6 +197,7 @@
-   | CrMth of loc * string * bool * expr * ctyp option
-   | CrVal of loc * string * bool * expr
-   | CrVir of loc * string * bool * ctyp
-+  | CrVvr of loc * string * bool * ctyp
- ;;
- external loc_of_ctyp : ctyp -> loc = "%field0";;
-Index: camlp4/ocaml_src/camlp4/reloc.ml
-===================================================================
-RCS file: /net/yquem/devel/caml/repository/csl/camlp4/ocaml_src/camlp4/reloc.ml,v
-retrieving revision 1.20
-diff -u -r1.20 reloc.ml
---- camlp4/ocaml_src/camlp4/reloc.ml   29 Jun 2005 04:11:26 -0000      1.20
-+++ camlp4/ocaml_src/camlp4/reloc.ml   5 Apr 2006 02:26:01 -0000
-@@ -430,8 +430,8 @@
-         let nloc = floc loc in CgInh (nloc, class_type floc sh x1)
-     | CgMth (loc, x1, x2, x3) ->
-         let nloc = floc loc in CgMth (nloc, x1, x2, ctyp floc sh x3)
--    | CgVal (loc, x1, x2, x3) ->
--        let nloc = floc loc in CgVal (nloc, x1, x2, ctyp floc sh x3)
-+    | CgVal (loc, x1, x2, x3, x4) ->
-+        let nloc = floc loc in CgVal (nloc, x1, x2, x3, ctyp floc sh x4)
-     | CgVir (loc, x1, x2, x3) ->
-         let nloc = floc loc in CgVir (nloc, x1, x2, ctyp floc sh x3)
-   in
-@@ -478,6 +478,8 @@
-         let nloc = floc loc in CrVal (nloc, x1, x2, expr floc sh x3)
-     | CrVir (loc, x1, x2, x3) ->
-         let nloc = floc loc in CrVir (nloc, x1, x2, ctyp floc sh x3)
-+    | CrVvr (loc, x1, x2, x3) ->
-+        let nloc = floc loc in CrVvr (nloc, x1, x2, ctyp floc sh x3)
-   in
-   self
- ;;
-Index: camlp4/ocaml_src/meta/pa_r.ml
-===================================================================
-RCS file: /net/yquem/devel/caml/repository/csl/camlp4/ocaml_src/meta/pa_r.ml,v
-retrieving revision 1.59
-diff -u -r1.59 pa_r.ml
---- camlp4/ocaml_src/meta/pa_r.ml      29 Jun 2005 04:11:26 -0000      1.59
-+++ camlp4/ocaml_src/meta/pa_r.ml      5 Apr 2006 02:26:01 -0000
-@@ -2161,6 +2161,15 @@
-         (fun (t : 'ctyp) _ (l : 'label) (pf : string option) _ _
-            (_loc : Lexing.position * Lexing.position) ->
-            (MLast.CrVir (_loc, l, o2b pf, t) : 'class_str_item));
-+      [Gramext.Stoken ("", "value"); Gramext.Stoken ("", "virtual");
-+       Gramext.Sopt (Gramext.Stoken ("", "mutable"));
-+       Gramext.Snterm (Grammar.Entry.obj (label : 'label Grammar.Entry.e));
-+       Gramext.Stoken ("", ":");
-+       Gramext.Snterm (Grammar.Entry.obj (ctyp : 'ctyp Grammar.Entry.e))],
-+      Gramext.action
-+        (fun (t : 'ctyp) _ (l : 'label) (mf : string option) _ _
-+           (_loc : Lexing.position * Lexing.position) ->
-+           (MLast.CrVvr (_loc, l, o2b mf, t) : 'class_str_item));
-       [Gramext.Stoken ("", "value");
-        Gramext.Sopt (Gramext.Stoken ("", "mutable"));
-        Gramext.Snterm (Grammar.Entry.obj (label : 'label Grammar.Entry.e));
-@@ -2338,13 +2347,15 @@
-            (MLast.CgVir (_loc, l, o2b pf, t) : 'class_sig_item));
-       [Gramext.Stoken ("", "value");
-        Gramext.Sopt (Gramext.Stoken ("", "mutable"));
-+       Gramext.Sopt (Gramext.Stoken ("", "virtual"));
-        Gramext.Snterm (Grammar.Entry.obj (label : 'label Grammar.Entry.e));
-        Gramext.Stoken ("", ":");
-        Gramext.Snterm (Grammar.Entry.obj (ctyp : 'ctyp Grammar.Entry.e))],
-       Gramext.action
--        (fun (t : 'ctyp) _ (l : 'label) (mf : string option) _
-+        (fun (t : 'ctyp) _ (l : 'label) (vf : string option)
-+           (mf : string option) _
-            (_loc : Lexing.position * Lexing.position) ->
--           (MLast.CgVal (_loc, l, o2b mf, t) : 'class_sig_item));
-+           (MLast.CgVal (_loc, l, o2b mf, o2b vf, t) : 'class_sig_item));
-       [Gramext.Stoken ("", "inherit");
-        Gramext.Snterm
-          (Grammar.Entry.obj (class_type : 'class_type Grammar.Entry.e))],
-Index: camlp4/ocaml_src/meta/q_MLast.ml
-===================================================================
-RCS file: /net/yquem/devel/caml/repository/csl/camlp4/ocaml_src/meta/q_MLast.ml,v
-retrieving revision 1.65
-diff -u -r1.65 q_MLast.ml
---- camlp4/ocaml_src/meta/q_MLast.ml   12 Jan 2006 08:54:21 -0000      1.65
-+++ camlp4/ocaml_src/meta/q_MLast.ml   5 Apr 2006 02:26:01 -0000
-@@ -3152,9 +3152,9 @@
-                  Gramext.action
-                    (fun (x : string)
-                       (_loc : Lexing.position * Lexing.position) ->
--                      (Qast.Str x : 'e__17))])],
-+                      (Qast.Str x : 'e__18))])],
-           Gramext.action
--            (fun (a : 'e__17 option)
-+            (fun (a : 'e__18 option)
-                (_loc : Lexing.position * Lexing.position) ->
-                (Qast.Option a : 'a_opt));
-           [Gramext.Snterm
-@@ -3191,9 +3191,9 @@
-                  Gramext.action
-                    (fun (x : string)
-                       (_loc : Lexing.position * Lexing.position) ->
--                      (Qast.Str x : 'e__16))])],
-+                      (Qast.Str x : 'e__17))])],
-           Gramext.action
--            (fun (a : 'e__16 option)
-+            (fun (a : 'e__17 option)
-                (_loc : Lexing.position * Lexing.position) ->
-                (Qast.Option a : 'a_opt));
-           [Gramext.Snterm
-@@ -3216,9 +3216,9 @@
-                  Gramext.action
-                    (fun (x : string)
-                       (_loc : Lexing.position * Lexing.position) ->
--                      (Qast.Str x : 'e__15))])],
-+                      (Qast.Str x : 'e__16))])],
-           Gramext.action
--            (fun (a : 'e__15 option)
-+            (fun (a : 'e__16 option)
-                (_loc : Lexing.position * Lexing.position) ->
-                (Qast.Option a : 'a_opt));
-           [Gramext.Snterm
-@@ -3235,6 +3235,31 @@
-            (_loc : Lexing.position * Lexing.position) ->
-            (Qast.Node ("CrVal", [Qast.Loc; lab; o2b mf; e]) :
-             'class_str_item));
-+      [Gramext.Stoken ("", "value"); Gramext.Stoken ("", "virtual");
-+       Gramext.srules
-+         [[Gramext.Sopt
-+             (Gramext.srules
-+                [[Gramext.Stoken ("", "mutable")],
-+                 Gramext.action
-+                   (fun (x : string)
-+                      (_loc : Lexing.position * Lexing.position) ->
-+                      (Qast.Str x : 'e__15))])],
-+          Gramext.action
-+            (fun (a : 'e__15 option)
-+               (_loc : Lexing.position * Lexing.position) ->
-+               (Qast.Option a : 'a_opt));
-+          [Gramext.Snterm
-+             (Grammar.Entry.obj (a_opt : 'a_opt Grammar.Entry.e))],
-+          Gramext.action
-+            (fun (a : 'a_opt) (_loc : Lexing.position * Lexing.position) ->
-+               (a : 'a_opt))];
-+       Gramext.Snterm (Grammar.Entry.obj (label : 'label Grammar.Entry.e));
-+       Gramext.Stoken ("", ":");
-+       Gramext.Snterm (Grammar.Entry.obj (ctyp : 'ctyp Grammar.Entry.e))],
-+      Gramext.action
-+        (fun (t : 'ctyp) _ (l : 'label) (mf : 'a_opt) _ _
-+           (_loc : Lexing.position * Lexing.position) ->
-+           (Qast.Node ("CrVvr", [Qast.Loc; l; o2b mf; t]) : 'class_str_item));
-       [Gramext.Stoken ("", "inherit");
-        Gramext.Snterm
-          (Grammar.Entry.obj (class_expr : 'class_expr Grammar.Entry.e));
-@@ -3366,9 +3391,9 @@
-                  Gramext.action
-                    (fun _ (csf : 'class_sig_item)
-                       (_loc : Lexing.position * Lexing.position) ->
--                      (csf : 'e__18))])],
-+                      (csf : 'e__19))])],
-           Gramext.action
--            (fun (a : 'e__18 list)
-+            (fun (a : 'e__19 list)
-                (_loc : Lexing.position * Lexing.position) ->
-                (Qast.List a : 'a_list));
-           [Gramext.Snterm
-@@ -3446,9 +3471,9 @@
-                  Gramext.action
-                    (fun (x : string)
-                       (_loc : Lexing.position * Lexing.position) ->
--                      (Qast.Str x : 'e__22))])],
-+                      (Qast.Str x : 'e__24))])],
-           Gramext.action
--            (fun (a : 'e__22 option)
-+            (fun (a : 'e__24 option)
-                (_loc : Lexing.position * Lexing.position) ->
-                (Qast.Option a : 'a_opt));
-           [Gramext.Snterm
-@@ -3471,9 +3496,9 @@
-                  Gramext.action
-                    (fun (x : string)
-                       (_loc : Lexing.position * Lexing.position) ->
--                      (Qast.Str x : 'e__21))])],
-+                      (Qast.Str x : 'e__23))])],
-           Gramext.action
--            (fun (a : 'e__21 option)
-+            (fun (a : 'e__23 option)
-                (_loc : Lexing.position * Lexing.position) ->
-                (Qast.Option a : 'a_opt));
-           [Gramext.Snterm
-@@ -3496,9 +3521,26 @@
-                  Gramext.action
-                    (fun (x : string)
-                       (_loc : Lexing.position * Lexing.position) ->
--                      (Qast.Str x : 'e__20))])],
-+                      (Qast.Str x : 'e__21))])],
-           Gramext.action
--            (fun (a : 'e__20 option)
-+            (fun (a : 'e__21 option)
-+               (_loc : Lexing.position * Lexing.position) ->
-+               (Qast.Option a : 'a_opt));
-+          [Gramext.Snterm
-+             (Grammar.Entry.obj (a_opt : 'a_opt Grammar.Entry.e))],
-+          Gramext.action
-+            (fun (a : 'a_opt) (_loc : Lexing.position * Lexing.position) ->
-+               (a : 'a_opt))];
-+       Gramext.srules
-+         [[Gramext.Sopt
-+             (Gramext.srules
-+                [[Gramext.Stoken ("", "virtual")],
-+                 Gramext.action
-+                   (fun (x : string)
-+                      (_loc : Lexing.position * Lexing.position) ->
-+                      (Qast.Str x : 'e__22))])],
-+          Gramext.action
-+            (fun (a : 'e__22 option)
-                (_loc : Lexing.position * Lexing.position) ->
-                (Qast.Option a : 'a_opt));
-           [Gramext.Snterm
-@@ -3510,9 +3552,10 @@
-        Gramext.Stoken ("", ":");
-        Gramext.Snterm (Grammar.Entry.obj (ctyp : 'ctyp Grammar.Entry.e))],
-       Gramext.action
--        (fun (t : 'ctyp) _ (l : 'label) (mf : 'a_opt) _
-+        (fun (t : 'ctyp) _ (l : 'label) (vf : 'a_opt) (mf : 'a_opt) _
-            (_loc : Lexing.position * Lexing.position) ->
--           (Qast.Node ("CgVal", [Qast.Loc; l; o2b mf; t]) : 'class_sig_item));
-+           (Qast.Node ("CgVal", [Qast.Loc; l; o2b mf; o2b vf; t]) :
-+            'class_sig_item));
-       [Gramext.Stoken ("", "inherit");
-        Gramext.Snterm
-          (Grammar.Entry.obj (class_type : 'class_type Grammar.Entry.e))],
-@@ -3531,9 +3574,9 @@
-                  Gramext.action
-                    (fun _ (s : 'class_sig_item)
-                       (_loc : Lexing.position * Lexing.position) ->
--                      (s : 'e__19))])],
-+                      (s : 'e__20))])],
-           Gramext.action
--            (fun (a : 'e__19 list)
-+            (fun (a : 'e__20 list)
-                (_loc : Lexing.position * Lexing.position) ->
-                (Qast.List a : 'a_list));
-           [Gramext.Snterm
-@@ -3556,9 +3599,9 @@
-                  Gramext.action
-                    (fun (x : string)
-                       (_loc : Lexing.position * Lexing.position) ->
--                      (Qast.Str x : 'e__23))])],
-+                      (Qast.Str x : 'e__25))])],
-           Gramext.action
--            (fun (a : 'e__23 option)
-+            (fun (a : 'e__25 option)
-                (_loc : Lexing.position * Lexing.position) ->
-                (Qast.Option a : 'a_opt));
-           [Gramext.Snterm
-@@ -3593,9 +3636,9 @@
-                  Gramext.action
-                    (fun (x : string)
-                       (_loc : Lexing.position * Lexing.position) ->
--                      (Qast.Str x : 'e__24))])],
-+                      (Qast.Str x : 'e__26))])],
-           Gramext.action
--            (fun (a : 'e__24 option)
-+            (fun (a : 'e__26 option)
-                (_loc : Lexing.position * Lexing.position) ->
-                (Qast.Option a : 'a_opt));
-           [Gramext.Snterm
-@@ -3713,9 +3756,9 @@
-                  Gramext.action
-                    (fun (x : string)
-                       (_loc : Lexing.position * Lexing.position) ->
--                      (Qast.Str x : 'e__25))])],
-+                      (Qast.Str x : 'e__27))])],
-           Gramext.action
--            (fun (a : 'e__25 option)
-+            (fun (a : 'e__27 option)
-                (_loc : Lexing.position * Lexing.position) ->
-                (Qast.Option a : 'a_opt));
-           [Gramext.Snterm
-@@ -3922,9 +3965,9 @@
-                  Gramext.action
-                    (fun (x : string)
-                       (_loc : Lexing.position * Lexing.position) ->
--                      (Qast.Str x : 'e__26))])],
-+                      (Qast.Str x : 'e__28))])],
-           Gramext.action
--            (fun (a : 'e__26 option)
-+            (fun (a : 'e__28 option)
-                (_loc : Lexing.position * Lexing.position) ->
-                (Qast.Option a : 'a_opt));
-           [Gramext.Snterm
-@@ -4390,9 +4433,9 @@
-                  Gramext.action
-                    (fun _ (e : 'expr)
-                       (_loc : Lexing.position * Lexing.position) ->
--                      (e : 'e__29))])],
-+                      (e : 'e__31))])],
-           Gramext.action
--            (fun (a : 'e__29 list)
-+            (fun (a : 'e__31 list)
-                (_loc : Lexing.position * Lexing.position) ->
-                (Qast.List a : 'a_list));
-           [Gramext.Snterm
-@@ -4425,9 +4468,9 @@
-                  Gramext.action
-                    (fun _ (e : 'expr)
-                       (_loc : Lexing.position * Lexing.position) ->
--                      (e : 'e__28))])],
-+                      (e : 'e__30))])],
-           Gramext.action
--            (fun (a : 'e__28 list)
-+            (fun (a : 'e__30 list)
-                (_loc : Lexing.position * Lexing.position) ->
-                (Qast.List a : 'a_list));
-           [Gramext.Snterm
-@@ -4454,9 +4497,9 @@
-                  Gramext.action
-                    (fun _ (e : 'expr)
-                       (_loc : Lexing.position * Lexing.position) ->
--                      (e : 'e__27))])],
-+                      (e : 'e__29))])],
-           Gramext.action
--            (fun (a : 'e__27 list)
-+            (fun (a : 'e__29 list)
-                (_loc : Lexing.position * Lexing.position) ->
-                (Qast.List a : 'a_list));
-           [Gramext.Snterm
-@@ -4547,9 +4590,9 @@
-                  Gramext.action
-                    (fun _ (cf : 'class_str_item)
-                       (_loc : Lexing.position * Lexing.position) ->
--                      (cf : 'e__30))])],
-+                      (cf : 'e__32))])],
-           Gramext.action
--            (fun (a : 'e__30 list)
-+            (fun (a : 'e__32 list)
-                (_loc : Lexing.position * Lexing.position) ->
-                (Qast.List a : 'a_list));
-           [Gramext.Snterm
-@@ -4592,9 +4635,9 @@
-                  Gramext.action
-                    (fun _ (csf : 'class_sig_item)
-                       (_loc : Lexing.position * Lexing.position) ->
--                      (csf : 'e__32))])],
-+                      (csf : 'e__34))])],
-           Gramext.action
--            (fun (a : 'e__32 list)
-+            (fun (a : 'e__34 list)
-                (_loc : Lexing.position * Lexing.position) ->
-                (Qast.List a : 'a_list));
-           [Gramext.Snterm
-@@ -4623,9 +4666,9 @@
-                  Gramext.action
-                    (fun _ (csf : 'class_sig_item)
-                       (_loc : Lexing.position * Lexing.position) ->
--                      (csf : 'e__31))])],
-+                      (csf : 'e__33))])],
-           Gramext.action
--            (fun (a : 'e__31 list)
-+            (fun (a : 'e__33 list)
-                (_loc : Lexing.position * Lexing.position) ->
-                (Qast.List a : 'a_list));
-           [Gramext.Snterm
-Index: camlp4/top/rprint.ml
-===================================================================
-RCS file: /net/yquem/devel/caml/repository/csl/camlp4/top/rprint.ml,v
-retrieving revision 1.18
-diff -u -r1.18 rprint.ml
---- camlp4/top/rprint.ml       29 Jun 2005 04:11:26 -0000      1.18
-+++ camlp4/top/rprint.ml       5 Apr 2006 02:26:01 -0000
-@@ -288,8 +288,9 @@
-       fprintf ppf "@[<2>method %s%s%s :@ %a;@]"
-         (if priv then "private " else "") (if virt then "virtual " else "")
-         name Toploop.print_out_type.val ty
--  | Ocsg_value name mut ty ->
--      fprintf ppf "@[<2>value %s%s :@ %a;@]" (if mut then "mutable " else "")
-+  | Ocsg_value name mut virt ty ->
-+      fprintf ppf "@[<2>value %s%s%s :@ %a;@]"
-+        (if mut then "mutable " else "") (if virt then "virtual " else "")
-         name Toploop.print_out_type.val ty ]
- ;
diff --git a/experimental/garrigue/variable-names-Tvar.diffs b/experimental/garrigue/variable-names-Tvar.diffs
deleted file mode 100644 (file)
index 99ff6a2..0000000
+++ /dev/null
@@ -1,1656 +0,0 @@
-Index: VERSION
-===================================================================
---- VERSION    (リビジョン 11207)
-+++ VERSION    (作業コピー)
-@@ -1,4 +1,4 @@
--3.13.0+dev6 (2011-07-29)
-+3.13.0+dev7 (2011-09-22)
- # The version string is the first line of this file.
- # It must be in the format described in stdlib/sys.mli
-Index: typing/typemod.ml
-===================================================================
---- typing/typemod.ml  (リビジョン 11207)
-+++ typing/typemod.ml  (作業コピー)
-@@ -764,7 +764,7 @@
-               Location.prerr_warning smod.pmod_loc
-                 (Warnings.Not_principal "this module unpacking");
-             modtype_of_package env smod.pmod_loc p nl tl
--        | {desc = Tvar} ->
-+        | {desc = Tvar _} ->
-             raise (Typecore.Error
-                      (smod.pmod_loc, Typecore.Cannot_infer_signature))
-         | _ ->
-Index: typing/typetexp.ml
-===================================================================
---- typing/typetexp.ml (リビジョン 11207)
-+++ typing/typetexp.ml (作業コピー)
-@@ -150,7 +150,7 @@
-     if strict then raise Already_bound;
-     v
-   with Not_found ->
--    let v = new_global_var() in
-+    let v = new_global_var ~name () in
-     type_variables := Tbl.add name v !type_variables;
-     v
-@@ -165,8 +165,8 @@
-     Tpoly _ -> ty
-   | _ -> Ctype.newty (Tpoly (ty, []))
--let new_pre_univar () =
--  let v = newvar () in pre_univars := v :: !pre_univars; v
-+let new_pre_univar ?name () =
-+  let v = newvar ?name () in pre_univars := v :: !pre_univars; v
- let rec swap_list = function
-     x :: y :: l -> y :: x :: swap_list l
-@@ -190,7 +190,8 @@
-         instance (fst(Tbl.find name !used_variables))
-       with Not_found ->
-         let v =
--          if policy = Univars then new_pre_univar () else newvar () in
-+          if policy = Univars then new_pre_univar ~name () else newvar ~name ()
-+        in
-         used_variables := Tbl.add name (v, styp.ptyp_loc) !used_variables;
-         v
-       end
-@@ -333,7 +334,14 @@
-             end_def ();
-             generalize_structure t;
-           end;
--          instance t
-+          let t = instance t in
-+          let px = Btype.proxy t in
-+          begin match px.desc with
-+          | Tvar None -> Btype.log_type px; px.desc <- Tvar (Some alias)
-+          | Tunivar None -> Btype.log_type px; px.desc <- Tunivar (Some alias)
-+          | _ -> ()
-+          end;
-+          t
-       end
-   | Ptyp_variant(fields, closed, present) ->
-       let name = ref None in
-@@ -388,7 +396,7 @@
-               {desc=Tvariant row}, _ when Btype.static_row row ->
-                 let row = Btype.row_repr row in
-                 row.row_fields
--            | {desc=Tvar}, Some(p, _) ->
-+            | {desc=Tvar _}, Some(p, _) ->
-                 raise(Error(sty.ptyp_loc, Unbound_type_constructor_2 p))
-             | _ ->
-                 raise(Error(sty.ptyp_loc, Not_a_variant ty))
-@@ -431,7 +439,7 @@
-       newty (Tvariant row)
-   | Ptyp_poly(vars, st) ->
-       begin_def();
--      let new_univars = List.map (fun name -> name, newvar()) vars in
-+      let new_univars = List.map (fun name -> name, newvar ~name ()) vars in
-       let old_univars = !univars in
-       univars := new_univars @ !univars;
-       let ty = transl_type env policy st in
-@@ -443,10 +451,12 @@
-           (fun tyl (name, ty1) ->
-             let v = Btype.proxy ty1 in
-             if deep_occur v ty then begin
--              if v.level <> Btype.generic_level || v.desc <> Tvar then
--                raise (Error (styp.ptyp_loc, Cannot_quantify (name, v)));
--              v.desc <- Tunivar;
--              v :: tyl
-+              match v.desc with
-+                Tvar name when v.level = Btype.generic_level ->
-+                  v.desc <- Tunivar name;
-+                  v :: tyl
-+              | _ ->
-+                raise (Error (styp.ptyp_loc, Cannot_quantify (name, v)))
-             end else tyl)
-           [] new_univars
-       in
-@@ -483,7 +493,7 @@
-     match ty.desc with
-     | Tvariant row ->
-         let row = Btype.row_repr row in
--        if (Btype.row_more row).desc = Tunivar then
-+        if Btype.is_Tunivar (Btype.row_more row) then
-           ty.desc <- Tvariant
-               {row with row_fixed=true;
-                row_fields = List.map
-@@ -512,7 +522,7 @@
-       then try
-         r := (loc, v,  Tbl.find name !type_variables) :: !r
-       with Not_found ->
--        if fixed && (repr ty).desc = Tvar then
-+        if fixed && Btype.is_Tvar (repr ty) then
-           raise(Error(loc, Unbound_type_variable ("'"^name)));
-         let v2 = new_global_var () in
-         r := (loc, v, v2) :: !r;
-@@ -552,8 +562,10 @@
-     List.fold_left
-       (fun acc v ->
-         let v = repr v in
--        if v.level <> Btype.generic_level || v.desc <> Tvar then acc
--        else (v.desc <- Tunivar ; v :: acc))
-+        match v.desc with
-+          Tvar name when v.level = Btype.generic_level ->
-+            v.desc <- Tunivar name; v :: acc
-+        | _ -> acc)
-       [] !pre_univars
-   in
-   make_fixed_univars typ;
-@@ -635,8 +647,8 @@
-       fprintf ppf "The type variable name %s is not allowed in programs" name
-   | Cannot_quantify (name, v) ->
-       fprintf ppf "This type scheme cannot quantify '%s :@ %s." name
--        (if v.desc = Tvar then "it escapes this scope" else
--         if v.desc = Tunivar then "it is aliased to another variable"
-+        (if Btype.is_Tvar v then "it escapes this scope" else
-+         if Btype.is_Tunivar v then "it is aliased to another variable"
-          else "it is not a variable")
-   | Multiple_constraints_on_type s ->
-       fprintf ppf "Multiple constraints for type %s" s
-Index: typing/btype.ml
-===================================================================
---- typing/btype.ml    (リビジョン 11207)
-+++ typing/btype.ml    (作業コピー)
-@@ -35,9 +35,9 @@
- let new_id = ref (-1)
- let newty2 level desc  =
--  incr new_id; { desc = desc; level = level; id = !new_id }
-+  incr new_id; { desc; level; id = !new_id }
- let newgenty desc      = newty2 generic_level desc
--let newgenvar ()       = newgenty Tvar
-+let newgenvar ?name () = newgenty (Tvar name)
- (*
- let newmarkedvar level =
-   incr new_id; { desc = Tvar; level = pivot_level - level; id = !new_id }
-@@ -46,6 +46,11 @@
-   { desc = Tvar; level = pivot_level - generic_level; id = !new_id }
- *)
-+(**** Check some types ****)
-+
-+let is_Tvar = function {desc=Tvar _} -> true | _ -> false
-+let is_Tunivar = function {desc=Tunivar _} -> true | _ -> false
-+
- (**** Representative of a type ****)
- let rec field_kind_repr =
-@@ -139,7 +144,7 @@
-       let rec proxy_obj ty =
-         match ty.desc with
-           Tfield (_, _, _, ty) | Tlink ty -> proxy_obj ty
--        | Tvar | Tunivar | Tconstr _ -> ty
-+        | Tvar _ | Tunivar _ | Tconstr _ -> ty
-         | Tnil -> ty0
-         | _ -> assert false
-       in proxy_obj ty
-@@ -180,13 +185,13 @@
-     row.row_fields;
-   match (repr row.row_more).desc with
-     Tvariant row -> iter_row f row
--  | Tvar | Tunivar | Tsubst _ | Tconstr _ ->
-+  | Tvar _ | Tunivar _ | Tsubst _ | Tconstr _ ->
-       Misc.may (fun (_,l) -> List.iter f l) row.row_name
-   | _ -> assert false
- let iter_type_expr f ty =
-   match ty.desc with
--    Tvar                -> ()
-+    Tvar _              -> ()
-   | Tarrow (_, ty1, ty2, _) -> f ty1; f ty2
-   | Ttuple l            -> List.iter f l
-   | Tconstr (_, l, _)   -> List.iter f l
-@@ -198,7 +203,7 @@
-   | Tnil                -> ()
-   | Tlink ty            -> f ty
-   | Tsubst ty           -> f ty
--  | Tunivar             -> ()
-+  | Tunivar _           -> ()
-   | Tpoly (ty, tyl)     -> f ty; List.iter f tyl
-   | Tpackage (_, _, l)  -> List.iter f l
-@@ -239,13 +244,13 @@
-    encoding during substitution *)
- let rec norm_univar ty =
-   match ty.desc with
--    Tunivar | Tsubst _ -> ty
-+    Tunivar _ | Tsubst _ -> ty
-   | Tlink ty           -> norm_univar ty
-   | Ttuple (ty :: _)   -> norm_univar ty
-   | _                  -> assert false
- let rec copy_type_desc f = function
--    Tvar                -> Tvar
-+    Tvar _              -> Tvar None (* forget the name *)
-   | Tarrow (p, ty1, ty2, c)-> Tarrow (p, f ty1, f ty2, copy_commu c)
-   | Ttuple l            -> Ttuple (List.map f l)
-   | Tconstr (p, l, _)   -> Tconstr (p, List.map f l, ref Mnil)
-@@ -258,7 +263,7 @@
-   | Tnil                -> Tnil
-   | Tlink ty            -> copy_type_desc f ty.desc
-   | Tsubst ty           -> assert false
--  | Tunivar             -> Tunivar
-+  | Tunivar _ as ty     -> ty (* keep the name *)
-   | Tpoly (ty, tyl)     ->
-       let tyl = List.map (fun x -> norm_univar (f x)) tyl in
-       Tpoly (f ty, tyl)
-@@ -447,7 +452,7 @@
-   | Cuniv of type_expr option ref * type_expr option
- let undo_change = function
--    Ctype  (ty, desc)  -> ty.desc <- desc
-+    Ctype  (ty, desc) -> ty.desc <- desc
-   | Clevel (ty, level) -> ty.level <- level
-   | Cname  (r, v) -> r := v
-   | Crow   (r, v) -> r := v
-@@ -474,7 +479,22 @@
- let log_type ty =
-   if ty.id <= !last_snapshot then log_change (Ctype (ty, ty.desc))
--let link_type ty ty' = log_type ty; ty.desc <- Tlink ty'
-+let link_type ty ty' =
-+  log_type ty;
-+  let desc = ty.desc in
-+  ty.desc <- Tlink ty';
-+  (* Name is a user-supplied name for this unification variable (obtained
-+   * through a type annotation for instance). *)
-+  match desc, ty'.desc with
-+    Tvar name, Tvar name' ->
-+      begin match name, name' with
-+      | Some _, None ->  log_type ty'; ty'.desc <- Tvar name
-+      | None, Some _ ->  ()
-+      | Some _, Some _ ->
-+          if ty.level < ty'.level then (log_type ty'; ty'.desc <- Tvar name)
-+      | None, None   ->  ()
-+      end
-+  | _ -> ()
-   (* ; assert (check_memorized_abbrevs ()) *)
-   (*  ; check_expans [] ty' *)
- let set_level ty level =
-Index: typing/typecore.ml
-===================================================================
---- typing/typecore.ml (リビジョン 11207)
-+++ typing/typecore.ml (作業コピー)
-@@ -633,7 +633,7 @@
-           List.iter generalize vars;
-           let instantiated tv  = 
-             let tv = expand_head !env tv in
--            tv.desc <> Tvar || tv.level <> generic_level in
-+            not (is_Tvar tv) || tv.level <> generic_level in
-           if List.exists instantiated vars then
-             raise (Error(loc, Polymorphic_label (lid_of_label label)))
-         end;
-@@ -1126,7 +1126,7 @@
-     Tarrow (l, _, ty_res, _) ->
-       list_labels_aux env (ty::visited) (l::ls) ty_res
-   | _ ->
--      List.rev ls, ty.desc = Tvar
-+      List.rev ls, is_Tvar ty
- let list_labels env ty = list_labels_aux env [] [] ty
-@@ -1142,9 +1142,10 @@
-       (fun t ->
-         let t = repr t in
-         generalize t;
--        if t.desc = Tvar && t.level = generic_level then
--          (log_type t; t.desc <- Tunivar; true)
--        else false)
-+        match t.desc with
-+          Tvar name when t.level = generic_level ->
-+            log_type t; t.desc <- Tunivar name; true
-+        | _ -> false)
-       vars in
-   if List.length vars = List.length vars' then () else
-   let ty = newgenty (Tpoly(repr exp.exp_type, vars'))
-@@ -1158,7 +1159,7 @@
-   match (expand_head env exp.exp_type).desc with
-   | Tarrow _ ->
-       Location.prerr_warning exp.exp_loc Warnings.Partial_application
--  | Tvar -> ()
-+  | Tvar _ -> ()
-   | Tconstr (p, _, _) when Path.same p Predef.path_unit -> ()
-   | _ ->
-       if statement then
-@@ -1742,7 +1743,7 @@
-               let (id, typ) =
-                 filter_self_method env met Private meths privty
-               in
--              if (repr typ).desc = Tvar then
-+              if is_Tvar (repr typ) then
-                 Location.prerr_warning loc
-                   (Warnings.Undeclared_virtual_method met);
-               (Texp_send(obj, Tmeth_val id), typ)
-@@ -1797,7 +1798,7 @@
-                 Location.prerr_warning loc
-                   (Warnings.Not_principal "this use of a polymorphic method");
-               snd (instance_poly false tl ty)
--          | {desc = Tvar} as ty ->
-+          | {desc = Tvar _} as ty ->
-               let ty' = newvar () in
-               unify env (instance ty) (newty(Tpoly(ty',[])));
-               (* if not !Clflags.nolabels then
-@@ -1979,7 +1980,7 @@
-             end_def ();
-             check_univars env false "method" exp ty_expected vars;
-             re { exp with exp_type = instance ty }
--        | Tvar ->
-+        | Tvar _ ->
-             let exp = type_exp env sbody in
-             let exp = {exp with exp_type = newty (Tpoly (exp.exp_type, []))} in
-             unify_exp env exp ty;
-@@ -2038,7 +2039,7 @@
-               Location.prerr_warning loc
-                 (Warnings.Not_principal "this module packing");
-             (p, nl, tl)
--        | {desc = Tvar} ->
-+        | {desc = Tvar _} ->
-             raise (Error (loc, Cannot_infer_signature))
-         | _ ->
-             raise (Error (loc, Not_a_packed_module ty_expected))
-@@ -2128,7 +2129,7 @@
-               ty_fun
-         | Tarrow (l,_,ty_res',_) when l = "" || !Clflags.classic ->
-             args, ty_fun, no_labels ty_res'
--        | Tvar ->  args, ty_fun, false
-+        | Tvar _ ->  args, ty_fun, false
-         |  _ -> [], texp.exp_type, false
-       in
-       let args, ty_fun', simple_res = make_args [] texp.exp_type in
-@@ -2192,7 +2193,7 @@
-         let (ty1, ty2) =
-           let ty_fun = expand_head env ty_fun in
-           match ty_fun.desc with
--            Tvar ->
-+            Tvar _ ->
-               let t1 = newvar () and t2 = newvar () in
-               let not_identity = function
-                   Texp_ident(_,{val_kind=Val_prim
-@@ -2335,7 +2336,7 @@
-       begin match (expand_head env exp.exp_type).desc with
-       | Tarrow _ ->
-           Location.prerr_warning exp.exp_loc Warnings.Partial_application
--      | Tvar ->
-+      | Tvar _ ->
-           add_delayed_check (fun () -> check_application_result env false exp)
-       | _ -> ()
-       end;
-@@ -2404,9 +2405,9 @@
-   | Tarrow _ ->
-       Location.prerr_warning loc Warnings.Partial_application
-   | Tconstr (p, _, _) when Path.same p Predef.path_unit -> ()
--  | Tvar when ty.level > tv.level ->
-+  | Tvar _ when ty.level > tv.level ->
-       Location.prerr_warning loc Warnings.Nonreturning_statement
--  | Tvar ->
-+  | Tvar _ ->
-       add_delayed_check (fun () -> check_application_result env true exp)
-   | _ ->
-       Location.prerr_warning loc Warnings.Statement_type
-Index: typing/btype.mli
-===================================================================
---- typing/btype.mli   (リビジョン 11207)
-+++ typing/btype.mli   (作業コピー)
-@@ -23,7 +23,7 @@
-         (* Create a type *)
- val newgenty: type_desc -> type_expr
-         (* Create a generic type *)
--val newgenvar: unit -> type_expr
-+val newgenvar: ?name:string -> unit -> type_expr
-         (* Return a fresh generic variable *)
- (* Use Tsubst instead
-@@ -33,6 +33,9 @@
-         (* Return a fresh marked generic variable *)
- *)
-+val is_Tvar: type_expr -> bool
-+val is_Tunivar: type_expr -> bool
-+
- val repr: type_expr -> type_expr
-         (* Return the canonical representative of a type. *)
-Index: typing/ctype.mli
-===================================================================
---- typing/ctype.mli   (リビジョン 11207)
-+++ typing/ctype.mli   (作業コピー)
-@@ -41,9 +41,10 @@
-         (* This pair of functions is only used in Typetexp *)
- val newty: type_desc -> type_expr
--val newvar: unit -> type_expr
-+val newvar: ?name:string -> unit -> type_expr
-+val newvar2: ?name:string -> int -> type_expr
-         (* Return a fresh variable *)
--val new_global_var: unit -> type_expr
-+val new_global_var: ?name:string -> unit -> type_expr
-         (* Return a fresh variable, bound at toplevel
-            (as type variables ['a] in type constraints). *)
- val newobj: type_expr -> type_expr
-Index: typing/datarepr.ml
-===================================================================
---- typing/datarepr.ml (リビジョン 11207)
-+++ typing/datarepr.ml (作業コピー)
-@@ -28,7 +28,7 @@
-     if ty.level >= lowest_level then begin
-       ty.level <- pivot_level - ty.level;
-       match ty.desc with
--      | Tvar ->
-+      | Tvar _ ->
-           ret := TypeSet.add ty !ret
-       | Tvariant row ->
-           let row = row_repr row in
-Index: typing/typeclass.ml
-===================================================================
---- typing/typeclass.ml        (リビジョン 11207)
-+++ typing/typeclass.ml        (作業コピー)
-@@ -532,7 +532,7 @@
-                 (Typetexp.transl_simple_type val_env false sty) ty
-           end;
-           begin match (Ctype.repr ty).desc with
--            Tvar ->
-+            Tvar _ ->
-               let ty' = Ctype.newvar () in
-               Ctype.unify val_env (Ctype.newty (Tpoly (ty', []))) ty;
-               Ctype.unify val_env (type_approx val_env sbody) ty'
-Index: typing/typedecl.ml
-===================================================================
---- typing/typedecl.ml (リビジョン 11207)
-+++ typing/typedecl.ml (作業コピー)
-@@ -111,7 +111,7 @@
-     | _ ->
-         raise (Error (loc, Bad_fixed_type "is not an object or variant"))
-   in
--  if rv.desc <> Tvar then
-+  if not (Btype.is_Tvar rv) then
-     raise (Error (loc, Bad_fixed_type "has no row variable"));
-   rv.desc <- Tconstr (p, decl.type_params, ref Mnil)
-@@ -503,7 +503,7 @@
-           compute_same row.row_more
-       | Tpoly (ty, _) ->
-           compute_same ty
--      | Tvar | Tnil | Tlink _ | Tunivar -> ()
-+      | Tvar _ | Tnil | Tlink _ | Tunivar _ -> ()
-       | Tpackage (_, _, tyl) ->
-           List.iter (compute_variance_rec true true true) tyl
-     end
-@@ -546,7 +546,7 @@
-   in
-   List.iter2
-     (fun (ty, co, cn, ct) (c, n) ->
--      if ty.desc <> Tvar then begin
-+      if not (Btype.is_Tvar ty) then begin
-         co := c; cn := n; ct := n;
-         compute_variance env tvl2 c n n ty
-       end)
-@@ -571,7 +571,7 @@
- let rec anonymous env ty =
-   match (Ctype.expand_head env ty).desc with
--  | Tvar -> false
-+  | Tvar _ -> false
-   | Tobject (fi, _) ->
-       let _, rv = Ctype.flatten_fields fi in anonymous env rv
-   | Tvariant row ->
-Index: typing/types.mli
-===================================================================
---- typing/types.mli   (リビジョン 11207)
-+++ typing/types.mli   (作業コピー)
-@@ -24,7 +24,7 @@
-     mutable id: int }
- and type_desc =
--    Tvar
-+    Tvar of string option
-   | Tarrow of label * type_expr * type_expr * commutable
-   | Ttuple of type_expr list
-   | Tconstr of Path.t * type_expr list * abbrev_memo ref
-@@ -34,7 +34,7 @@
-   | Tlink of type_expr
-   | Tsubst of type_expr         (* for copying *)
-   | Tvariant of row_desc
--  | Tunivar
-+  | Tunivar of string option
-   | Tpoly of type_expr * type_expr list
-   | Tpackage of Path.t * string list * type_expr list
-Index: typing/ctype.ml
-===================================================================
---- typing/ctype.ml    (リビジョン 11207)
-+++ typing/ctype.ml    (作業コピー)
-@@ -153,9 +153,9 @@
- let newty desc         = newty2 !current_level desc
- let new_global_ty desc = newty2 !global_level desc
--let newvar ()          = newty2 !current_level Tvar
--let newvar2 level      = newty2 level Tvar
--let new_global_var ()  = newty2 !global_level Tvar
-+let newvar ?name ()         = newty2 !current_level (Tvar name)
-+let newvar2 ?name level     = newty2 level (Tvar name)
-+let new_global_var ?name () = newty2 !global_level (Tvar name)
- let newobj fields      = newty (Tobject (fields, ref None))
-@@ -297,14 +297,12 @@
- let opened_object ty =
-   match (object_row ty).desc with
--  | Tvar               -> true
--  | Tunivar            -> true
--  | Tconstr _          -> true
--  | _                  -> false
-+  | Tvar _  | Tunivar _ | Tconstr _ -> true
-+  | _                               -> false
- let concrete_object ty =
-   match (object_row ty).desc with
--  | Tvar               -> false
-+  | Tvar _             -> false
-   | _                  -> true
- (**** Close an object ****)
-@@ -313,7 +311,7 @@
-   let rec close ty =
-     let ty = repr ty in
-     match ty.desc with
--      Tvar ->
-+      Tvar _ ->
-         link_type ty (newty2 ty.level Tnil)
-     | Tfield(_, _, _, ty') -> close ty'
-     | _                    -> assert false
-@@ -329,7 +327,7 @@
-     let ty = repr ty in
-     match ty.desc with
-       Tfield (_, _, _, ty) -> find ty
--    | Tvar                 -> ty
-+    | Tvar _               -> ty
-     | _                    -> assert false
-   in
-   match (repr ty).desc with
-@@ -434,7 +432,7 @@
-     let level = ty.level in
-     ty.level <- pivot_level - level;
-     match ty.desc with
--      Tvar when level <> generic_level ->
-+      Tvar _ when level <> generic_level ->
-         raise Non_closed
-     | Tfield(_, kind, t1, t2) ->
-         if field_kind_repr kind = Fpresent then
-@@ -468,7 +466,7 @@
-   if ty.level >= lowest_level then begin
-     ty.level <- pivot_level - ty.level;
-     begin match ty.desc, !really_closed with
--      Tvar, _ ->
-+      Tvar _, _ ->
-         free_variables := (ty, real) :: !free_variables
-     | Tconstr (path, tl, _), Some env ->
-         begin try
-@@ -639,7 +637,7 @@
- let rec generalize_structure var_level ty =
-   let ty = repr ty in
-   if ty.level <> generic_level then begin
--    if ty.desc = Tvar && ty.level > var_level then
-+    if is_Tvar ty && ty.level > var_level then
-       set_level ty var_level
-     else if ty.level > !current_level then begin
-       set_level ty generic_level;
-@@ -858,7 +856,7 @@
-           TypeHash.add node_univars inv.inv_type (ref(TypeSet.singleton univ));
-           List.iter (add_univar univ) inv.inv_parents
-   in
--  TypeHash.iter (fun ty inv -> if ty.desc = Tunivar then add_univar ty inv)
-+  TypeHash.iter (fun ty inv -> if is_Tunivar ty then add_univar ty inv)
-     inverted;
-   fun ty ->
-     try !(TypeHash.find node_univars ty) with Not_found -> TypeSet.empty
-@@ -913,7 +911,7 @@
-             if keep then ty.level else !current_level
-           else generic_level
-     in
--    if forget <> generic_level then newty2 forget Tvar else
-+    if forget <> generic_level then newty2 forget (Tvar None) else
-     let desc = ty.desc in
-     save_desc ty desc;
-     let t = newvar() in          (* Stub *)
-@@ -959,7 +957,7 @@
-                 | Tconstr _ ->
-                     if keep then save_desc more more.desc;
-                     copy more
--                | Tvar | Tunivar ->
-+                | Tvar _ | Tunivar _ ->
-                     save_desc more more.desc;
-                     if keep then more else newty more.desc
-                 |  _ -> assert false
-@@ -1117,7 +1115,7 @@
-     t
-   else try
-     let t, bound_t = List.assq ty visited in
--    let dl = if ty.desc = Tunivar then [] else diff_list bound bound_t in
-+    let dl = if is_Tunivar ty then [] else diff_list bound bound_t in
-     if dl <> [] && conflicts univars dl then raise Not_found;
-     t
-   with Not_found -> begin
-@@ -1134,14 +1132,14 @@
-           let row = row_repr row0 in
-           let more = repr row.row_more in
-           (* We shall really check the level on the row variable *)
--          let keep = more.desc = Tvar && more.level <> generic_level in
-+          let keep = is_Tvar more && more.level <> generic_level in
-           let more' = copy_rec more in
--          let fixed' = fixed && (repr more').desc = Tvar in
-+          let fixed' = fixed && is_Tvar (repr more') in
-           let row = copy_row copy_rec fixed' row keep more' in
-           Tvariant row
-       | Tpoly (t1, tl) ->
-           let tl = List.map repr tl in
--          let tl' = List.map (fun t -> newty Tunivar) tl in
-+          let tl' = List.map (fun t -> newty t.desc) tl in
-           let bound = tl @ bound in
-           let visited =
-             List.map2 (fun ty t -> ty,(t,bound)) tl tl' @ visited in
-@@ -1395,7 +1393,7 @@
- let rec full_expand env ty =
-   let ty = repr (expand_head env ty) in
-   match ty.desc with
--    Tobject (fi, {contents = Some (_, v::_)}) when (repr v).desc = Tvar ->
-+    Tobject (fi, {contents = Some (_, v::_)}) when is_Tvar (repr v) ->
-       newty2 ty.level (Tobject (fi, ref None))
-   | _ ->
-       ty
-@@ -1570,8 +1568,8 @@
-         true
-     then
-       match ty.desc with
--        Tunivar ->
--          if not (TypeSet.mem ty bound) then raise (Unify [ty, newgenvar()])
-+        Tunivar _ ->
-+          if not (TypeSet.mem ty bound) then raise (Unify [ty, newgenvar ()])
-       | Tpoly (ty, tyl) ->
-           let bound = List.fold_right TypeSet.add (List.map repr tyl) bound in
-           occur_rec bound  ty
-@@ -1620,7 +1618,7 @@
-         Tpoly (t, tl) ->
-           if List.exists (fun t -> TypeSet.mem (repr t) family) tl then ()
-           else occur t
--      | Tunivar ->
-+      | Tunivar _ ->
-           if TypeSet.mem t family then raise Occur
-       | Tconstr (_, [], _) -> ()
-       | Tconstr (p, tl, _) ->
-@@ -1784,7 +1782,7 @@
-               t
-           end;
-         iter_type_expr (iterator visited) ty
--    | Tvar -> 
-+    | Tvar _ -> 
-         let t = create_fresh_constr ty.level false in
-         link_type ty t
-     | _ ->
-@@ -1862,8 +1860,8 @@
-   let t2 = repr t2 in
-   if t1 == t2 then () else
-     match (t1.desc, t2.desc) with
--      | (Tvar, _)  
--      | (_, Tvar)  ->
-+      | (Tvar _, _)  
-+      | (_, Tvar _)  ->
-         fatal_error "types should not include variables"
-       | (Tconstr (p1, [], _), Tconstr (p2, [], _)) when Path.same p1 p2 ->
-         ()
-@@ -1877,7 +1875,7 @@
-           with Not_found ->
-               TypePairs.add type_pairs (t1', t2') ();
-               match (t1'.desc, t2'.desc) with
--                  (Tvar, Tvar) ->
-+                  (Tvar _, Tvar _) ->
-                     fatal_error "types should not include variables"
-                 | (Tarrow (l1, t1, u1, _), Tarrow (l2, t2, u2, _)) when l1 = l2
-                   || !Clflags.classic && not (is_optional l1 || is_optional l2) ->
-@@ -1903,7 +1901,7 @@
-                 | (Tpoly (t1, tl1), Tpoly (t2, tl2)) ->
-                   enter_poly env univar_pairs t1 tl1 t2 tl2
-                     (mcomp type_pairs subst env)
--                | (Tunivar, Tunivar) ->
-+                | (Tunivar _, Tunivar _) ->
-                   unify_univar t1' t2' !univar_pairs
-                 | (_, _) ->
-                   raise (Unify [])
-@@ -2048,21 +2046,21 @@
-   try
-     type_changed := true;
-     match (t1.desc, t2.desc) with
--      (Tvar, Tconstr _) when deep_occur t1 t2 ->
-+      (Tvar _, Tconstr _) when deep_occur t1 t2 ->
-         unify2 env t1 t2
--    | (Tconstr _, Tvar) when deep_occur t2 t1 ->
-+    | (Tconstr _, Tvar _) when deep_occur t2 t1 ->
-         unify2 env t1 t2
--    | (Tvar, _) ->
-+    | (Tvar _, _) ->
-         occur !env t1 t2; 
-         occur_univar !env t2;
-         link_type t1 t2;
-         update_level !env t1.level t2
--    | (_, Tvar) ->
-+    | (_, Tvar _) ->
-         occur !env t2 t1; 
-         occur_univar !env t1;
-         link_type t2 t1;
-         update_level !env t2.level t1
--    | (Tunivar, Tunivar) ->
-+    | (Tunivar _, Tunivar _) ->
-         unify_univar t1 t2 !univar_pairs;
-         update_level !env t1.level t2;
-         link_type t1 t2
-@@ -2104,7 +2102,7 @@
-   (* Assumes either [t1 == t1'] or [t2 != t2'] *)
-   let d1 = t1'.desc and d2 = t2'.desc in
-   match (d1, d2) with (* handle univars specially *)
--    (Tunivar, Tunivar) ->
-+    (Tunivar _, Tunivar _) ->
-       unify_univar t1' t2' !univar_pairs;
-       update_level !env t1'.level t2';
-       link_type t1' t2'
-@@ -2127,12 +2125,12 @@
-     | Old -> f () (* old_link was already called *)
-   in
-   match d1, d2 with
--  | Tvar,_ ->
-+  | Tvar _, _ ->
-       occur !env t1 t2';
-       occur_univar !env t2;
-       update_level !env t1'.level t2;
-       link_type t1' t2;      
--  | _, Tvar ->
-+  | _, Tvar _ ->
-       occur !env t2 t1';
-       occur_univar !env t1;
-       update_level !env t2'.level t1;
-@@ -2149,8 +2147,8 @@
-           add_type_equality t1' t2' end;
-       try
-         begin match (d1, d2) with
--        | (Tvar, _) 
--        | (_, Tvar) ->
-+        | (Tvar _, _) 
-+        | (_, Tvar _) ->
-             (* cases taken care of *)
-             assert false
-         | (Tarrow (l1, t1, u1, c1), Tarrow (l2, t2, u2, c2)) when l1 = l2
-@@ -2214,8 +2212,9 @@
-             (* Type [t2'] may have been instantiated by [unify_fields] *)
-             (* XXX One should do some kind of unification... *)
-             begin match (repr t2').desc with
--              Tobject (_, {contents = Some (_, va::_)})
--              when let va = repr va in List.mem va.desc [Tvar; Tunivar; Tnil] ->
-+              Tobject (_, {contents = Some (_, va::_)}) when
-+            (match (repr va).desc with
-+              Tvar _|Tunivar _|Tnil -> true | _ -> false) ->
-                 ()
-             | Tobject (_, nm2) ->
-                 set_name nm2 !nm1
-@@ -2290,16 +2289,32 @@
-     raise (Unify []);
-   List.iter2 (unify env) tl1 tl2
-+(* Build a fresh row variable for unification *)
-+and make_rowvar level use1 rest1 use2 rest2  =
-+  let set_name ty name =
-+    match ty.desc with
-+      Tvar None -> log_type ty; ty.desc <- Tvar name
-+    | _ -> ()
-+  in
-+  let name =
-+    match rest1.desc, rest2.desc with
-+      Tvar (Some _ as name1), Tvar (Some _ as name2) ->
-+        if rest1.level <= rest2.level then name1 else name2
-+    | Tvar (Some _ as name), _ ->
-+        if use2 then set_name rest2 name; name
-+    | _, Tvar (Some _ as name) ->
-+        if use1 then set_name rest2 name; name
-+    | _ -> None
-+  in
-+  if use1 then rest1 else
-+  if use2 then rest2 else newvar2 ?name level
-+
- and unify_fields env ty1 ty2 =          (* Optimization *)
-   let (fields1, rest1) = flatten_fields ty1
-   and (fields2, rest2) = flatten_fields ty2 in
-   let (pairs, miss1, miss2) = associate_fields fields1 fields2 in
-   let l1 = (repr ty1).level and l2 = (repr ty2).level in
--  let va =
--    if miss1 = [] then rest2
--    else if miss2 = [] then rest1
--    else newty2 (min l1 l2) Tvar
--  in
-+  let va = make_rowvar (min l1 l2) (miss2=[]) rest1 (miss1=[]) rest2 in
-   let d1 = rest1.desc and d2 = rest2.desc in
-   try
-     unify env (build_fields l1 miss1 va) rest2;
-@@ -2390,7 +2405,7 @@
-     let rm = row_more row in
-     if row.row_fixed then
-       if row0.row_more == rm then () else
--      if rm.desc = Tvar then link_type rm row0.row_more else
-+      if is_Tvar rm then link_type rm row0.row_more else
-       unify env rm row0.row_more
-     else
-       let ty = newty2 generic_level (Tvariant {row0 with row_fields = rest}) in
-@@ -2489,7 +2504,7 @@
-   let t1 = repr t1 and t2 = repr t2 in
-   if t1 == t2 then () else
-   match t1.desc with
--    Tvar ->
-+    Tvar _ ->
-       begin try
-         occur env t1 t2;
-         update_level env t1.level t2;
-@@ -2527,7 +2542,7 @@
- let rec filter_arrow env t l =
-   let t = expand_head_unif env t in
-   match t.desc with
--    Tvar ->
-+    Tvar _ ->
-       let lv = t.level in
-       let t1 = newvar2 lv and t2 = newvar2 lv in
-       let t' = newty2 lv (Tarrow (l, t1, t2, Cok)) in
-@@ -2543,7 +2558,7 @@
- let rec filter_method_field env name priv ty =
-   let ty = repr ty in
-   match ty.desc with
--    Tvar ->
-+    Tvar _ ->
-       let level = ty.level in
-       let ty1 = newvar2 level and ty2 = newvar2 level in
-       let ty' = newty2 level (Tfield (name,
-@@ -2570,7 +2585,7 @@
- let rec filter_method env name priv ty =
-   let ty = expand_head_unif env ty in
-   match ty.desc with
--    Tvar ->
-+    Tvar _ ->
-       let ty1 = newvar () in
-       let ty' = newobj ty1 in
-       update_level env ty.level ty';
-@@ -2606,7 +2621,7 @@
-   let rec occur ty =
-     let ty = repr ty in
-     if ty.level > level then begin
--      if ty.desc = Tvar && ty.level >= generic_level - 1 then raise Occur;
-+      if is_Tvar ty && ty.level >= generic_level - 1 then raise Occur;
-       ty.level <- pivot_level - ty.level;
-       match ty.desc with
-         Tvariant row when static_row row ->
-@@ -2636,7 +2651,7 @@
-   try
-     match (t1.desc, t2.desc) with
--      (Tvar, _) when may_instantiate inst_nongen t1 ->
-+      (Tvar _, _) when may_instantiate inst_nongen t1 ->
-         moregen_occur env t1.level t2;
-         occur env t1 t2;
-         link_type t1 t2
-@@ -2653,7 +2668,7 @@
-         with Not_found ->
-           TypePairs.add type_pairs (t1', t2') ();
-           match (t1'.desc, t2'.desc) with
--            (Tvar, _) when may_instantiate inst_nongen t1' ->
-+            (Tvar _, _) when may_instantiate inst_nongen t1' ->
-               moregen_occur env t1'.level t2;
-               link_type t1' t2
-           | (Tarrow (l1, t1, u1, _), Tarrow (l2, t2, u2, _)) when l1 = l2
-@@ -2684,7 +2699,7 @@
-           | (Tpoly (t1, tl1), Tpoly (t2, tl2)) ->
-               enter_poly env univar_pairs t1 tl1 t2 tl2
-                 (moregen inst_nongen type_pairs env)
--          | (Tunivar, Tunivar) ->
-+          | (Tunivar _, Tunivar _) ->
-               unify_univar t1' t2' !univar_pairs
-           | (_, _) ->
-               raise (Unify [])
-@@ -2725,7 +2740,7 @@
-   let row1 = row_repr row1 and row2 = row_repr row2 in
-   let rm1 = repr row1.row_more and rm2 = repr row2.row_more in
-   if rm1 == rm2 then () else
--  let may_inst = rm1.desc = Tvar && may_instantiate inst_nongen rm1 in
-+  let may_inst = is_Tvar rm1 && may_instantiate inst_nongen rm1 in
-   let r1, r2, pairs = merge_row_fields row1.row_fields row2.row_fields in
-   let r1, r2 =
-     if row2.row_closed then
-@@ -2735,9 +2750,9 @@
-   if r1 <> [] || row1.row_closed && (not row2.row_closed || r2 <> [])
-   then raise (Unify []);
-   begin match rm1.desc, rm2.desc with
--    Tunivar, Tunivar ->
-+    Tunivar _, Tunivar _ ->
-       unify_univar rm1 rm2 !univar_pairs
--  | Tunivar, _ | _, Tunivar ->
-+  | Tunivar _, _ | _, Tunivar _ ->
-       raise (Unify [])
-   | _ when static_row row1 -> ()
-   | _ when may_inst ->
-@@ -2828,13 +2843,13 @@
-   if ty.level >= lowest_level then begin
-     ty.level <- pivot_level - ty.level;
-     match ty.desc with
--    | Tvar ->
-+    | Tvar _ ->
-         if not (List.memq ty !vars) then vars := ty :: !vars
-     | Tvariant row ->
-         let row = row_repr row in
-         let more = repr row.row_more in
--        if more.desc = Tvar && not row.row_fixed then begin
--          let more' = newty2 more.level Tvar in
-+        if is_Tvar more && not row.row_fixed then begin
-+          let more' = newty2 more.level more.desc in
-           let row' = {row with row_fixed=true; row_fields=[]; row_more=more'}
-           in link_type more (newty2 ty.level (Tvariant row'))
-         end;
-@@ -2857,7 +2872,7 @@
-     (fun ty ->
-       let ty = expand_head env ty in
-       if List.memq ty !tyl then false else
--      (tyl := ty :: !tyl; ty.desc = Tvar))
-+      (tyl := ty :: !tyl; is_Tvar ty))
-     vars
- let matches env ty ty' =
-@@ -2901,7 +2916,7 @@
-   try
-     match (t1.desc, t2.desc) with
--      (Tvar, Tvar) when rename ->
-+      (Tvar _, Tvar _) when rename ->
-         begin try
-           normalize_subst subst;
-           if List.assq t1 !subst != t2 then raise (Unify [])
-@@ -2922,7 +2937,7 @@
-         with Not_found ->
-           TypePairs.add type_pairs (t1', t2') ();
-           match (t1'.desc, t2'.desc) with
--            (Tvar, Tvar) when rename ->
-+            (Tvar _, Tvar _) when rename ->
-               begin try
-                 normalize_subst subst;
-                 if List.assq t1' !subst != t2' then raise (Unify [])
-@@ -2956,7 +2971,7 @@
-           | (Tpoly (t1, tl1), Tpoly (t2, tl2)) ->
-               enter_poly env univar_pairs t1 tl1 t2 tl2
-                 (eqtype rename type_pairs subst env)
--          | (Tunivar, Tunivar) ->
-+          | (Tunivar _, Tunivar _) ->
-               unify_univar t1' t2' !univar_pairs
-           | (_, _) ->
-               raise (Unify [])
-@@ -3405,7 +3420,7 @@
- let rec build_subtype env visited loops posi level t =
-   let t = repr t in
-   match t.desc with
--    Tvar ->
-+    Tvar _ ->
-       if posi then
-         try
-           let t' = List.assq t loops in
-@@ -3454,13 +3469,13 @@
-              as this occurence might break the occur check.
-              XXX not clear whether this correct anyway... *)
-           if List.exists (deep_occur ty) tl1 then raise Not_found;
--          ty.desc <- Tvar;
-+          ty.desc <- Tvar None;
-           let t'' = newvar () in
-           let loops = (ty, t'') :: loops in
-           (* May discard [visited] as level is going down *)
-           let (ty1', c) =
-             build_subtype env [t'] loops posi (pred_enlarge level') ty1 in
--          assert (t''.desc = Tvar);
-+          assert (is_Tvar t'');
-           let nm =
-             if c > Equiv || deep_occur ty ty1' then None else Some(p,tl1) in
-           t''.desc <- Tobject (ty1', ref nm);
-@@ -3559,7 +3574,7 @@
-       let (t1', c) = build_subtype env visited loops posi level t1 in
-       if c > Unchanged then (newty (Tpoly(t1', tl)), c)
-       else (t, Unchanged)
--  | Tunivar | Tpackage _ ->
-+  | Tunivar _ | Tpackage _ ->
-       (t, Unchanged)
- let enlarge_type env ty =
-@@ -3623,7 +3638,7 @@
-   with Not_found ->
-     TypePairs.add subtypes (t1, t2) ();
-     match (t1.desc, t2.desc) with
--      (Tvar, _) | (_, Tvar) ->
-+      (Tvar _, _) | (_, Tvar _) ->
-         (trace, t1, t2, !univar_pairs)::cstrs
-     | (Tarrow(l1, t1, u1, _), Tarrow(l2, t2, u2, _)) when l1 = l2
-       || !Clflags.classic && not (is_optional l1 || is_optional l2) ->
-@@ -3659,7 +3674,7 @@
-     | (Tconstr(p1, tl1, _), _) when private_abbrev env p1 ->
-         subtype_rec env trace (expand_abbrev_opt env t1) t2 cstrs
-     | (Tobject (f1, _), Tobject (f2, _))
--      when (object_row f1).desc = Tvar && (object_row f2).desc = Tvar ->
-+      when is_Tvar (object_row f1) && is_Tvar (object_row f2) ->
-         (* Same row variable implies same object. *)
-         (trace, t1, t2, !univar_pairs)::cstrs
-     | (Tobject (f1, _), Tobject (f2, _)) ->
-@@ -3731,7 +3746,7 @@
-   match more1.desc, more2.desc with
-     Tconstr(p1,_,_), Tconstr(p2,_,_) when Path.same p1 p2 ->
-       subtype_rec env ((more1,more2)::trace) more1 more2 cstrs
--  | (Tvar|Tconstr _), (Tvar|Tconstr _)
-+  | (Tvar _|Tconstr _), (Tvar _|Tconstr _)
-     when row1.row_closed && r1 = [] ->
-       List.fold_left
-         (fun cstrs (_,f1,f2) ->
-@@ -3745,7 +3760,7 @@
-           | Rabsent, _ -> cstrs
-           | _ -> raise Exit)
-         cstrs pairs
--  | Tunivar, Tunivar
-+  | Tunivar _, Tunivar _
-     when row1.row_closed = row2.row_closed && r1 = [] && r2 = [] ->
-       let cstrs =
-         subtype_rec env ((more1,more2)::trace) more1 more2 cstrs in
-@@ -3789,19 +3804,19 @@
-   match ty.desc with
-     Tfield (s, k, t1, t2) ->
-       newty2 ty.level (Tfield (s, k, t1, unalias_object t2))
--  | Tvar | Tnil ->
-+  | Tvar _ | Tnil ->
-       newty2 ty.level ty.desc
--  | Tunivar ->
-+  | Tunivar _ ->
-       ty
-   | Tconstr _ ->
--      newty2 ty.level Tvar
-+      newvar2 ty.level
-   | _ ->
-       assert false
- let unalias ty =
-   let ty = repr ty in
-   match ty.desc with
--    Tvar | Tunivar ->
-+    Tvar _ | Tunivar _ ->
-       ty
-   | Tvariant row ->
-       let row = row_repr row in
-@@ -3875,7 +3890,7 @@
-               set_name nm None
-             else let v' = repr v in
-             begin match v'.desc with
--            | Tvar|Tunivar ->
-+            | Tvar _ | Tunivar _ ->
-                 if v' != v then set_name nm (Some (n, v' :: l))
-             | Tnil ->
-                 log_type ty; ty.desc <- Tconstr (n, l, ref Mnil)
-@@ -3917,7 +3932,7 @@
- let rec nondep_type_rec env id ty =
-   match ty.desc with
--    Tvar | Tunivar -> ty
-+    Tvar _ | Tunivar _ -> ty
-   | Tlink ty -> nondep_type_rec env id ty
-   | _ -> try TypeHash.find nondep_hash ty
-   with Not_found ->
-@@ -3987,7 +4002,7 @@
- let unroll_abbrev id tl ty =
-   let ty = repr ty and path = Path.Pident id in
--  if (ty.desc = Tvar) || (List.exists (deep_occur ty) tl)
-+  if is_Tvar ty || (List.exists (deep_occur ty) tl)
-   || is_object_type path then
-     ty
-   else
-Index: typing/printtyp.ml
-===================================================================
---- typing/printtyp.ml (リビジョン 11207)
-+++ typing/printtyp.ml (作業コピー)
-@@ -109,6 +109,10 @@
-   | Mcons (priv, p, t1, t2, rem) -> p :: list_of_memo rem
-   | Mlink rem -> list_of_memo !rem
-+let print_name ppf = function
-+    None -> fprintf ppf "None"
-+  | Some name -> fprintf ppf "\"%s\"" name
-+
- let visited = ref []
- let rec raw_type ppf ty =
-   let ty = safe_repr [] ty in
-@@ -119,7 +123,7 @@
-   end
- and raw_type_list tl = raw_list raw_type tl
- and raw_type_desc ppf = function
--    Tvar -> fprintf ppf "Tvar"
-+    Tvar name -> fprintf ppf "Tvar %a" print_name name
-   | Tarrow(l,t1,t2,c) ->
-       fprintf ppf "@[<hov1>Tarrow(%s,@,%a,@,%a,@,%s)@]"
-         l raw_type t1 raw_type t2
-@@ -143,7 +147,7 @@
-   | Tnil -> fprintf ppf "Tnil"
-   | Tlink t -> fprintf ppf "@[<1>Tlink@,%a@]" raw_type t
-   | Tsubst t -> fprintf ppf "@[<1>Tsubst@,%a@]" raw_type t
--  | Tunivar -> fprintf ppf "Tunivar"
-+  | Tunivar name -> fprintf ppf "Tunivar %a" print_name name
-   | Tpoly (t, tl) ->
-       fprintf ppf "@[<hov1>Tpoly(@,%a,@,%a)@]"
-         raw_type t
-@@ -189,28 +193,61 @@
- let names = ref ([] : (type_expr * string) list)
- let name_counter = ref 0
-+let named_vars = ref ([] : string list)
--let reset_names () = names := []; name_counter := 0
-+let reset_names () = names := []; name_counter := 0; named_vars := []
-+let add_named_var ty =
-+  match ty.desc with
-+    Tvar (Some name) | Tunivar (Some name) ->
-+      if List.mem name !named_vars then () else
-+      named_vars := name :: !named_vars
-+  | _ -> ()
--let new_name () =
-+let rec new_name () =
-   let name =
-     if !name_counter < 26
-     then String.make 1 (Char.chr(97 + !name_counter))
-     else String.make 1 (Char.chr(97 + !name_counter mod 26)) ^
-            string_of_int(!name_counter / 26) in
-   incr name_counter;
--  name
-+  if List.mem name !named_vars
-+  || List.exists (fun (_, name') -> name = name') !names
-+  then new_name ()
-+  else name
- let name_of_type t =
-+  (* We've already been through repr at this stage, so t is our representative
-+     of the union-find class. *)
-   try List.assq t !names with Not_found ->
--    let name = new_name () in
-+    let name =
-+      match t.desc with
-+        Tvar (Some name) | Tunivar (Some name) ->
-+          (* Some part of the type we've already printed has assigned another
-+           * unification variable to that name. We want to keep the name, so try
-+           * adding a number until we find a name that's not taken. *)
-+          let current_name = ref name in
-+          let i = ref 0 in
-+          while List.exists (fun (_, name') -> !current_name = name') !names do
-+            current_name := name ^ (string_of_int !i);
-+            i := !i + 1;
-+          done;
-+          !current_name
-+      | _ ->
-+          (* No name available, create a new one *)
-+          new_name ()
-+    in
-     names := (t, name) :: !names;
-     name
- let check_name_of_type t = ignore(name_of_type t)
-+let remove_names tyl =
-+  let tyl = List.map repr tyl in
-+  names := List.filter (fun (ty,_) -> not (List.memq ty tyl)) !names
-+
-+
- let non_gen_mark sch ty =
--  if sch && ty.desc = Tvar && ty.level <> generic_level then "_" else ""
-+  if sch && is_Tvar ty && ty.level <> generic_level then "_" else ""
- let print_name_of_type sch ppf t =
-   fprintf ppf "'%s%s" (non_gen_mark sch t) (name_of_type t)
-@@ -225,9 +262,13 @@
- let is_aliased ty = List.memq (proxy ty) !aliased
- let add_alias ty =
-   let px = proxy ty in
--  if not (is_aliased px) then aliased := px :: !aliased
-+  if not (is_aliased px) then begin
-+    aliased := px :: !aliased;
-+    add_named_var px
-+  end
-+
- let aliasable ty =
--  match ty.desc with Tvar | Tunivar | Tpoly _ -> false | _ -> true
-+  match ty.desc with Tvar _ | Tunivar _ | Tpoly _ -> false | _ -> true
- let namable_row row =
-   row.row_name <> None &&
-@@ -245,7 +286,7 @@
-   if List.memq px visited && aliasable ty then add_alias px else
-     let visited = px :: visited in
-     match ty.desc with
--    | Tvar -> ()
-+    | Tvar _ -> add_named_var ty
-     | Tarrow(_, ty1, ty2, _) ->
-         mark_loops_rec visited ty1; mark_loops_rec visited ty2
-     | Ttuple tyl -> List.iter (mark_loops_rec visited) tyl
-@@ -290,7 +331,7 @@
-     | Tpoly (ty, tyl) ->
-         List.iter (fun t -> add_alias t) tyl;
-         mark_loops_rec visited ty
--    | Tunivar -> ()
-+    | Tunivar _ -> add_named_var ty
- let mark_loops ty =
-   normalize_type Env.empty ty;
-@@ -322,7 +363,7 @@
-   let pr_typ () =
-     match ty.desc with
--    | Tvar ->
-+    | Tvar _ ->
-         Otyp_var (is_non_gen sch ty, name_of_type ty)
-     | Tarrow(l, ty1, ty2, _) ->
-         let pr_arrow l ty1 ty2 =
-@@ -387,16 +428,22 @@
-     | Tpoly (ty, []) ->
-         tree_of_typexp sch ty
-     | Tpoly (ty, tyl) ->
-+        (*let print_names () =
-+          List.iter (fun (_, name) -> prerr_string (name ^ " ")) !names;
-+          prerr_string "; " in *)
-         let tyl = List.map repr tyl in
--        (* let tyl = List.filter is_aliased tyl in *)
-         if tyl = [] then tree_of_typexp sch ty else begin
-           let old_delayed = !delayed in
-+          (* Make the names delayed, so that the real type is
-+             printed once when used as proxy *)
-           List.iter add_delayed tyl;
-           let tl = List.map name_of_type tyl in
-           let tr = Otyp_poly (tl, tree_of_typexp sch ty) in
-+          (* Forget names when we leave scope *)
-+          remove_names tyl;
-           delayed := old_delayed; tr
-         end
--    | Tunivar ->
-+    | Tunivar _ ->
-         Otyp_var (false, name_of_type ty)
-     | Tpackage (p, n, tyl) ->
-         Otyp_module (Path.name p, n, tree_of_typlist sch tyl)
-@@ -446,13 +493,13 @@
-   end
- and is_non_gen sch ty =
--    sch && ty.desc = Tvar && ty.level <> generic_level
-+    sch && is_Tvar ty && ty.level <> generic_level
- and tree_of_typfields sch rest = function
-   | [] ->
-       let rest =
-         match rest.desc with
--        | Tvar | Tunivar -> Some (is_non_gen sch rest)
-+        | Tvar _ | Tunivar _ -> Some (is_non_gen sch rest)
-         | Tconstr _ -> Some false
-         | Tnil -> None
-         | _ -> fatal_error "typfields (1)"
-@@ -564,7 +611,7 @@
-     let vari =
-       List.map2
-         (fun ty (co,cn,ct) ->
--          if abstr || (repr ty).desc <> Tvar then (co,cn) else (true,true))
-+          if abstr || not (is_Tvar (repr ty)) then (co,cn) else (true,true))
-         decl.type_params decl.type_variance
-     in
-     (Ident.name id,
-@@ -645,16 +692,18 @@
- let method_type (_, kind, ty) =
-   match field_kind_repr kind, repr ty with
--    Fpresent, {desc=Tpoly(ty, _)} -> ty
--  | _       , ty                  -> ty
-+    Fpresent, {desc=Tpoly(ty, tyl)} -> (ty, tyl)
-+  | _       , ty                    -> (ty, [])
- let tree_of_metho sch concrete csil (lab, kind, ty) =
-   if lab <> dummy_method then begin
-     let kind = field_kind_repr kind in
-     let priv = kind <> Fpresent in
-     let virt = not (Concr.mem lab concrete) in
--    let ty = method_type (lab, kind, ty) in
--    Ocsg_method (lab, priv, virt, tree_of_typexp sch ty) :: csil
-+    let (ty, tyl) = method_type (lab, kind, ty) in
-+    let tty = tree_of_typexp sch ty in
-+    remove_names tyl;
-+    Ocsg_method (lab, priv, virt, tty) :: csil
-   end
-   else csil
-@@ -662,7 +711,7 @@
-   | Tcty_constr (p, tyl, cty) ->
-       let sty = Ctype.self_type cty in
-       if List.memq (proxy sty) !visited_objects
--      || List.exists (fun ty -> (repr ty).desc <> Tvar) params
-+      || not (List.for_all is_Tvar params)
-       || List.exists (deep_occur sty) tyl
-       then prepare_class_type params cty
-       else List.iter mark_loops tyl
-@@ -675,7 +724,7 @@
-       let (fields, _) =
-         Ctype.flatten_fields (Ctype.object_fields sign.cty_self)
-       in
--      List.iter (fun met -> mark_loops (method_type met)) fields;
-+      List.iter (fun met -> mark_loops (fst (method_type met))) fields;
-       Vars.iter (fun _ (_, _, ty) -> mark_loops ty) sign.cty_vars
-   | Tcty_fun (_, ty, cty) ->
-       mark_loops ty;
-@@ -686,7 +735,7 @@
-   | Tcty_constr (p', tyl, cty) ->
-       let sty = Ctype.self_type cty in
-       if List.memq (proxy sty) !visited_objects
--      || List.exists (fun ty -> (repr ty).desc <> Tvar) params
-+      || not (List.for_all is_Tvar params)
-       then
-         tree_of_class_type sch params cty
-       else
-@@ -743,7 +792,7 @@
-   (match tree_of_typexp true param with
-     Otyp_var (_, s) -> s
-   | _ -> "?"),
--  if (repr param).desc = Tvar then (true, true) else variance
-+  if is_Tvar (repr param) then (true, true) else variance
- let tree_of_class_params params =
-   let tyl = tree_of_typlist true params in
-@@ -890,7 +939,7 @@
-   | {desc = Tvariant row} as t when (row_repr row).row_name <> None ->
-       newty2 t.level
-         (Tvariant {(row_repr row) with row_name = None;
--                   row_more = newty2 (row_more row).level Tvar})
-+                   row_more = newvar2 (row_more row).level})
-   | _ -> t
- let prepare_expansion (t, t') =
-@@ -913,9 +962,9 @@
- let has_explanation unif t3 t4 =
-   match t3.desc, t4.desc with
-     Tfield _, _ | _, Tfield _
--  | Tunivar, Tvar | Tvar, Tunivar
-+  | Tunivar _, Tvar _ | Tvar _, Tunivar _
-   | Tvariant _, Tvariant _ -> true
--  | Tconstr (p, _, _), Tvar | Tvar, Tconstr (p, _, _) ->
-+  | Tconstr (p, _, _), Tvar _ | Tvar _, Tconstr (p, _, _) ->
-       unif && min t3.level t4.level < Path.binding_time p
-   | _ -> false
-@@ -931,21 +980,21 @@
- let explanation unif t3 t4 ppf =
-   match t3.desc, t4.desc with
--  | Tfield _, Tvar | Tvar, Tfield _ ->
-+  | Tfield _, Tvar _ | Tvar _, Tfield _ ->
-       fprintf ppf "@,Self type cannot escape its class"
--  | Tconstr (p, tl, _), Tvar
-+  | Tconstr (p, tl, _), Tvar _
-     when unif && (tl = [] || t4.level < Path.binding_time p) ->
-       fprintf ppf
-         "@,@[The type constructor@;<1 2>%a@ would escape its scope@]"
-         path p
--  | Tvar, Tconstr (p, tl, _)
-+  | Tvar _, Tconstr (p, tl, _)
-     when unif && (tl = [] || t3.level < Path.binding_time p) ->
-       fprintf ppf
-         "@,@[The type constructor@;<1 2>%a@ would escape its scope@]"
-         path p
--  | Tvar, Tunivar | Tunivar, Tvar ->
-+  | Tvar _, Tunivar _ | Tunivar _, Tvar _ ->
-       fprintf ppf "@,The universal variable %a would escape its scope"
--        type_expr (if t3.desc = Tunivar then t3 else t4)
-+        type_expr (if is_Tunivar t3 then t3 else t4)
-   | Tfield (lab, _, _, _), _
-   | _, Tfield (lab, _, _, _) when lab = dummy_method ->
-       fprintf ppf
-Index: typing/includecore.ml
-===================================================================
---- typing/includecore.ml      (リビジョン 11207)
-+++ typing/includecore.ml      (作業コピー)
-@@ -61,7 +61,7 @@
-     Tvariant row1, Tvariant row2 when is_absrow env (Btype.row_more row2) ->
-       let row1 = Btype.row_repr row1 and row2 = Btype.row_repr row2 in
-       Ctype.equal env true (ty1::params1) (row2.row_more::params2) &&
--      (match row1.row_more with {desc=Tvar|Tconstr _} -> true | _ -> false) &&
-+      (match row1.row_more with {desc=Tvar _|Tconstr _} -> true | _ -> false) &&
-       let r1, r2, pairs =
-         Ctype.merge_row_fields row1.row_fields row2.row_fields in
-       (not row2.row_closed ||
-@@ -91,7 +91,7 @@
-       let (fields2,rest2) = Ctype.flatten_fields fi2 in
-       Ctype.equal env true (ty1::params1) (rest2::params2) &&
-       let (fields1,rest1) = Ctype.flatten_fields fi1 in
--      (match rest1 with {desc=Tnil|Tvar|Tconstr _} -> true | _ -> false) &&
-+      (match rest1 with {desc=Tnil|Tvar _|Tconstr _} -> true | _ -> false) &&
-       let pairs, miss1, miss2 = Ctype.associate_fields fields1 fields2 in
-       miss2 = [] &&
-       let tl1, tl2 =
-@@ -251,7 +251,7 @@
- let encode_val (mut, ty) rem =
-   begin match mut with
-     Asttypes.Mutable   -> Predef.type_unit
--  | Asttypes.Immutable -> Btype.newgenty Tvar
-+  | Asttypes.Immutable -> Btype.newgenvar ()
-   end
-   ::ty::rem
-Index: typing/subst.ml
-===================================================================
---- typing/subst.ml    (リビジョン 11207)
-+++ typing/subst.ml    (作業コピー)
-@@ -71,16 +71,19 @@
- let reset_for_saving () = new_id := -1
- let newpersty desc =
--  decr new_id; { desc = desc; level = generic_level; id = !new_id }
-+  decr new_id;
-+  { desc = desc; level = generic_level; id = !new_id }
- (* Similar to [Ctype.nondep_type_rec]. *)
- let rec typexp s ty =
-   let ty = repr ty in
-   match ty.desc with
--    Tvar | Tunivar ->
-+    Tvar _ | Tunivar _ ->
-       if s.for_saving || ty.id < 0 then
-+        let desc = match ty.desc with (* Tvar _ -> Tvar None *) | d -> d in
-         let ty' =
--          if s.for_saving then newpersty ty.desc else newty2 ty.level ty.desc
-+          if s.for_saving then newpersty desc
-+          else newty2 ty.level desc
-         in
-         save_desc ty ty.desc; ty.desc <- Tsubst ty'; ty'
-       else ty
-@@ -94,7 +97,7 @@
-     let desc = ty.desc in
-     save_desc ty desc;
-     (* Make a stub *)
--    let ty' = if s.for_saving then newpersty Tvar else newgenvar () in
-+    let ty' = if s.for_saving then newpersty (Tvar None) else newgenvar () in
-     ty.desc <- Tsubst ty';
-     ty'.desc <-
-       begin match desc with
-@@ -127,10 +130,10 @@
-                 match more.desc with
-                   Tsubst ty -> ty
-                 | Tconstr _ -> typexp s more
--                | Tunivar | Tvar ->
-+                | Tunivar _ | Tvar _ ->
-                     save_desc more more.desc;
-                     if s.for_saving then newpersty more.desc else
--                    if dup && more.desc <> Tunivar then newgenvar () else more
-+                    if dup && is_Tvar more then newgenty more.desc else more
-                 | _ -> assert false
-               in
-               (* Register new type first for recursion *)
-Index: typing/types.ml
-===================================================================
---- typing/types.ml    (リビジョン 11207)
-+++ typing/types.ml    (作業コピー)
-@@ -25,7 +25,7 @@
-     mutable id: int }
- and type_desc =
--    Tvar
-+    Tvar of string option
-   | Tarrow of label * type_expr * type_expr * commutable
-   | Ttuple of type_expr list
-   | Tconstr of Path.t * type_expr list * abbrev_memo ref
-@@ -35,7 +35,7 @@
-   | Tlink of type_expr
-   | Tsubst of type_expr         (* for copying *)
-   | Tvariant of row_desc
--  | Tunivar
-+  | Tunivar of string option
-   | Tpoly of type_expr * type_expr list
-   | Tpackage of Path.t * string list * type_expr list
-Index: ocamldoc/odoc_str.ml
-===================================================================
---- ocamldoc/odoc_str.ml       (リビジョン 11207)
-+++ ocamldoc/odoc_str.ml       (作業コピー)
-@@ -31,7 +31,7 @@
-   | Types.Tlink t2 | Types.Tsubst t2 -> is_arrow_type t2
-   | Types.Ttuple _
-   | Types.Tconstr _
--  | Types.Tvar | Types.Tunivar | Types.Tobject _ | Types.Tpoly _
-+  | Types.Tvar _ | Types.Tunivar _ | Types.Tobject _ | Types.Tpoly _
-   | Types.Tfield _ | Types.Tnil | Types.Tvariant _ | Types.Tpackage _ -> false
- let raw_string_of_type_list sep type_list =
-@@ -43,7 +43,7 @@
-     | Types.Tlink t2 | Types.Tsubst t2 -> need_parent t2
-     | Types.Tconstr _ ->
-         false
--    | Types.Tvar | Types.Tunivar | Types.Tobject _ | Types.Tpoly _
-+    | Types.Tvar _ | Types.Tunivar _ | Types.Tobject _ | Types.Tpoly _
-     | Types.Tfield _ | Types.Tnil | Types.Tvariant _ | Types.Tpackage _ -> false
-   in
-   let print_one_type variance t =
-Index: ocamldoc/odoc_value.ml
-===================================================================
---- ocamldoc/odoc_value.ml     (リビジョン 11207)
-+++ ocamldoc/odoc_value.ml     (作業コピー)
-@@ -77,13 +77,13 @@
-     | Types.Tsubst texp ->
-         iter texp
-     | Types.Tpoly (texp, _) -> iter texp
--    | Types.Tvar
-+    | Types.Tvar _
-     | Types.Ttuple _
-     | Types.Tconstr _
-     | Types.Tobject _
-     | Types.Tfield _
-     | Types.Tnil
--    | Types.Tunivar
-+    | Types.Tunivar _
-     | Types.Tpackage _
-     | Types.Tvariant _ ->
-         []
-Index: ocamldoc/odoc_misc.ml
-===================================================================
---- ocamldoc/odoc_misc.ml      (リビジョン 11207)
-+++ ocamldoc/odoc_misc.ml      (作業コピー)
-@@ -478,8 +478,8 @@
-     match t with
-     | Types.Tconstr(path, [ty], _) when Path.same path Predef.path_option -> ty.Types.desc
-     | Types.Tconstr _
--    | Types.Tvar
--    | Types.Tunivar
-+    | Types.Tvar _
-+    | Types.Tunivar _
-     | Types.Tpoly _
-     | Types.Tarrow _
-     | Types.Ttuple _
-Index: bytecomp/typeopt.ml
-===================================================================
---- bytecomp/typeopt.ml        (リビジョン 11207)
-+++ bytecomp/typeopt.ml        (作業コピー)
-@@ -50,7 +50,7 @@
- let array_element_kind env ty =
-   match scrape env ty with
--  | Tvar | Tunivar ->
-+  | Tvar _ | Tunivar _ ->
-       Pgenarray
-   | Tconstr(p, args, abbrev) ->
-       if Path.same p Predef.path_int || Path.same p Predef.path_char then
-Index: bytecomp/translcore.ml
-===================================================================
---- bytecomp/translcore.ml     (リビジョン 11207)
-+++ bytecomp/translcore.ml     (作業コピー)
-@@ -780,12 +780,13 @@
-           begin match e.exp_type.desc with
-           (* the following may represent a float/forward/lazy: need a
-              forward_tag *)
--          | Tvar | Tlink _ | Tsubst _ | Tunivar
-+          | Tvar _ | Tlink _ | Tsubst _ | Tunivar _
-           | Tpoly(_,_) | Tfield(_,_,_,_) ->
-               Lprim(Pmakeblock(Obj.forward_tag, Immutable), [transl_exp e])
-           (* the following cannot be represented as float/forward/lazy:
-              optimize *)
--          | Tarrow(_,_,_,_) | Ttuple _ | Tpackage _ | Tobject(_,_) | Tnil | Tvariant _
-+          | Tarrow(_,_,_,_) | Ttuple _ | Tpackage _ | Tobject(_,_) | Tnil
-+          | Tvariant _
-               -> transl_exp e
-           (* optimize predefined types (excepted float) *)
-           | Tconstr(_,_,_) ->
-Index: testsuite/tests/lib-hashtbl/htbl.ml
-===================================================================
---- testsuite/tests/lib-hashtbl/htbl.ml        (リビジョン 11207)
-+++ testsuite/tests/lib-hashtbl/htbl.ml        (作業コピー)
-@@ -76,7 +76,7 @@
-   struct
-     type key = M.key
-     type 'a t = (key, 'a) Hashtbl.t
--    let create = Hashtbl.create
-+    let create s = Hashtbl.create s
-     let clear = Hashtbl.clear
-     let copy = Hashtbl.copy
-     let add = Hashtbl.add
-Index: toplevel/genprintval.ml
-===================================================================
---- toplevel/genprintval.ml    (リビジョン 11207)
-+++ toplevel/genprintval.ml    (作業コピー)
-@@ -180,7 +180,7 @@
-           find_printer env ty obj
-         with Not_found ->
-           match (Ctype.repr ty).desc with
--          | Tvar ->
-+          | Tvar _ | Tunivar _ ->
-               Oval_stuff "<poly>"
-           | Tarrow(_, ty1, ty2, _) ->
-               Oval_stuff "<fun>"
-@@ -327,8 +327,6 @@
-               fatal_error "Printval.outval_of_value"
-           | Tpoly (ty, _) ->
-               tree_of_val (depth - 1) obj ty
--          | Tunivar ->
--              Oval_stuff "<poly>"
-           | Tpackage _ ->
-               Oval_stuff "<module>"
-         end
-Index: otherlibs/labltk/browser/searchid.ml
-===================================================================
---- otherlibs/labltk/browser/searchid.ml       (リビジョン 11207)
-+++ otherlibs/labltk/browser/searchid.ml       (作業コピー)
-@@ -101,7 +101,7 @@
- let rec equal ~prefix t1 t2 =
-   match (repr t1).desc, (repr t2).desc with
--    Tvar, Tvar -> true
-+    Tvar _, Tvar _ -> true
-   | Tvariant row1, Tvariant row2 ->
-       let row1 = row_repr row1 and row2 = row_repr row2 in
-       let fields1 = filter_row_fields false row1.row_fields
-@@ -144,7 +144,7 @@
- let rec included ~prefix t1 t2 =
-   match (repr t1).desc, (repr t2).desc with
--    Tvar, _ -> true
-+    Tvar _, _ -> true
-   | Tvariant row1, Tvariant row2 ->
-       let row1 = row_repr row1 and row2 = row_repr row2 in
-       let fields1 = filter_row_fields false row1.row_fields
diff --git a/experimental/garrigue/variable-names.ml b/experimental/garrigue/variable-names.ml
deleted file mode 100644 (file)
index f3c7771..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-let f (x : < a:int; .. > as 'me1) = (x : < b:bool; .. > as 'me2);;
-let f (x : < a:int; .. > as 'me1) = (x : < a:int; b:bool; .. > as 'me2);;
-let f (x : [> `A of int] as 'me1) = (x : [> `B of bool] as 'me2);;
-let f (x : [> `A of int] as 'me1) = (x : [`A of int | `B of 'me2] as 'me2);;
diff --git a/experimental/garrigue/varunion.ml b/experimental/garrigue/varunion.ml
deleted file mode 100644 (file)
index 30a410f..0000000
+++ /dev/null
@@ -1,435 +0,0 @@
-(* cvs update -r varunion parsing typing bytecomp toplevel *)
-
-type t = private [> ];;
-type u = private [> ] ~ [t];;
-type v = [t | u];;
-let f x = (x : t :> v);;
-
-(* bad *)
-module Mix(X: sig type t = private [> ] end)
-    (Y: sig type t = private [> ] end) =
-  struct type t = [X.t | Y.t] end;;
-
-(* bad *)
-module Mix(X: sig type t = private [> `A of int ] end)
-    (Y: sig type t = private [> `A of bool] ~ [X.t] end) =
-  struct type t = [X.t | Y.t] end;;
-
-(* ok *)
-module Mix(X: sig type t = private [> `A of int ] end)
-    (Y: sig type t = private [> `A of int] ~ [X.t] end) =
-  struct type t = [X.t | Y.t] end;;
-
-(* bad *)
-module Mix(X: sig type t = private [> `A of int ] end)
-    (Y: sig type t = private [> `B of bool] ~ [X.t] end) =
-  struct type t = [X.t | Y.t] end;;
-
-type 'a t = private [> `L of 'a] ~ [`L];;
-
-(* ok *)
-module Mix(X: sig type t = private [> `A of int ] ~ [`B] end)
-    (Y: sig type t = private [> `B of bool] ~ [X.t] end) =
-  struct type t = [X.t | Y.t] let is_t = function #t -> true | _ -> false end;;
-
-module Mix(X: sig type t = private [> `A of int ] ~ [`B] end)
-    (Y: sig type t = private [> `B of bool] ~ [X.t] end) =
-  struct
-    type t = [X.t | Y.t]
-    let which = function #X.t -> `X | #Y.t -> `Y
-  end;;
-
-module Mix(I: sig type t = private [> ] ~ [`A;`B] end)
-    (X: sig type t = private [> I.t | `A of int ] ~ [`B] end)
-    (Y: sig type t = private [> I.t | `B of bool] ~ [X.t] end) =
-  struct
-    type t = [X.t | Y.t]
-    let which = function #X.t -> `X | #Y.t -> `Y
-  end;;
-
-(* ok *)
-module M =
-  Mix(struct type t = [`C of char] end)
-    (struct type t = [`A of int | `C of char] end)
-    (struct type t = [`B of bool | `C of char] end);;
-
-(* bad *)
-module M =
-  Mix(struct type t = [`B of bool] end)
-    (struct type t = [`A of int | `B of bool] end)
-    (struct type t = [`B of bool | `C of char] end);;
-
-(* ok *)
-module M1 = struct type t = [`A of int | `C of char] end
-module M2 = struct type t = [`B of bool | `C of char] end
-module I = struct type t = [`C of char] end
-module M = Mix(I)(M1)(M2) ;;
-
-let c = (`C 'c' : M.t) ;;
-
-module M(X : sig type t = private [> `A] end) = 
-  struct let f (#X.t as x) = x end;;
-
-(* code generation *)
-type t = private [> `A ] ~ [`B];;
-match `B with #t -> 1 | `B -> 2;;
-
-module M : sig type t = private [> `A of int | `B] ~ [`C] end =
-  struct type t = [`A of int | `B | `D of bool] end;;
-let f = function (`C | #M.t) -> 1+1 ;;
-let f = function (`A _ | `B #M.t) -> 1+1 ;;
-
-(* expression *)
-module Mix(X:sig type t = private [> ] val show: t -> string end)
-    (Y:sig type t = private [> ] ~ [X.t] val show: t -> string end) =
-  struct
-    type t = [X.t | Y.t]
-    let show : t -> string = function
-        #X.t as x -> X.show x
-      | #Y.t as y -> Y.show y
-  end;;
-
-module EStr = struct
-  type t = [`Str of string]
-  let show (`Str s) = s
-end
-module EInt = struct
-  type t = [`Int of int]
-  let show (`Int i) = string_of_int i
-end
-module M = Mix(EStr)(EInt);;
-
-module type T = sig type t = private [> ] val show: t -> string end
-module Mix(X:T)(Y:T with type t = private [> ] ~ [X.t]) :
-    T with type t = [X.t | Y.t] =
-  struct
-    type t = [X.t | Y.t]
-    let show = function
-        #X.t as x -> X.show x
-      | #Y.t as y -> Y.show y
-  end;;
-module M = Mix(EStr)(EInt);;
-
-(* deep *)
-module M : sig type t = private [> `A] end = struct type t = [`A] end
-module M' : sig type t = private [> ] end = struct type t = [M.t | `A] end;;
-
-(* bad *)
-type t = private [> ]
-type u = private [> `A of int] ~ [t] ;;
-
-(* ok *)
-type t = private [> `A of int]
-type u = private [> `A of int] ~ [t] ;;
-
-module F(X: sig
-  type t = private [> ] ~ [`A;`B;`C;`D]
-  type u = private [> `A|`B|`C] ~ [t; `D]
-end) : sig type v = private [< X.t | X.u | `D] end = struct
-  open X
-  let f = function #u -> 1 | #t -> 2 | `D -> 3
-  let g = function #u|#t|`D -> 2 
-  type v = [t|u|`D]
-end
-
-(* ok *)
-module M = struct type t = private [> `A] end;;
-module M' : sig type t = private [> ] ~ [`A] end = M;;
-
-(* ok *)
-module type T = sig type t = private [> ] ~ [`A] end;;
-module type T' = T with type t = private [> `A];;
-
-(* ok *)
-type t = private [> ] ~ [`A]
-let f = function `A x -> x | #t -> 0
-type t' = private [< `A of int | t];;
-
-(* should be ok *)
-module F(X:sig end) :
-    sig type t = private [> ] type u = private [> ] ~ [t] end =
-  struct type t = [ `A] type u = [`B] end
-module M = F(String)
-let f = function #M.t -> 1 | #M.u -> 2
-let f = function #M.t -> 1 | _ -> 2
-type t = [M.t | M.u]
-let f = function #t -> 1 | _ -> 2;;
-module G(X : sig type t = private [> ] type u = private [> ] ~ [t] end) =
-  struct let f = function #X.t -> 1 | _ -> 2 end;;
-module M1 = G(struct module N = F(String) type t = N.t type u = N.u end) ;;
-module M1 = G(struct type t = M.t type u = M.u end) ;;
-(* bad *)
-let f = function #F(String).t -> 1 | _ -> 2;;
-type t = [F(String).t | M.u]
-let f = function #t -> 1 | _ -> 2;;
-module N : sig type t = private [> ] end =
-  struct type t = [F(String).t | M.u] end;;
-
-(* compatibility improvement *)
-type a = [`A of int | `B]
-type b = [`A of bool | `B]
-type c = private [> ] ~ [a;b]
-let f = function #c -> 1 | `A x -> truncate x
-type d = private [> ] ~ [a]
-let g = function #d -> 1 | `A x -> truncate x;;
-
-
-(* Expression Problem: functorial form *)
-
-type num = [ `Num of int ]
-
-module type Exp = sig
-  type t = private [> num]
-  val eval : t -> t
-  val show : t -> string
-end
-
-module Num(X : Exp) = struct
-  type t = num
-  let eval (`Num _ as x) : X.t = x
-  let show (`Num n) = string_of_int n
-end
-
-type 'a add = [ `Add of 'a * 'a ]
-
-module Add(X : Exp with type t = private [> num | 'a add] as 'a) = struct
-  type t = X.t add
-  let show (`Add(e1, e2) : t) = "("^ X.show e1 ^"+"^ X.show e2 ^")"
-  let eval (`Add(e1, e2) : t) =
-    let e1 = X.eval e1 and e2 = X.eval e2 in
-    match e1, e2 with
-      `Num n1, `Num n2 -> `Num (n1+n2)
-    | `Num 0, e | e, `Num 0 -> e
-    | e12 -> `Add e12
-end 
-
-type 'a mul = [`Mul of 'a * 'a]
-
-module Mul(X : Exp with type t = private [> num | 'a mul] as 'a) = struct
-  type t = X.t mul
-  let show (`Mul(e1, e2) : t) = "("^ X.show e1 ^"*"^ X.show e2 ^")"
-  let eval (`Mul(e1, e2) : t) =
-    let e1 = X.eval e1 and e2 = X.eval e2 in
-    match e1, e2 with
-      `Num n1, `Num n2 -> `Num (n1*n2)
-    | `Num 0, e | e, `Num 0 -> `Num 0
-    | `Num 1, e | e, `Num 1 -> e
-    | e12 -> `Mul e12
-end
-
-module Ext(X : sig type t = private [> ] end)(Y : sig type t end) = struct
-  module type S =
-    sig
-      type t = private [> ] ~ [ X.t ]
-      val eval : t -> Y.t
-      val show : t -> string
-    end
-end
-
-module Dummy = struct type t = [`Dummy] end
-
-module Mix(E : Exp)(E1 : Ext(Dummy)(E).S)(E2 : Ext(E1)(E).S) =
-  struct
-    type t = [E1.t | E2.t]
-    let eval = function
-        #E1.t as x -> E1.eval x
-      | #E2.t as x -> E2.eval x
-    let show = function
-        #E1.t as x -> E1.show x
-      | #E2.t as x -> E2.show x
-  end
-
-module rec EAdd : (Exp with type t = [num | EAdd.t add]) =
-    Mix(EAdd)(Num(EAdd))(Add(EAdd))
-
-(* A bit heavy: one must pass E to everybody *)
-module rec E : Exp with type t = [num | E.t add | E.t mul] =
-    Mix(E)(Mix(E)(Num(E))(Add(E)))(Mul(E))
-
-let e = E.eval (`Add(`Mul(`Num 2,`Num 3),`Num 1))
-
-(* Alternatives *)
-(* Direct approach, no need of Mix *)
-module rec E : (Exp with type t = [num | E.t add | E.t mul]) =
-  struct
-    module E1 = Num(E)
-    module E2 = Add(E)
-    module E3 = Mul(E)
-    type t = E.t
-    let show = function
-      | #num as x -> E1.show x
-      | #add as x -> E2.show x
-      | #mul as x -> E3.show x
-    let eval = function
-      | #num as x -> E1.eval x
-      | #add as x -> E2.eval x
-      | #mul as x -> E3.eval x
-  end
-
-(* Do functor applications in Mix *)
-module type T = sig type t = private [> ] end
-module type Tnum = sig type t = private [> num] end
-
-module Ext(E : Tnum) = struct
-  module type S = functor (Y : Exp with type t = E.t) ->
-    sig
-      type t = private [> num]
-      val eval : t -> Y.t
-      val show : t -> string
-    end
-end
-
-module Ext'(E : Tnum)(X : T) = struct
-  module type S = functor (Y : Exp with type t = E.t) ->
-    sig
-      type t = private [> ] ~ [ X.t ]
-      val eval : t -> Y.t
-      val show : t -> string
-    end
-end
-
-module Mix(E : Exp)(F1 : Ext(E).S)(F2 : Ext'(E)(F1(E)).S) =
-  struct
-    module E1 = F1(E)
-    module E2 = F2(E)
-    type t = [E1.t | E2.t]
-    let eval = function
-        #E1.t as x -> E1.eval x
-      | #E2.t as x -> E2.eval x
-    let show = function
-        #E1.t as x -> E1.show x
-      | #E2.t as x -> E2.show x
-  end
-
-module Join(E : Exp)(F1 : Ext(E).S)(F2 : Ext'(E)(F1(E)).S)
-    (E' : Exp with type t = E.t) =
-  Mix(E)(F1)(F2)
-
-module rec EAdd : (Exp with type t = [num | EAdd.t add]) =
-  Mix(EAdd)(Num)(Add)
-
-module rec EMul : (Exp with type t = [num | EMul.t mul]) =
-  Mix(EMul)(Num)(Mul)
-
-module rec E : (Exp with type t = [num | E.t add | E.t mul]) =
-  Mix(E)(Join(E)(Num)(Add))(Mul)
-
-(* Linear extension by the end: not so nice *)
-module LExt(X : T) = struct
-  module type S =
-    sig
-      type t
-      val eval : t -> X.t
-      val show : t -> string
-    end
-end
-module LNum(E: Exp)(X : LExt(E).S with type t = private [> ] ~ [num]) =
-  struct
-    type t = [num | X.t]
-    let show = function
-        `Num n -> string_of_int n
-      | #X.t as x -> X.show x
-    let eval = function
-        #num as x -> x
-      | #X.t as x -> X.eval x
-  end
-module LAdd(E : Exp with type t = private [> num | 'a add] as 'a)
-    (X : LExt(E).S with type t = private [> ] ~ [add]) =
-  struct
-    type t = [E.t add | X.t]
-    let show = function
-        `Add(e1,e2) -> "("^ E.show e1 ^"+"^ E.show e2 ^")"
-      | #X.t as x -> X.show x
-    let eval = function
-        `Add(e1,e2) ->
-          let e1 = E.eval e1 and e2 = E.eval e2 in
-          begin match e1, e2 with
-            `Num n1, `Num n2 -> `Num (n1+n2)
-          | `Num 0, e | e, `Num 0 -> e
-          | e12 -> `Add e12
-          end
-      | #X.t as x -> X.eval x
-  end
-module LEnd = struct
-  type t = [`Dummy]
-  let show `Dummy = ""
-  let eval `Dummy = `Dummy
-end
-module rec L : Exp with type t = [num | L.t add | `Dummy] =
-    LAdd(L)(LNum(L)(LEnd))
-
-(* Back to first form, but add map *)
-
-module Num(X : Exp) = struct
-  type t = num
-  let map f x = x
-  let eval1 (`Num _ as x) : X.t = x
-  let show (`Num n) = string_of_int n
-end
-
-module Add(X : Exp with type t = private [> num | 'a add] as 'a) = struct
-  type t = X.t add
-  let show (`Add(e1, e2) : t) = "("^ X.show e1 ^"+"^ X.show e2 ^")"
-  let map f (`Add(e1, e2) : t) = `Add(f e1, f e2)
-  let eval1 (`Add(e1, e2) as e : t) =
-    match e1, e2 with
-      `Num n1, `Num n2 -> `Num (n1+n2)
-    | `Num 0, e | e, `Num 0 -> e
-    | _ -> e
-end 
-
-module Mul(X : Exp with type t = private [> num | 'a mul] as 'a) = struct
-  type t = X.t mul
-  let show (`Mul(e1, e2) : t) = "("^ X.show e1 ^"*"^ X.show e2 ^")"
-  let map f (`Mul(e1, e2) : t) = `Mul(f e1, f e2)
-  let eval1 (`Mul(e1, e2) as e : t) =
-    match e1, e2 with
-      `Num n1, `Num n2 -> `Num (n1*n2)
-    | `Num 0, e | e, `Num 0 -> `Num 0
-    | `Num 1, e | e, `Num 1 -> e
-    | _ -> e
-end
-
-module Ext(X : sig type t = private [> ] end)(Y : sig type t end) = struct
-  module type S =
-    sig
-      type t = private [> ] ~ [ X.t ]
-      val map  : (Y.t -> Y.t) -> t -> t
-      val eval1 : t -> Y.t
-      val show : t -> string
-    end
-end
-
-module Mix(E : Exp)(E1 : Ext(Dummy)(E).S)(E2 : Ext(E1)(E).S) =
-  struct
-    type t = [E1.t | E2.t]
-    let map f = function
-        #E1.t as x -> (E1.map f x : E1.t :> t)
-      | #E2.t as x -> (E2.map f x : E2.t :> t)
-    let eval1 = function
-        #E1.t as x -> E1.eval1 x
-      | #E2.t as x -> E2.eval1 x
-    let show = function
-        #E1.t as x -> E1.show x
-      | #E2.t as x -> E2.show x
-  end
-
-module type ET = sig
-  type t
-  val map  : (t -> t) -> t -> t
-  val eval1 : t -> t
-  val show : t -> string
-end
-
-module Fin(E : ET) = struct
-  include E
-  let rec eval e = eval1 (map eval e)
-end
-
-module rec EAdd : (Exp with type t = [num | EAdd.t add]) =
-    Fin(Mix(EAdd)(Num(EAdd))(Add(EAdd)))
-
-module rec E : Exp with type t = [num | E.t add | E.t mul] =
-    Fin(Mix(E)(Mix(E)(Num(E))(Add(E)))(Mul(E)))
-
-let e = E.eval (`Add(`Mul(`Num 2,`Num 3),`Num 1))
diff --git a/experimental/garrigue/with-module-type.diffs b/experimental/garrigue/with-module-type.diffs
deleted file mode 100644 (file)
index c955b1f..0000000
+++ /dev/null
@@ -1,182 +0,0 @@
-Index: parsing/parser.mly
-===================================================================
---- parsing/parser.mly (revision 12005)
-+++ parsing/parser.mly (working copy)
-@@ -1504,6 +1504,10 @@
-       { ($2, Pwith_module $4) }
-   | MODULE mod_longident COLONEQUAL mod_ext_longident
-       { ($2, Pwith_modsubst $4) }
-+  | MODULE TYPE mod_longident EQUAL module_type
-+      { ($3, Pwith_modtype $5) }
-+  | MODULE TYPE mod_longident COLONEQUAL module_type
-+      { ($3, Pwith_modtypesubst $5) }
- ;
- with_type_binder:
-     EQUAL          { Public }
-Index: parsing/parsetree.mli
-===================================================================
---- parsing/parsetree.mli      (revision 12005)
-+++ parsing/parsetree.mli      (working copy)
-@@ -239,6 +239,8 @@
-   | Pwith_module of Longident.t
-   | Pwith_typesubst of type_declaration
-   | Pwith_modsubst of Longident.t
-+  | Pwith_modtype of module_type
-+  | Pwith_modtypesubst of module_type
- (* Value expressions for the module language *)
-Index: parsing/printast.ml
-===================================================================
---- parsing/printast.ml        (revision 12005)
-+++ parsing/printast.ml        (working copy)
-@@ -575,6 +575,12 @@
-       type_declaration (i+1) ppf td;
-   | Pwith_module (li) -> line i ppf "Pwith_module %a\n" fmt_longident li;
-   | Pwith_modsubst (li) -> line i ppf "Pwith_modsubst %a\n" fmt_longident li;
-+  | Pwith_modtype (mty) ->
-+      line i ppf "Pwith_modtype\n";
-+      module_type (i+1) ppf mty;
-+  | Pwith_modtypesubst (mty) ->
-+      line i ppf "Pwith_modtype\n";
-+      module_type (i+1) ppf mty;
- and module_expr i ppf x =
-   line i ppf "module_expr %a\n" fmt_location x.pmod_loc;
-Index: typing/typemod.ml
-===================================================================
---- typing/typemod.ml  (revision 12005)
-+++ typing/typemod.ml  (working copy)
-@@ -74,6 +74,8 @@
-   : (Env.t -> Parsetree.module_expr -> module_type) ref
-   = ref (fun env m -> assert false)
-+let transl_modtype_fwd = ref (fun env m -> assert false)
-+
- (* Merge one "with" constraint in a signature *)
- let rec add_rec_types env = function
-@@ -163,6 +165,19 @@
-         ignore(Includemod.modtypes env newmty mty);
-         real_id := Some id;
-         make_next_first rs rem
-+    | (Tsig_modtype(id, mtd) :: rem, [s], Pwith_modtype pmty)
-+      when Ident.name id = s ->
-+        let mty = !transl_modtype_fwd initial_env pmty in
-+        let mtd' = Tmodtype_manifest mty in
-+        Includemod.modtype_declarations env id mtd' mtd;
-+        Tsig_modtype(id, mtd') :: rem
-+    | (Tsig_modtype(id, mtd) :: rem, [s], Pwith_modtypesubst pmty)
-+      when Ident.name id = s ->
-+        let mty = !transl_modtype_fwd initial_env pmty in
-+        let mtd' = Tmodtype_manifest mty in
-+        Includemod.modtype_declarations env id mtd' mtd;
-+        real_id := Some id;
-+        rem
-     | (Tsig_module(id, mty, rs) :: rem, s :: namelist, _)
-       when Ident.name id = s ->
-         let newsg = merge env (extract_sig env loc mty) namelist None in
-@@ -200,6 +215,12 @@
-         let (path, _) = Typetexp.find_module initial_env loc lid in
-         let sub = Subst.add_module id path Subst.identity in
-         Subst.signature sub sg
-+    | [s], Pwith_modtypesubst pmty ->
-+        let id =
-+          match !real_id with None -> assert false | Some id -> id in
-+        let mty = !transl_modtype_fwd initial_env pmty in
-+        let sub = Subst.add_modtype id mty Subst.identity in
-+        Subst.signature sub sg
-     | _ ->
-         sg
-   with Includemod.Error explanation ->
-@@ -499,6 +520,8 @@
-   check_recmod_typedecls env2 sdecls dcl2;
-   (dcl2, env2)
-+let () = transl_modtype_fwd := transl_modtype
-+
- (* Try to convert a module expression to a module path. *)
- exception Not_a_path
-Index: typing/includemod.ml
-===================================================================
---- typing/includemod.ml       (revision 12005)
-+++ typing/includemod.ml       (working copy)
-@@ -326,10 +326,10 @@
- (* Hide the context and substitution parameters to the outside world *)
--let modtypes env mty1 mty2 = modtypes env [] Subst.identity mty1 mty2
--let signatures env sig1 sig2 = signatures env [] Subst.identity sig1 sig2
--let type_declarations env id decl1 decl2 =
--  type_declarations env [] Subst.identity id decl1 decl2
-+let modtypes env = modtypes env [] Subst.identity
-+let signatures env = signatures env [] Subst.identity
-+let type_declarations env = type_declarations env [] Subst.identity
-+let modtype_declarations env = modtype_infos env [] Subst.identity
- (* Error report *)
-Index: typing/includemod.mli
-===================================================================
---- typing/includemod.mli      (revision 12005)
-+++ typing/includemod.mli      (working copy)
-@@ -23,6 +23,8 @@
- val compunit: string -> signature -> string -> signature -> module_coercion
- val type_declarations:
-       Env.t -> Ident.t -> type_declaration -> type_declaration -> unit
-+val modtype_declarations:
-+      Env.t -> Ident.t -> modtype_declaration -> modtype_declaration -> unit
- type symptom =
-     Missing_field of Ident.t
-Index: testsuite/tests/typing-modules/Test.ml.reference
-===================================================================
---- testsuite/tests/typing-modules/Test.ml.reference   (revision 12005)
-+++ testsuite/tests/typing-modules/Test.ml.reference   (working copy)
-@@ -6,4 +6,12 @@
- #       type -'a t
- class type c = object method m : [ `A ] t end
- #   module M : sig val v : (#c as 'a) -> 'a end
-+#       module type S = sig module type T module F : functor (X : T) -> T end
-+# module type T0 = sig type t end
-+# module type S1 = sig module type T = T0 module F : functor (X : T) -> T end
-+# module type S2 = sig module F : functor (X : T0) -> T0 end
-+# module type S3 =
-+  sig
-+    module F : functor (X : sig type t = int end) -> sig type t = int end
-+  end
- # 
-Index: testsuite/tests/typing-modules/Test.ml.principal.reference
-===================================================================
---- testsuite/tests/typing-modules/Test.ml.principal.reference (revision 12005)
-+++ testsuite/tests/typing-modules/Test.ml.principal.reference (working copy)
-@@ -6,4 +6,12 @@
- #       type -'a t
- class type c = object method m : [ `A ] t end
- #   module M : sig val v : (#c as 'a) -> 'a end
-+#       module type S = sig module type T module F : functor (X : T) -> T end
-+# module type T0 = sig type t end
-+# module type S1 = sig module type T = T0 module F : functor (X : T) -> T end
-+# module type S2 = sig module F : functor (X : T0) -> T0 end
-+# module type S3 =
-+  sig
-+    module F : functor (X : sig type t = int end) -> sig type t = int end
-+  end
- # 
-Index: testsuite/tests/typing-modules/Test.ml
-===================================================================
---- testsuite/tests/typing-modules/Test.ml     (revision 12005)
-+++ testsuite/tests/typing-modules/Test.ml     (working copy)
-@@ -9,3 +9,11 @@
- class type c = object method m : [ `A ] t end;;
- module M : sig val v : (#c as 'a) -> 'a end =
-   struct let v x = ignore (x :> c); x end;;
-+
-+(* with module type *)
-+
-+module type S = sig module type T module F(X:T) : T end;;
-+module type T0 = sig type t end;;
-+module type S1 = S with module type T = T0;;
-+module type S2 = S with module type T := T0;;
-+module type S3 = S with module type T := sig type t = int end;;
index d73939a3c163964bde40abd96968c1a6aa6d83cd..545955d4cf08bdfd6319651f69bed9e670d3bc83 100644 (file)
@@ -10,7 +10,7 @@
 #                                                                       #
 #########################################################################
 
-# $Id$
+# $Id: Makefile 11156 2011-07-27 14:17:02Z doligez $
 
 # The lexer generator
 CAMLC=../boot/ocamlrun ../boot/ocamlc -strict-sequence -nostdlib -I ../boot
index 8443c575989d94f5a31d977d4fe71f6635583c49..4ac7865aefd4b57c977c27c2ac8184bcafa1b94c 100644 (file)
@@ -10,7 +10,7 @@
 #                                                                       #
 #########################################################################
 
-# $Id$
+# $Id: Makefile.nt 11156 2011-07-27 14:17:02Z doligez $
 
 # The lexer generator
 
index 72cfd9e7c827d4f3e142ad811b76952b06a8845e..9a811bd846825218486531b2b1017f3382de5fea 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: compact.ml 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (* Compaction of an automata *)
 
index 6e48df00654c1c01b2f9744e32b25bddd33b8ffe..4d3245ab10311dccb7db8747153425404ca97895 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: compact.mli 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (* Compaction of an automata *)
 type lex_tables =
index ce77044b69aff19e9d13b7bc445eaa746ea7e0ff..650c68d45625a2c8974add90d1680da6e6dd4b47 100644 (file)
@@ -11,7 +11,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: cset.ml 11156 2011-07-27 14:17:02Z doligez $ *)
 
 
 exception Bad
index b30c3b67188fbd3d5cea7d72f6c8ee3d81131039..733187a3f8ef530aed359140588405c01e9ebe47 100644 (file)
@@ -11,7 +11,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: cset.mli 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (* Set of characters encoded as list of intervals *)
 
index 5097d30943e8e9bcd1ff8e8560d35c676494be9f..a33c50a841eb9663f3b09037562993c42994b976 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: lexer.mli 11156 2011-07-27 14:17:02Z doligez $ *)
 
 val main: Lexing.lexbuf -> Parser.token
 
index b99dddf9e0a435e729b767f929b69c25b848f9a6..e82fe70e4492cea48954c87f6e226497fa3cb198 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: lexer.mll 12418 2012-05-02 14:41:30Z doligez $ *)
 
 (* The lexical analyzer for lexer definitions. Bootstrapped! *)
 
@@ -36,10 +36,10 @@ let store_string_char c = Buffer.add_char string_buff c
 let get_stored_string () = Buffer.contents string_buff
 
 let char_for_backslash = function
-    'n' -> '\n'
-  | 't' -> '\t'
-  | 'b' -> '\b'
-  | 'r' -> '\r'
+    'n' -> '\010'
+  | 'r' -> '\013'
+  | 'b' -> '\008'
+  | 't' -> '\009'
   | c   -> c
 
 let raise_lexical_error lexbuf msg =
@@ -114,7 +114,7 @@ let identstart =
 let identbody =
   ['A'-'Z' 'a'-'z' '_' '\192'-'\214' '\216'-'\246' '\248'-'\255' '\'' '0'-'9']
 let backslash_escapes =
-  ['\\' '"' '\'' 'n' 't' 'b' 'r']
+  ['\\' '\'' '"' 'n' 't' 'b' 'r' ' ']
 
 rule main = parse
     [' ' '\013' '\009' '\012' ] +
index 37720be6122ba31aa128727dfeac90159fa4bbc0..f47cfd494da555f95c7869c52a2b724d4d048931 100644 (file)
@@ -12,7 +12,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: lexgen.ml 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (* Compiling a lexer definition *)
 
index 155b9e45a0f77cad77daf8ad9518494aeaeea4bc..5fbd58c4b0dc384c39c65fb487986b7687ed8128 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: lexgen.mli 11156 2011-07-27 14:17:02Z doligez $ *)
 
 
 (* raised when there are too many bindings (>= 254 memory cells) *)
index 28f1e55e62849fcd28af4ea3946bed90e90dd678..3616ab457a715f182188927791244783ff9150d8 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: main.ml 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (* The lexer generator. Command-line parsing. *)
 
index 377c00a2dd16188cd846d217ff200f808a623ee4..7e4982ba497676b1134520450f92da06b3ef2f92 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: output.ml 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (* Output the DFA tables and its entry points *)
 
index 5eae103143b7fc79072af8ec3bd2b0caec84071f..050d9a0c2bb717a90c162b1e378ba474a9fef618 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: output.mli 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (* Output the DFA tables and its entry points *)
 
index 7eac3544447c0938a2237af96b2e50a6574fc5ac..89e7492bbc63fe9f072a6687029e98cc625ac9c2 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: outputbis.ml 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (* Output the DFA tables and its entry points *)
 
index df6bf9600a7e926a028841ee767624426cc3b9d7..b4d6931fc41bfcf8f4f487d5301b99f5f53b0b9f 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: outputbis.mli 11156 2011-07-27 14:17:02Z doligez $ *)
 val output_lexdef :
   string ->
   in_channel ->
index c36d8e020209c683eda4885ad00903dbf6fac6ec..3d976cd9dcb803590f89feacc9294e0a5908ea95 100644 (file)
@@ -10,7 +10,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: parser.mly 11156 2011-07-27 14:17:02Z doligez $ */
 
 /* The grammar for lexer definitions */
 
index 746a99a241cb46b9e49de65a1acc3cccf669305b..20a09fabe98ce6d9a61835a80ed6de6ff0a8c0f2 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: syntax.ml 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (* This apparently useless implmentation file is in fact required
    by the pa_ocamllex syntax extension *)
index d61fdb228e82ab8510b31a001fcddcb15e6fd451..028e48a56aebd82fc35101fe1f5d88fd8b69bf34 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: syntax.mli 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (* The shallow abstract syntax *)
 
index 4c0cb819143742e3c2403d5442ae3c62ee116fe0..7b0c2b0d253f01fb3107094f78a74e683699e7d3 100644 (file)
@@ -10,7 +10,7 @@
 #                                                                       #
 #########################################################################
 
-# $Id$
+# $Id: Makefile 12246 2012-03-16 15:53:07Z doligez $
 
 include ../config/Makefile
 
index c230038c20289430b8771819a93e77332383639a..311598e168c3c0ec6522645ed04ab7c5d70f4ce3 100644 (file)
@@ -10,7 +10,7 @@
 .\"*                                                                     *
 .\"***********************************************************************
 .\"
-.\" $Id$
+.\" $Id: ocaml.m 12086 2012-01-27 12:50:31Z doligez $
 .\"
 .TH OCAML 1
 
index c26d29ca54a28d290346143eb3343e1aacefe8ba..fc55d12afa7b9b7334da20df7209e8ece4a46195 100644 (file)
@@ -10,7 +10,7 @@
 .\"*                                                                     *
 .\"***********************************************************************
 .\"
-.\" $Id$
+.\" $Id: ocamlc.m 12527 2012-05-31 15:15:03Z doligez $
 .\"
 .TH OCAMLC 1
 
@@ -209,8 +209,8 @@ file can be used with the emacs commands given in
 to display types and other annotations interactively.
 .TP
 .B \-dtypes
-Has been deprecated. Please use 
-.BI \-annot 
+Has been deprecated. Please use
+.B \-annot
 instead.
 .TP
 .B \-c
@@ -615,7 +615,7 @@ function type and is ignored.
 \ \ \ Label omitted in function application.
 
 7
-\ \ \ Method overridden without using the "override" keyword
+\ \ \ Method overridden without using the "method!" keyword
 
 8
 \ \ \ Partial match: missing cases in pattern-matching.
@@ -747,7 +747,7 @@ mentioned here corresponds to the empty set.
 
 .IP
 The default setting is
-.BR \-w\ +a\-4\-6\-9\-27\-29\-32..37 .
+.BR \-w\ +a\-4\-6\-9\-27\-29\-32..39 .
 Note that warnings
 .BR 5 \ and \ 10
 are not always triggered, depending on the internals of the type checker.
index 10077e12838cbe8c9dd0e0fa6305abe0dbf3d53d..cb7a6b3ca2f1d6bba275219b628853dfb7a545fa 100644 (file)
@@ -10,7 +10,7 @@
 .\"*                                                                     *
 .\"***********************************************************************
 .\"
-.\" $Id$
+.\" $Id: ocamlcp.m 12429 2012-05-03 17:23:51Z doligez $
 .\"
 .TH "OCAMLCP" 1
 
@@ -95,7 +95,7 @@ count points are set in both
 branches
 .TP
 .B l
-\BR while , \ for
+.BR while , \ for
 loops: a count point is set at the beginning of the loop body
 .TP
 .B m
index 0eceeba3b8f628ebc8d3ab850da06dfa257a9642..f740ff8ef9ec73854aa22a4e1e6c663f62f2dc4a 100644 (file)
@@ -10,7 +10,7 @@
 .\"*                                                                     *
 .\"***********************************************************************
 .\"
-.\" $Id$
+.\" $Id: ocamldebug.m 11156 2011-07-27 14:17:02Z doligez $
 .\"
 .TH OCAMLDEBUG 1
 
index be1e7348ef5df93415d2b87bb525a7ccd8d7ae2f..558cae5558ca9be94c4367ee8f1934030271d229 100644 (file)
@@ -10,7 +10,7 @@
 .\"*                                                                     *
 .\"***********************************************************************
 .\"
-.\" $Id$
+.\" $Id: ocamldep.m 11156 2011-07-27 14:17:02Z doligez $
 .\"
 .TH OCAMLDEP 1
 
index 32d6aae1c1edc9995992cd9ececa4622837cea26..50df4ea523984d6f53736ddb4d6235baa34e2dc4 100644 (file)
@@ -10,7 +10,7 @@
 .\"*                                                                     *
 .\"***********************************************************************
 .\"
-.\" $Id$
+.\" $Id: ocamldoc.m 11156 2011-07-27 14:17:02Z doligez $
 .\"
 .TH OCAMLDOC 1
 
index 314af516cb21d75700fb227529d86ee75b6066af..25724cc0763a6f5bfdcc8611e35bd28d760579b7 100644 (file)
@@ -10,7 +10,7 @@
 .\"*                                                                     *
 .\"***********************************************************************
 .\"
-.\" $Id$
+.\" $Id: ocamllex.m 11156 2011-07-27 14:17:02Z doligez $
 .\"
 .TH OCAMLLEX 1
 
index f9c014c543e78ac474d0c81efd525070327bd594..0fbb372ffe166b4fd8f7353dd5d9c0ceb2862686 100644 (file)
@@ -10,7 +10,7 @@
 .\"*                                                                     *
 .\"***********************************************************************
 .\"
-.\" $Id$
+.\" $Id: ocamlmktop.m 11156 2011-07-27 14:17:02Z doligez $
 .\"
 .TH OCAMLMKTOP 1
 
index 0dfb196bd67772ccd762d8dbd9d7da711b8250c7..2e22e5fd86ece76f702f2b71c9b9ff45ae8210ae 100644 (file)
@@ -10,7 +10,7 @@
 .\"*                                                                     *
 .\"***********************************************************************
 .\"
-.\" $Id$
+.\" $Id: ocamlopt.m 12428 2012-05-03 17:01:27Z doligez $
 .\"
 .TH OCAMLOPT 1
 
@@ -151,7 +151,7 @@ If
 options are passed on the command
 line, these options are stored in the resulting .cmxa library.  Then,
 linking with this library automatically adds back the
-\BR \-cclib \ and \ \-ccopt
+.BR \-cclib \ and \ \-ccopt
 options as if they had been provided on the
 command line, unless the
 .B \-noautolink
index 3f20398f0e6c54eac72ddb194140a992b9d637e5..4d802d1dd09fc320fa3a740feec60cca4df465aa 100644 (file)
@@ -10,7 +10,7 @@
 .\"*                                                                     *
 .\"***********************************************************************
 .\"
-.\" $Id$
+.\" $Id: ocamlprof.m 11156 2011-07-27 14:17:02Z doligez $
 .\"
 .TH OCAMLPROF 1
 
index 7aef64eebe394ff76323d941f26e0a30b1acee30..f54a2e00d871fa9e31103f1cd5bb5f6ae72366b7 100644 (file)
@@ -10,7 +10,7 @@
 .\"*                                                                     *
 .\"***********************************************************************
 .\"
-.\" $Id$
+.\" $Id: ocamlrun.m 11156 2011-07-27 14:17:02Z doligez $
 .\"
 .TH OCAMLRUN 1
 
index ce53cc4afae50381722dd6bd99df156023cd5501..4fc9bade1e976d1881b967dbf7086b774a22636e 100644 (file)
@@ -10,7 +10,7 @@
 .\"*                                                                     *
 .\"***********************************************************************
 .\"
-.\" $Id$
+.\" $Id: ocamlyacc.m 11156 2011-07-27 14:17:02Z doligez $
 .\"
 .TH OCAMLYACC 1
 
index a95db6f3ab156604733ec8da1034aa56dfd1a826..c6872427e7994a882bcbd3c22709c12c375cd5ee 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: myocamlbuild.ml 12032 2012-01-17 21:47:36Z lefessan $ *)
 
 open Ocamlbuild_plugin
 open Command
index 5eec980326057566570f527b6fe429944fad59cf..340ce687f70fe402f0fd4cf8050ec6f71880ec50 100644 (file)
@@ -69,3 +69,4 @@ val toolchain : string
 val ccomptype : string
 val extralibs : string
 val tk_defs : string
+val asm_cfi_supported : bool
index e4ee877eb4469e8e8891382811e704bdb5e5b735..eec086a5221abdacec3e51d7cac7bc862b0ef43d 100644 (file)
@@ -10,7 +10,7 @@
 #                                                                       #
 #########################################################################
 
-# $Id$
+# $Id: Makefile 11156 2011-07-27 14:17:02Z doligez $
 
 .PHONY: all byte native profile debug ppcache doc
 
index f8aab137409ab188bace94dc26e161fdec92fbb0..11586662f97f92d1c3026d4f4323fd1a0fda7993 100644 (file)
@@ -120,7 +120,7 @@ let create
     match log_file with
     | None -> None
     | Some fn ->
-        let oc = open_out_gen [Open_text; Open_wronly; Open_creat; Open_trunc] 0o644 fn in
+        let oc = open_out_gen [Open_text; Open_wronly; Open_creat; Open_trunc] 0o666 fn in
         let f = Format.formatter_of_out_channel oc in
         Format.fprintf f "### Starting build.\n";
         Some (f, oc)
index 97a9ea927580a546880e7e6703856e91afb4810e..33c01ed13ca89864d347cb13f2d55039dd477bbe 100644 (file)
@@ -72,7 +72,8 @@ let check ?sanitize laws entry =
         list_collect
           begin function
             | File(path, name, _, true) ->
-                if Filename.check_suffix name suffix then
+                if Filename.check_suffix name suffix
+                  && not ( Pathname.link_to_dir (filename_concat path name) !Options.build_dir ) then
                   begin
                     remove path name;
                     Some(sf "File %s in %s has suffix %s" name path suffix)
@@ -150,7 +151,7 @@ let check ?sanitize laws entry =
                @ or@ use@ other@ options@ (such@ as@ defining@ hygiene@ exceptions\
                @ or@ using@ the@ -no-hygiene@ option).@]"
                m (if m = 1 then "" else "s") fn;
-            let oc = open_out_gen [Open_wronly; Open_creat; Open_trunc; Open_binary] 0o755 fn in
+            let oc = open_out_gen [Open_wronly; Open_creat; Open_trunc; Open_binary] 0o777 fn in
             (* See PR #5338: under mingw, one produces a shell script, which must follow
                Unix eol convention; hence Open_binary. *)
             let fp = Printf.fprintf in
index 28b7c5c46217f4b201131dc6d172660aa127186f..3b9bd8927b4cc8bd5a6ebdca4b1adabb9f52068f 100644 (file)
@@ -37,6 +37,10 @@ let clean () =
 ;;
 
 let show_tags () =
+  if List.length !Options.show_tags > 0 then
+    Log.eprintf "Warning: the following tags do not include \
+    dynamically-generated tags, such as link, compile, pack, byte, native, c, \
+    pdf... (this list is by no means exhaustive).\n";
   List.iter begin fun path ->
     Log.eprintf "@[<2>Tags for %S:@ {. %a .}@]" path Tags.print (tags_of_pathname path)
   end !Options.show_tags
diff --git a/ocamlbuild/manual/.ignore b/ocamlbuild/manual/.ignore
deleted file mode 100644 (file)
index a7bf093..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-*.aux
-*.haux
-*.html
-*.htoc
-*.log
-*.pdf
diff --git a/ocamlbuild/manual/Makefile b/ocamlbuild/manual/Makefile
deleted file mode 100644 (file)
index 595f730..0000000
+++ /dev/null
@@ -1,26 +0,0 @@
-#######################################################################
-#                             ocamlbuild                              #
-#                                                                     #
-#  Nicolas Pouillard, Berke Durak, projet Gallium, INRIA Rocquencourt #
-#                                                                     #
-#  Copyright 2007 Institut National de Recherche en Informatique et   #
-#  en Automatique.  All rights reserved.  This file is distributed    #
-#  under the terms of the Q Public License version 1.0.               #
-#                                                                     #
-#######################################################################
-
-# Makefile
-
-all: manual.pdf manual.html
-
-%.pdf: %.tex
-       pdflatex $<
-       pdflatex $<
-
-%.html: %.tex manual.hva
-       hevea -fix -O manual.hva $<
-
-.PHONY: clean
-
-clean:
-       rm -f *.pdf *.log *.aux *.ps *.dvi manual.h{tml,aux,toc}
diff --git a/ocamlbuild/manual/manual.hva b/ocamlbuild/manual/manual.hva
deleted file mode 100644 (file)
index d175fdb..0000000
+++ /dev/null
@@ -1 +0,0 @@
-\newcommand{\mathscr}[1]{{\mathcal{#1}}}
\ No newline at end of file
diff --git a/ocamlbuild/manual/manual.tex b/ocamlbuild/manual/manual.tex
deleted file mode 100644 (file)
index bccdd9a..0000000
+++ /dev/null
@@ -1,1065 +0,0 @@
-%                                                                -*- LaTeX -*-
-%(***********************************************************************)
-%(*                             ocamlbuild                              *)
-%(*                                                                     *)
-%(*  Nicolas Pouillard, Berke Durak, projet Gallium, INRIA Rocquencourt *)
-%(*                                                                     *)
-%(*  Copyright 2007 Institut National de Recherche en Informatique et   *)
-%(*  en Automatique.  All rights reserved.  This file is distributed    *)
-%(*  under the terms of the Q Public License version 1.0.               *)
-%(*                                                                     *)
-%(***********************************************************************)
-
-%(*** preamble
-\documentclass[9pt]{article}
-\usepackage[utf8]{inputenc}
-\usepackage{palatino}
-\usepackage{mathrsfs}
-\usepackage{xspace}
-\usepackage[T1]{fontenc}
-\usepackage[english]{babel}
-\usepackage[a4paper,lmargin=1cm,rmargin=1cm,tmargin=1cm,bmargin=2cm]{geometry}
-\newcommand{\ocb}{\texttt{ocamlbuild}\xspace}
-\newcommand{\tags}{\texttt{\_tags}\xspace}
-%***)
-%(*** title
-\begin{document}
-\title{The \ocb users manual}
-\author{Berke \textsc{Durak}, Nicolas \textsc{Pouillard}}
-\date{February 2007}
-\maketitle
-%***)
-%(*** abstract
-\begin{abstract}
-\ocb is a tool automating the compilation of most OCaml projects with minimal
-user input.  Its use is not restricted to projects having a simple structure --
-the extra effort needed to make it work with the more complex projects is in
-reasonable proportion with their added complexity.  In practice, one will use a
-set of small text files, and, if needed, an OCaml compilation module that can
-fine-tune the behaviour and define custom rules.
-\end{abstract}
-%***)
-%(*** Features of ocamlbuild
-\section{Features of \ocb}
-{\em This section is intended to read like a sales brochure or a datasheet.}
-
-\begin{itemize}
-\item Built-in compilation rules for OCaml projects handle all the nasty cases:
-native and byte-code, missing \texttt{.mli} files, preprocessor rules,
-libraries, package (-pack) debugging and profiling flags, C stubs.
-\item Plugin mechanism for writing compilation rules and actions in a real programming language,
-OCaml itself.
-\item Automatic inference of dependencies.
-\item Correct handling of dynamically discovered dependencies.
-\item Object files and other temporary files are created in a specific directory, leaving your main directory uncluttered.
-\item Sanity checks ensure that object files are where they are supposed to be: in the build directory.
-\item Regular projects are built using a single command with no extra files.
-\item Parallel compilation to speed up things on multi-core systems.
-\item Sophisticated display mode to keep your screen free of boring and repetitive compilation message
-while giving you important progress information in a glimpse, and correctly multiplexing the error messages.
-\item Tags and flags provide a concise and convenient mechanism for automatic selection of compilation, preprocessing and
-other options.
-\item Extended shell-like glob patterns, that can be combined using boolean operators,
-allow you to concisely define the tags that apply to a given file.
-\item Mechanisms for defining the mutual visibility of subdirectories.
-\item Cache mechanism avoiding unnecessary compilations where reasonably computable.
-\end{itemize}
-%***)
-%(*** Limitations
-\section{Limitations}
-{\em Not perfect nor complete yet, but already pretty damn useful.}
-
-We were not expecting to write the ultimate compilation tool in a few man-months, however we believe we have
-a tool that solves many compilation problems, especially our own, in a satisfactory way.  Hence there are a
-lot of missing features, incomplete options and hideous bugs lurking in \ocb, and we hope that the OCaml community
-will find our first try at \ocb useful and hopefully help it grow into a tool that satisfies most needs of most users
-by providing feedback, bug reports and patches.
-
-The plugin API maybe somewhat lacking in maturity, as it has only been tested
-by a few people.  We believe a good API can only evolve under pressure from
-many peers and the courage to rewrite things cleanly when time is ripe by the
-developers.  Most of the important functions a user will need are encapsulated
-in the plugin API, which is the \texttt{Ocamlbuild\_plugin} module pack.  We
-intend to keep that API backwards compatible.  It may happen that intricate
-projects need features not available in that module -- you may then use
-functions or values directly from the core \ocb modules.  We ask you to report
-such usage to the authors so that we may make the necessary changes to the API;
-you may also want to isolate calls to the non-API parts of the \ocb library
-from the rest of your plugin to be able to keep the later when incompatible
-changes arise.
-
-The way that \ocb handles the command-line options, the \tags file,
-the target names, names of the tags, and so on, are not expected to change in
-incompatible ways.  We intend to keep a project that compiles without a plugin
-compilable without modifications in the future.
-%***)
-%(*** Using ocamlbuild
-\section{Using \ocb}
-{\em Learn how to use \ocb with short, specific, straight-to-the-point examples.}
-
-The amount of time and effort spent on the compilation process of a project
-should be proportionate to that spent on the project itself.  It should be easy
-to set up a small project, maybe a little harder for a medium-sized project,
-and it may take some more time, but not too much, for a big project.  Ideally
-setting up a big project would be as easy as setting up a small project.  However,
-as projects grow, modularization techniques start to be used, and the probability
-of using meta programming or multiple programming languages increases, thus making
-the compilation process more delicate.
-
-\ocb is intended to be very easy to use for projects, large or small, with a simple
-compilation process: typing
-\texttt{ocamlbuild foo.native} should be enough to compile the native version
-of a program whose top module is \texttt{foo.ml} and whose dependencies are in
-the same directory.  As your project gets more complex, you will gradually
-start to use command-line options to specify libraries to link with, then
-configuration files, ultimately culminating in a custom OCaml plugin for
-complex projects with arbitrary dependencies and actions.
-
-%(*** Hygiene *)
-\subsection{Hygiene \& where is my code ?}
-Your code is in the \texttt{\_build} directory, but \ocb automatically creates
-a symbolic link to the executables it produces in the current directory.
-\ocb copies the source files and compiles them in a separate directory
-which is \texttt{\_build} by default.
-
-For \ocb, any file that is not in the build directory is a source file.
-It is not unreasonable to think that some users may have bought binary object files
-they keep in their project directory.  Usually binary files cluttering the project
-directory are due to previous builds using other systems.  \ocb has so-called
-``hygiene'' rules that state that object files (\texttt{.cmo}, \texttt{.cmi},
-or \texttt{.o} files, for instance) must not appear outside of the build
-directory.  These rules are enforced at startup; any violations will be reported
-and \ocb will exit.  You must then remove these files by hand or run, with caution,
-the script \texttt{sanitize.sh}, which is generated in your source directory.
-This script will contain commands to remove them for you.
-
-To disable these checks, you can use the \texttt{-no-hygiene} flag.  If you have
-files that must elude the hygiene squad, just tag them with \texttt{precious}
-or \texttt{not\_hygienic}.
-%***)
-%(*** Hello, world !
-\subsection{Hello, world !}
-Assuming we are in a directory named \texttt{example1} containing one file \texttt{hello.ml}
-whose contents are
-\begin{verbatim}
-let _ =
-  Printf.printf "Hello, %s ! My name is %s\n"
-    (if Array.length Sys.argv > 1 then Sys.argv.(1) else "stranger")
-    Sys.argv.(0)
-;;
-\end{verbatim}
-we can compile and link it into a native executable by invoking \texttt{ocamlbuild hello.native}.
-Here, \texttt{hello} is the basename of the top-level module and \texttt{native} is an extension used
-by \ocb to denote native code executables.
-\begin{verbatim}
-% ls
-hello.ml
-% ocamlbuild hello.native
-Finished, 4 targets (0 cached) in 00:00:00.
-% ls -l
-total 12
-drwxrwx--- 2 linus gallium 4096 2007-01-17 16:24 _build/
--rw-rw---- 1 linus gallium   43 2007-01-17 16:23 hello.ml
-lrwxrwxrwx 1 linus gallium   19 2007-01-17 16:24 hello.native -> _build/hello.native*
-\end{verbatim}
-What's this funny \texttt{\_build} directory ?  Well that's where \ocb does its dirty work
-of compiling.  You usually won't have to look very often into this directory.  Source files are be copied
-into \texttt{\_build} and this is where the compilers will be run.  Various cache files are also stored
-there.  Its contents may look like this:
-\begin{verbatim}
-% ls -l _build
-total 208
--rw-rw---- 1 linus gallium    337 2007-01-17 16:24 _digests
--rw-rw---- 1 linus gallium    191 2007-01-17 16:24 hello.cmi
--rw-rw---- 1 linus gallium    262 2007-01-17 16:24 hello.cmo
--rw-rw---- 1 linus gallium    225 2007-01-17 16:24 hello.cmx
--rw-rw---- 1 linus gallium     43 2007-01-17 16:23 hello.ml
--rw-rw---- 1 linus gallium     17 2007-01-17 16:24 hello.ml.depends
--rwxrwx--- 1 linus gallium 173528 2007-01-17 16:24 hello.native*
--rw-rw---- 1 linus gallium    936 2007-01-17 16:24 hello.o
--rw-rw---- 1 linus gallium     22 2007-01-17 16:24 ocamlc.where
-\end{verbatim}
-%***)
-%(*** Executing my code
-\subsection{Executing my code}
-You can execute your code the old-fashioned way (\texttt{./hello.native}).
-You may also type
-\begin{verbatim}
-ocamlbuild hello.native -- Caesar
-\end{verbatim}
-and it will compile and then run \texttt{hello.native} with the arguments following \texttt{-{}-},
-which should display:
-\begin{verbatim}
-% ocamlbuild hello.native -- Caesar
-Finished, 4 targets (0 cached) in 00:00:00.
-Hello, Caesar ! My name is _build/hello.native
-\end{verbatim}
-%***)
-%(*** The log file, verbosity and debugging
-\subsection{The log file, verbosity and debugging}
-By default, if you run \ocb on a terminal, it will use some ANSI escape sequences
-to display a nice, one-line progress indicator.  To see what commands \ocb has actually run,
-you can check the contents of the \texttt{\_build/\_log} file.  To change the name of the
-log file or to disable logging, use the \texttt{-log <file>} or \texttt{-no-log} options.
-Note that the log file is truncated at each execution of \ocb.
-
-The log file contains all the external commands that \ocb ran or intended to
-run along with the target name and the computed tags.  With the
-\texttt{-verbose <level>} option, \ocb will also write more or less useful
-debugging information;  a verbosity level of $1$ (which can also be specified
-using the \texttt{-verbose} switch) prints generally useful information; higher
-levels produce much more output.
-%***)
-%(*** Cleaning
-\subsection{Cleaning}
-\ocb may leave a \texttt{\_build} directory and symbolic links to executables in
-that directory (unless when using -no-links). All of these can be removed safely
-by hand, or by invoking \ocb with the \texttt{-clean} flag.
-%***)
-%(*** Where and how to run \ocb
-\subsection{Where and how to run \ocb ?}
-An important point is that \ocb must be invoked from the root of the project,
-even if this project has multiple, nested subdirectories.  This is because \ocb
-likes to store the object files in a single \texttt{\_build} directory.  You
-can change the name of that directory with the \texttt{-build-dir} option.
-
-\ocb can be either invoked manually from the UNIX or Windows shell, or
-automatically from a build script or a Makefile.  Unless run with the
-\texttt{-no-hygiene} option, there is the possibility that \ocb will prompt the
-user for a response.  By default, on UNIX systems, if \ocb senses that the
-standard output is a terminal, it will use a nice progress indicator using ANSI
-codes, instrumenting the output of the processes it spawns to have a consistent
-display.  Under non-UNIX systems, or if the standard output is not a terminal,
-it will run in classic mode where it will echo the executed commands on its
-standard output.  This selection can be overridden with the \texttt{-classic-display} option.
-%***)
-%(*** Dependencies
-\subsection{Dependencies}
-{\em Dependencies are automatically discovered.}
-
-Most of the value of \ocb lies in the fact that it often needs no extra
-information to compile a project besides the name of the top-level module.
-\ocb calls \texttt{ocamldep} to automatically find the dependencies of any
-modules it wants to compile.  These dependencies are dynamically incorporated
-in the dependency graph, something \texttt{make} cannot do.
-For instance, let's add a module \texttt{Greet} that implements various ways of
-greeting people.
-\begin{verbatim}
-% cat greet.ml
-type how = Nicely | Badly;;
-
-let greet how who =
-  match how with Nicely -> Printf.printf "Hello, %s !\n" who
-               | Badly  -> Printf.printf "Oh, here is that %s again.\n" who
-;;
-% cat hello.ml
-open Greet
-
-let _ =
-  let name =
-    if Array.length Sys.argv > 1 then
-      Sys.argv.(1)
-    else
-      "stranger"
-  in
-  greet
-    (if name = "Caesar" then Nicely else Badly)
-    name;
-  Printf.printf "My name is %s\n" Sys.argv.(0)
-;;
-\end{verbatim}
-Then the module \texttt{Hello} depends on the module \texttt{Greet} and \ocb can
-figure this out for himself -- we still only have to invoke \texttt{\ocb
-hello.native}.  Needless to say, this works for any number of modules.
-%***)
-%(*** Native and byte code
-\subsection{Native and byte-code}
-If we want to compile byte-code instead of native, we just a target name of
-\texttt{hello.byte} instead of \texttt{hello.native}, i.e., we type
-\texttt{\ocb hello.byte}.
-%***)
-%(*** Compile flags
-\subsection{Compile flags}
-To pass a flag to the compiler, such as the \texttt{-rectypes} option,
-use the \texttt{-cflag} option as in:
-\begin{verbatim}
-ocamlbuild -cflag -rectypes hello.native
-\end{verbatim}
-You can put multiple \texttt{-cflag} options, they will be passed to the compiler
-in the same order.  You can also given them in a comma-separated list with the
-\texttt{-cflags} option (notice the plural):
-\begin{verbatim}
-ocamlbuild -cflags -I,+lablgtk,-rectypes hello.native
-\end{verbatim}
-These flags apply when compiling, that is, when producing \texttt{.cmi},
-\texttt{.cmo},\texttt{.cmx} and \texttt{.o} files from \texttt{.ml} or
-\texttt{.mli} files.
-%***)
-%(*** Link flags
-\subsection{Link flags}
-Link flags apply when the various object files are collected and linked into
-one executable.  These will typically be include directories for libraries.
-They are given using the \texttt{-lflag} and \texttt{-lflags} options, which
-work in the same way as the \texttt{-cflag} and \texttt{-cflags} options.
-%***)
-%(*** Linking with external libraries
-\subsection{Linking with external libraries}
-In our third example, we use one Unix system call and functions from the \texttt{num}
-library:
-\begin{verbatim}
-% cat epoch.ml
-let _ =
-  let s = Num.num_of_string (Printf.sprintf "%.0f" (Unix.gettimeofday ())) in
-  let ps = Num.mult_num (Num.num_of_string "1000000000000") s in
-  Printf.printf "%s picoseconds have passed since January 1st, 1970.\n"
-    (Num.string_of_num ps)
-;;
-\end{verbatim}
-This requires linking with the \texttt{unix} and \texttt{num} modules, which is accomplished
-by using the \texttt{-lib unix} and \texttt{-lib num} flags, or, alternatively, \texttt{-libs unix,num}:
-\begin{verbatim}
-% ocamlbuild -libs nums,unix epoch.native --
-Finished, 4 targets (4 cached) in 00:00:00.
-1169051647000000000000 picoseconds have passed since January 1st, 1970.
-\end{verbatim}
-You may need to add options such as \texttt{-cflags -I,/usr/local/lib/ocaml/}
-and \texttt{-lflags -I,/usr/local/lib/ocaml/} if the libraries you wish to
-link with are not in OCaml's default search path.
-%***)
-%(*** The _tags files
-\subsection{The \tags files}
-Finer control over the compiler flags applied to each source file, such as
-preprocessing, debugging, profiling and linking options, can be gained using
-\ocb's tagging mechanism.
-
-Every source file has a set of tags which tells \ocb what kind of file it is
-and what to do with it.  A tag is simply a string, usually lowercase, for
-example \texttt{ocaml} or \texttt{native}.  The set of tags attached to a file
-is computed by applying the tagging rules to the filename.  Tagging rules are
-defined in \tags files in any parent directory of a file, up to the main
-project directory.
-
-Each line in the \tags file is made of a glob pattern (see subsection
-\ref{subsec:glob}) and a list of tags.  More than one rule can apply to a file
-and rules are applied in the order in which they appear in a file.
-By preceding a tag with a minus sign, one may remove tags from one or more files.
-
-\subsubsection{Example: the built-in \tags file}
-\begin{verbatim}
-     <**/*.ml> or <**/*.mli> or <**/*.mlpack> or <**/*.ml.depends>: ocaml
-     <**/*.byte>: ocaml, byte, program
-     <**/*.odoc>: ocaml, doc
-     <**/*.native>: ocaml, native, program
-     <**/*.cma>: ocaml, byte, library
-     <**/*.cmxa>: ocaml, native, library
-     <**/*.cmo>: ocaml, byte
-     <**/*.cmi>: ocaml, byte, native
-     <**/*.cmx>: ocaml, native
-\end{verbatim}
-
-A special tag made from the path name of the file relative to the toplevel
-of the project is automatically defined for each file.  For a file
-\texttt{foo/bar.ml} this tag will be \texttt{file:foo/bar.ml}.
-
-If you do not have subdirectories, you can put \texttt{*.ml} instead of
-\texttt{**/*.ml}.
-%***)
-%(*** Glob patterns and expressions
-\subsection{Glob patterns and expressions}
-\label{subsec:glob}
-Glob patterns have a syntax similar to those used by UNIX shells to select path
-names (like \texttt{foo\_*.ba?}).  They are used in \ocb to define the files
-and directories to which tags apply.  Glob expressions are glob patterns
-enclosed in brackets \texttt{<} and \texttt{>} combined using the standard
-boolean operators \texttt{and}, \texttt{or}, \texttt{not}.  This allows one to
-describe sets of path names in more concise and more readable ways.
-
-Please note that file and directory names are supposed to be made of the
-following characters: $\texttt{a}$, $\dots$, $\texttt{z}$, $\texttt{A}$,
-$\dots$, $\texttt{Z}$, $\texttt{0}$, $\dots$, $\texttt{9}$, $\texttt{\_}$,
-$\texttt{-}$ and $\texttt{.}$.  This is called the pathname alphabet $P$.
-
-\begin{table}[h]
-  \begin{center}
-    \small
-    \begin{tabular}{|p{3cm}|l|p{3cm}|p{3cm}|p{5cm}|}
-    \hline
-    {\em Formal syntax} &
-    {\em Example} & {\em Matches} & {\em Does not match} &
-    {\em Meaning (formal meaning)} \\
-    \hline
-    \hline
-%%
-    {$u$ \vspace*{0.5em} A string of pathname characters} &
-    \texttt{foo.ml} &
-    \texttt{foo.ml} &
-    \texttt{fo.ml}, \texttt{bar/foo.ml} &
-    The exact string $u$
-    ($\{ u \}$, where $u \in P^*$) \\
-    \hline
-%%
-    {\texttt{*} \vspace*{0.5em} The wild-card star}&
-    \texttt{*}&
-    $\varepsilon$, \texttt{foo}, \texttt{bar} &
-    \texttt{foo/bar}, \texttt{/bar} &
-    Any string not containing a slash
-    ($P^*$) \\
-    \hline
-%%
-    {\texttt{?} \vspace*{0.5em} The joker}&
-    \texttt{?}&
-    \texttt{a}, \texttt{b}, \texttt{z} &
-    \texttt{/}, \texttt{bar} &
-    Any one-letter string, excluding the slash \\
-    \hline
-%%
-    {\texttt{**/} \vspace*{0.5em} The prefix inter-directory star}&
-    \texttt{**/foo.ml}&
-    \texttt{foo.ml}, \texttt{bar/foo.ml}, \texttt{bar/baz/foo.ml} &
-    \texttt{foo/bar}, \texttt{/bar} &
-    The empty string, or any string ending with a slash
-    ($\varepsilon \cup P^*\mathtt{/}$) \\
-    \hline
-%%
-    {\texttt{/**} \vspace*{0.5em} The suffix inter-directory star}&
-    \texttt{foo/**}&
-    \texttt{foo}, \texttt{foo/bar} &
-    \texttt{bar/foo} &
-    Any string starting with a slash, or the empty string
-    ($\varepsilon \cup \mathtt{/}P^*$) \\
-    \hline
-%%
-    {\texttt{/**/} \vspace*{0.5em} The infix inter-directory star}&
-    \texttt{bar/**/foo.ml}&
-    \texttt{bar/foo.ml}, \texttt{bar/baz/foo.ml} &
-    \texttt{foo.ml} &
-    Any string starting and ending with a slash
-    ($\varepsilon \cup \mathtt{/}P^*\mathtt{/}$) \\
-    \hline
-%%
-    {$\mathtt{[} r_1 r_2 \cdots r_k \mathtt{]}$
-    where $r_i$ is either $c$ or $c_1-c_2$ $(1 \leq i \leq k)$
-    \vspace*{0.5em} The positive character class}&
-    \texttt{[a-fA-F0-9\_.]}&
-    \texttt{3}, \texttt{F}, \texttt{.} &
-    \texttt{z}, \texttt{bar} &
-    Any one-letter string made of characters from one of the ranges
-    $r_i$ ($1 \leq i \leq n$).
-    ($\mathscr L(r_1) \cup \cdots \cup \mathscr L(r_n)$) \\
-    \hline
-%%
-    {\texttt{[\char`\^}$r_1 r_2 \cdots r_k \mathtt{]}$
-    where $r_i$ is either $c$ or $c_1-c_2$ $(1 \leq i \leq k)$
-    \vspace*{0.5em} The negative character class}&
-    \texttt{[\char`\^a-fA-F0-9\_.]}&
-    \texttt{z}, \texttt{bar} &
-    \texttt{3}, \texttt{F}, \texttt{.} &
-    Any one-letter string NOT made of characters from one of the ranges
-    $r_i$ ($1 \leq i \leq n$).
-    ($\Sigma^* \setminus \left(\mathscr L(r_1) \cup \cdots \cup \mathscr L(r_n)\right)$) \\
-    \hline
-%%
-    {$p_1 p_2$ \vspace*{0.5em} A concatenation of patterns}&
-    \texttt{foo*}&
-    \texttt{foo}, \texttt{foob}, \texttt{foobar} &
-    \texttt{fo}, \texttt{bar} &
-    Any string with a prefix matching $p_1$ and the corresponding suffix
-    matching $p_2$,
-    ($\{ uv \mid u \in \mathscr L(p_1), v \in \mathscr L(p_2) \}$) \\
-    \hline
-%%
-    {$\mathtt{\{} p_1 \mathtt{,} p_2 \mathtt{,} \cdots \mathtt{,} p_k \mathtt{\}}$ \vspace*{0.5em} A union of patterns}&
-    \texttt{toto.\{ml,mli\}}&
-    \texttt{toto.ml}, \texttt{toto.mli} &
-    \texttt{toto.} &
-    Any string matching one of the patterns $p_i$ for $1 \leq i \leq k$.
-    ($\mathscr L(p_1) \cup \cdots \cup \mathscr L(p_k)$) \\
-    \hline
-%%
-    \end{tabular}
-  \end{center}
-  \caption{
-    Syntax and semantics of glob patterns.
-  }
-\end{table}
-\begin{table}
-  \begin{center}
-    \small
-    \begin{tabular}{|p{2cm}|l|p{7cm}|}
-    \hline
-      {\em Formal syntax} &
-      {\em Example} &
-      {\em Meaning (formal meaning)} \\
-    \hline
-    \hline
-      {$\mathtt{<}p\mathtt{>}$} &
-      \texttt{<foo.ml>} &
-      Pathnames matching the pattern $p$ \\
-    \hline
-      {$e_1 \; \mathtt{or} \; e_2$} &
-      \texttt{<*.ml> or <foo/bar.ml>} &
-      Pathnames matching at least one of the expressions $e_1$ and $e_2$ \\
-    \hline
-      {$e_1 \; \mathtt{and} \; e_2$} &
-      \texttt{<*.ml> and <foo\_*>} &
-      Pathnames matching both expressions $e_1$ and $e_2$ \\
-    \hline
-      {$\mathtt{not} \; e$} &
-      \texttt{not <*.mli>} &
-      Pathnames not matching the expression $e$ \\
-    \hline
-      {$\mathtt{true}$} &
-      \texttt{true} &
-      All pathnames \\
-    \hline
-      {$\mathtt{false}$} &
-      \texttt{false} &
-      No pathnames \\
-    \hline
-    \end{tabular}
-  \end{center}
-  \caption{
-    Syntax and semantics of glob expressions.
-  }
-\end{table}
-%***)
-%(*** Subdirectories
-\subsection{Subdirectories}
-If the files of your project are held in one or more subdirectories,
-\ocb must be made aware of that fact using the \texttt{-I} or \texttt{-Is} options
-or by adding an \texttt{include} tag.  For instance, assume your project is made
-of three subdirectories, \texttt{foo}, \texttt{bar} and \texttt{baz} containing
-various \texttt{.ml} files, the main file being \texttt{foo/main.ml}.  Then you can
-either type:
-\begin{verbatim}
-% ocamlbuild -Is foo,bar,baz foo/main.native
-\end{verbatim}
-or add the following line in the \tags file
-\begin{verbatim}
-<foo> or <bar> or <baz>: include
-\end{verbatim}
-and call
-\begin{verbatim}
-% ocamlbuild foo/main.native
-\end{verbatim}
-
-There are then two cases.  If no other modules named \texttt{Bar} or
-\texttt{Baz} exist elsewhere in the project, then you are done.  Just use
-\texttt{Foo}, \texttt{Foo.Bar} and \texttt{Foo.Baz} in your code.
-Otherwise, you will need to use the plugin mechanism and define the mutual
-visibility of the subdirectories using the \texttt{Pathname.define\_context}
-function.
-
-\subsubsection{Note on subdirectory traversal}
-\ocb  used  to  traverse  by  default any subdirectory not explicitly excluded.
-This  is  no  longer  the  case.  Note  that  you can still have a fine grained
-control using your \tags file and the \texttt{traverse} tag.
-
-There  is  no longer the \texttt{true: traverse} tag declaration by default. To
-make \ocb recursive use one of these:
-\begin{enumerate}
-\item Give the \texttt{-r} flag to ocamlbuild.
-\item Have a \tags or myocamlbuild.ml file in your top directory.
-\end{enumerate}
-
-%***)
-%(*** Grouping targets
-\subsection{Grouping targets with \texttt{.itarget}}
-You can create a file named \texttt{foo.itarget} containing
-a list of targets, one per line, such as
-\begin{verbatim}
-main.native
-main.byte
-stuff.docdir/index.html
-\end{verbatim}
-Requesting the target \texttt{foo.otarget} will then build every target
-listed in the file \texttt{foo.itarget}. Blank lines and lines starting
-with a sharp (\texttt{\#}) are ignored.
-%***)
-%(*** Packing subdirectories into modules
-\subsection{Packing subdirectories into modules}
-OCaml's \texttt{-pack} option allows you to structure the contents of a
-module in a subdirectory.  For instance, assume you have a directory
-\texttt{foo} containing two modules \texttt{bar.ml} and \texttt{baz.ml}.
-You want from these to build a module \texttt{Foo} containing \texttt{Bar}
-and \texttt{Baz} as submodules.  In the case where no modules named
-\texttt{Bar} or \texttt{Baz} exist outside of \texttt{Foo}, to do this you
-must write a file \texttt{foo.mlpack}, preferably sitting in the same
-directory as the directory \texttt{Foo} and containing the list of modules
-(one per line) it must contain:
-\begin{verbatim}
-Bar
-Baz
-\end{verbatim}
-Then when you will request for building \texttt{foo.cmo} the package will be
-made from \texttt{bar.cmo} and \texttt{baz.cmo}.
-%***)
-%(*** Making an OCaml library
-\subsection{Making an OCaml library}
-In  a  similar  way than for packaged modules you can make a library by putting
-it's  contents  in  a file (with the mllib extension). For instance, assume you
-have  a two modules \texttt{bar.ml} and \texttt{baz.ml}. You want from these to
-build  a  library  \texttt{foo.cmx?a}  containing \texttt{Bar} and \texttt{Baz}
-modules.  To  do  this  you must write a file \texttt{foo.mllib} containing the
-list of modules (one per line) it must contain:
-\begin{verbatim}
-Bar
-Baz
-\end{verbatim}
-Then  when  you  will request for building \texttt{foo.cma} the library will be
-made from \texttt{bar.cmo} and \texttt{baz.cmo}.
-%***)
-%(*** Making an OCaml toplevel
-\subsection{Making an OCaml toplevel}
-Making  a  toplevel is almost the same thing than making a packaged module or a
-library.   Just   write   a   file  with  the  \texttt{mltop}  extension  (like
-\texttt{foo.mltop})   and   request   for   building  the  toplevel  using  the
-\texttt{top} extension (\texttt{foo.top} in this example).
-%***)
-%(*** Preprocessor options
-\subsection{Preprocessor options and tags}
-You can specify preprocessor options with \texttt{-pp} followed by the
-preprocessor string, for instance \texttt{ocamlbuild -pp "camlp4o.opt -unsafe"}
-would run your sources through CamlP4 with the \texttt{-unsafe} option.
-Another way is to use the tags file.
-\begin{center}
-  \begin{tabular}{|l|l|l|}
-    \hline
-    \textbf{Tag}        & \textbf{Preprocessor command} & \textbf{Remark} \\
-    \hline
-    \hline
-    \texttt{pp(cmd...)} & \texttt{cmd...}               & Arbitrary
-        preprocessor command\footnote{The command must not contain newlines or parentheses.} \\
-    \hline
-    \texttt{camlp4o}    & \texttt{camlp4o}              & Original OCaml syntax \\
-    \hline
-    \texttt{camlp4r}    & \texttt{camlp4r}              & Revised OCaml syntax \\
-    \hline
-    \texttt{camlp4of}   & \texttt{camlp4of}             & Original OCaml syntax with extensions \\
-    \hline
-    \texttt{camlp4rf}   & \texttt{camlp4rf}             & Revised OCaml syntax with extensions \\
-    \hline
-  \end{tabular}
-\end{center}
-
-%%%%% \subsubsection{An example, dealing with some configuration variables}
-%%%%%
-%%%%% It's quite common to have in your sources some files that you want to access
-%%%%% when your program is running. One often uses some variables that are setup by
-%%%%% the end user. Now suppose that there is only two files that use these variables
-%%%%% (mylib.ml and parseopt.ml).
-%%%%%
-%%%%% In the \tags file:
-%%%%% \begin{verbatim}
-%%%%% "mylib.ml" or "parseopt.ml": pp(sed -e "s,LIBDIR,/usr/local/lib/FOO,g")
-%%%%% \end{verbatim}
-%%%%%
-%%%%% In fact that solution is not really acceptable, since the variable is hardcoded
-%%%%% in the \tags file. Trying to workaround this issue by using some shell variable
-%%%%% does not work either since the -pp argument will be escaped in simple quotes.
-%%%%% Note also that using some script shell that will do that sed and use \verb'$LIBDIR'
-%%%%% as a shell variable is not a good idea since \ocb don't know this dependency on that
-%%%%% shell script.
-%%%%%
-%%%%% There is in fact at least two good solutions. The first is to tell that dependency
-%%%%% using the \texttt{dep} function in your plugin. The second is simpler it just consist
-%%%%% on generating some OCaml file at configure time. By naming this configuration file
-%%%%% \texttt{myocamlbuild_config.ml} \ocb will make it also available to your plugin.
-%%%%%
-%%%%% In your \texttt{myocamlbuild_config.mli} interface:
-%%%%% \begin{verbotim}
-%%%%% val prefix : string
-%%%%% val libdir : string
-%%%%% \end{verbotim}
-%%%%%
-%%%%% And in your \texttt{configure} script
-%%%%% \begin{verbatim}
-%%%%% #!/bin/sh
-%%%%%
-%%%%% # Setting defaults values
-%%%%% PREFIX=/usr/local
-%%%%% LIBDIR=$PREFIX/lib/FOO
-%%%%% CONF=myocamlbuild_config.ml
-%%%%%
-%%%%% # ... some shell to parse option and check configuration ...
-%%%%%
-%%%%% # Dumping the configuration as an OCaml file.
-%%%%% rm -f $CONF
-%%%%% echo "let prefix = \"$PREFIX\";;" >> $CONF
-%%%%% echo "let libdir = \"$LIBDIR\";;" >> $CONF
-%%%%% chmod -w $CONF
-%%%%% \end{verbatim}
-
-%***)
-%(*** Debugging and profiling
-\subsection{Debugging byte code and profiling native code}
-The preferred way of compiling code suitable for debugging with \texttt{ocamldebug} or
-profiling native code with \texttt{ocamlprof} is to use the appropriate target
-extensions, \texttt{.d.byte} for debugging or \texttt{.p.native}.
-
-Another way is to add use the \texttt{debug} or \texttt{profile} tags.
-Note that these tags must be applied at the compilation and linking stages.
-Hence you must either use \texttt{-tag debug} or \texttt{-tag profile}
-on the command line, or add a
-\begin{verbatim}
-true: debug
-\end{verbatim}
-line to your \tags file.
-Please note that the byte-code profiler works in a wholly different way
-and is not supported by \ocb.
-%***)
-%(*** Generating documentation using \texttt{ocamldoc}
-\subsection{Generating documentation using \texttt{ocamldoc}}
-Write the names of the modules whose interfaces will be documented in a file
-whose extension is \texttt{.odocl}, for example \texttt{foo.odocl}, then invoke
-\ocb on the target \texttt{foo.docdir/index.html}.  This will collect all the
-documentation from the interfaces (which will be build, if necessary) using
-\texttt{ocamldoc} and generate a set of HTML files under the directory
-\texttt{foo.docdir/}, which is actually a link to \texttt{\_build/foo.docdir/}.
-As for packing subdirectories into modules, the module names must be written
-one per line, without extensions and correctly capitalized.  Note that
-generating documentation in formats other than HTML or from implementations is
-not supported.
-%***)
-%(*** The display line
-\subsection{The display line}
-Provided \ocb runs in a terminal under a POSIX environment, it will
-display a sophisticated progress-indicator line that graciously interacts
-with the output of subcommands.  This line looks like this:
-\begin{verbatim}
-00:00:02 210  (180 ) main.cmx                             ONbp--il /
-\end{verbatim}
-Here, 00:00:02 is the elapsed time in hour:minute:second format since \ocb has
-been invoked; 210 is the number of external commands, typically calls to the
-compiler or the like, that may or may not have been invoked; 180 is the number
-of external commands that have not been invoked since their result is already
-in the build directory; \texttt{main.cmx} is the name of the last target built;
-\texttt{ONbp--il} is a short string that describes the tags that have been
-encountered and the slash at the end is a frame from a rotating ticker.  Hence,
-the display line has the following structure:
-\begin{verbatim}
-HH:MM:SS JOBS (CACHED) PATHNAME                           TAGS TICKER
-\end{verbatim}
-
-The tag string is made of 8 indicators which each monitor a tag. These tags
-are \texttt{ocaml}, \texttt{native}, \texttt{byte}, \texttt{program},
-\texttt{pp}, \texttt{debug}, \texttt{interf} and \texttt{link}.  Initially,
-each indicator displays a dash \texttt{-}.  If the current target has the
-monitored tag, then the indicator displays the corresponding character
-(see table \ref{tab:tag-chars}) in uppercase.  Otherwise, it displays that
-character in lowercase.  This allows you to see the set of tags that have
-been applied to files in your project during the current invocation of \ocb.
-
-Hence the tag string \texttt{ONbp--il} means that the current target
-\texttt{main.cmx} has the tags \texttt{ocaml} and \texttt{native}, and that
-the tags \texttt{ocaml}, \texttt{native}, \texttt{byte}, \texttt{program},
-\texttt{interf} and \texttt{link} have already been seen.
-
-\begin{table}
-  \begin{center}
-    \begin{tabular}{|l|c|}
-       \hline
-       \textbf{Tag} & \textbf{Display character} \\
-       \hline
-       \hline
-       ocaml    & O \\
-       \hline
-       native   & N \\
-       \hline
-       byte     & B \\
-       \hline
-       program  & P \\
-       \hline
-       pp       & R \\
-       \hline
-       debug    & D \\
-       \hline
-       interf   & I \\
-       \hline
-       link     & L \\
-       \hline
-    \end{tabular}
-  \end{center}
-  \caption{\label{tab:tag-chars} Relation between the characters displayed in
-    the tag string and the tags.}
-\end{table}
-%***)
-%(*** ocamllex, ocamlyacc and menhir
-\subsection{\texttt{ocamllex}, \texttt{ocamlyacc} and \texttt{menhir}}
-\ocb knows how to run the standard lexer and parser generator tools
-\texttt{ocamllex} and \texttt{ocamlyacc} when your files have the
-standard \texttt{.mll} and \texttt{.mly} extensions.  If you want to
-use \texttt{menhir} instead of \texttt{ocamlyacc}, you can either
-launch \ocb with the \texttt{-use-menhir} option or add a
-\begin{verbatim}
-true: use_menhir
-\end{verbatim}
-line to your \tags file.  Note that there is currently no way
-of using \texttt{menhir} and \texttt{ocamlyacc} in the same execution
-of \ocb.
-%***)
-%(*** Changing the compilers
-\subsection{Changing the compilers or tools}
-As \ocb is part of your OCaml distribution, it knows if it can call the
-native compilers and tools (\texttt{ocamlc.opt}, \texttt{ocamlopt.opt}...)
-or not.  However you may want \ocb to use another \texttt{ocaml} compiler
-for different reasons (such as cross-compiling or using a wrapper such as
-\texttt{ocamlfind}).  Here is the list of relevant options:
-\begin{itemize}
-  \item \texttt{-ocamlc <command>}
-  \item \texttt{-ocamlopt <command>}
-  \item \texttt{-ocamldep <command>}
-  \item \texttt{-ocamlyacc <command>}
-  \item \texttt{-menhir <command>}
-  \item \texttt{-ocamllex <command>}
-  \item \texttt{-ocamlmktop <command>}
-  \item \texttt{-ocamlrun <command>}
-\end{itemize}
-
-%***)
-\subsection{Writing a \texttt{myocamlbuild.ml} plugin}
-%(*** Interaction with version control systems
-\subsection{Interaction with version control systems}
-Here are tips for configuring your version control system to ignore the files
-and directories generated by \ocb.
-
-The directory \texttt{\_build} and any symbolic links
-pointing into \texttt{\_build} should be ignored.
-To do this, you must add the following ignore patterns to your version
-control system's ignore set:
-\begin{verbatim}
-_build
-*.native
-*.byte
-*.d.native
-*.p.byte
-\end{verbatim}
-
-For CVS, add the above lines to the \texttt{.cvsignore} file.
-For Subversion (SVN), type \texttt{svn propedit svn:ignore .} and add the
-above lines.
-%***)
-%(*** A shell script for driving it all?
-\subsection{A shell script for driving it all?}
-{\em To shell or to make ?}
-Traditionally, makefiles have two major functions.  The first one
-is the dependency-ordering, rule-matching logic used for compiling.
-The second one is as a dispatcher for various actions defined using
-phony targets with shell script actions.  These actions include cleaning,
-cleaning really well, archiving, uploading and so on.  Their characteristic
-is that they rely little or not on the building process -- they either need
-the building to have been completed, or they don't need anything.
-As \texttt{/bin/sh} scripts have been here for three to four decades and are
-not going anywhere, why not replace that functionality of makefiles with a
-shell script ?  We have thought of three bad reasons:
-\begin{itemize}
-  \item Typing \texttt{make} to compile is now an automatism,
-  \item We need to share variable definitions between rules and actions,
-  \item Escaping already way too special-character-sensitive shell code with
-  invisible tabs and backslashes is a dangerously fun game.
-\end{itemize}
-We also have bad reasons for not using an OCaml script to drive everything:
-\begin{itemize}
-  \item \texttt{Sys.command} calls the \texttt{/bin/sh} anyway,
-  \item Shell scripts can execute partial commands or commands with badly formed arguments.
-  \item Shell scripts are more concise for expressing...  shell scripts.
-\end{itemize}
-Anyway you are of course free to use a makefile or an OCaml script to call ocamlbuild.
-Here is an example shell driver script:
-\begin{verbatim}
-#!/bin/sh
-
-set -e
-
-TARGET=epoch
-FLAGS="-libs unix,nums"
-OCAMLBUILD=ocamlbuild
-
-ocb()
-{
-  $OCAMLBUILD $FLAGS $*
-}
-
-rule() {
-  case $1 in
-    clean)  ocb -clean;;
-    native) ocb $TARGET.native;;
-    byte)   ocb $TARGET.byte;;
-    all)    ocb $TARGET.native $TARGET.byte;;
-    depend) echo "Not needed.";;
-    *)      echo "Unknown action $1";;
-  esac;
-}
-
-if [ $# -eq 0 ]; then
-  rule all
-else
-  while [ $# -gt 0 ]; do
-    rule $1;
-    shift
-  done
-fi
-\end{verbatim}
-%***)
-%\subsection{Common errors}
-%***)
-\appendix
-%(*** Motivations
-\section{Motivations}
-{\em This inflammatory appendix describes the frustration that led us to write \ocb.}
-
-Many people have painfully found that the utilities of the \texttt{make}
-family, namely GNU Make, BSD Make, and their derivatives, fail to scale to
-large projects, especially when using multi-stage compilation rules, such as
-custom pre-processors, unless dependencies are hand-defined.  But as your
-project gets larger, more modular, and uses more diverse pre-processing tools,
-it becomes increasingly difficult to correctly define dependencies by hand.
-Hence people tend to use language-specific tools that attempt to extract
-dependencies.  However another problem then appears: \texttt{make} was designed
-with the idea of a static dependency graph.  Dependency extracting tools,
-however, are typically run by a rule in \texttt{make} itself; this means that
-make has to reload the dependency information.  This is the origin of the
-\texttt{make clean; make depend; make} mantra.  This approach tends to work
-quite well as long as all the files sit in a single directory and there is only
-one stage of pre-processing.  If there are two or more stages, then dependency
-extracting tools must be run two or more times - and this means multiple
-invocations of \texttt{make}.  Also, if one distributes the modules of a large
-project into multiple subdirectories, it becomes difficult to distribute the
-makefiles themselves, because the language of \texttt{make} was not conceived
-to be modular; the only two mechanisms permitted, inclusion of makefile
-fragments, and invocation of other make instances, must be skillfully
-coordinated with phony target names (\texttt{depend1, depend2...}) to insure
-inclusion of generated dependencies with multi-stage programming; changes in
-the structure of the project must be reflected by hand and the order of
-variable definitions must be well-thought ahead to avoid long afternoons spent
-combinatorially fiddling makefiles until it works but no one understands why.
-
-These problems become especially apparent with OCaml: to ensure type safety and
-to allow a small amount of cross-unit optimization when compiling native code,
-interface and object files include cryptographical digests of interfaces they
-are to be linked with.  This means that linking is safer, but that makefile sloppiness
-leads to messages such as:
-\begin{verbatim}
-Files foo.cmo and bar.cmo
-make inconsistent assumptions over interface Bar
-\end{verbatim}
-
-The typical reaction is then to issue the mantra \texttt{make clean; make
-depend; make} and everything compiles just fine... from the beginning.  Hence
-on medium projects, the programmer often has to wait for minutes instead of the
-few seconds that would be taken if \texttt{make} could correctly guess the
-small number of files that really had to be recompiled.
-
-It is not surprising that hacking a build tool such as \texttt{make} to include
-a programming language while retaining the original syntax and semantics gives
-an improvised and cumbersome macro language of dubious expressive power.  For
-example, using GNU make, suppose you have a list of \texttt{.ml}s that you want
-to convert into a list including both \texttt{.cmo}s and \texttt{.cmi}s, that
-is you want to transform \texttt{a.ml b.ml c.ml} into \texttt{a.cmi a.cmo b.cmi
-b.cmo c.cmi c.cmo} while preserving the dependency order which must be hand
-specified for linking \footnote{By the way, what's the point of having a
-declarative language if \texttt{make} can't sort the dependencies in
-topological order for giving them to \texttt{gcc} or whatever ?}.
-Unfortunately \texttt{\$patsubst \%.ml, \%.cmi \%.cmo, a.ml b.ml c.ml} won't
-work since the \%-sign in the right-hand of a \texttt{patsubst} gets
-substituted only once.  You then have to delve into something that is hardly
-lambda calculus: an intricate network of \texttt{foreach}, \texttt{eval},
-\texttt{call} and \texttt{define}s may get you the job done, unless you chicken
-out and opt for an external \texttt{awk}, \texttt{sed} or \texttt{perl} call.
-People who at this point have not lost their temper or sanity usually resort to
-metaprogramming by writing Makefile generators using a mixture of shell and m4.
-One such an attempt gave something that is the nightmare of wannabe package
-maintainers: it's called \texttt{autotools}.
-
-Note that it is also difficult to write \texttt{Makefiles} to build object
-files in a separate directory.  It is not impossible since the language of
-\texttt{make} is Turing-complete, a proof of which is left as an exercise.
-Note that building things in a separate directory is not necessarily a young
-enthusiast's way of giving a different look and feel to his projects -- it may
-be a good way of telling the computer that \texttt{foo.mli} is generated by
-\texttt{ocamlyacc} using \texttt{foo.mly} and can thus be removed.
-%***)
-%(*** Default rules
-\section{Summary of default rules}
-The contents of this table give a summary of the most important default rules.
-To get the most accurate and up-to-date information, launch \ocb with the
-\texttt{-documentation} option.
-\begin{center}
-\small
-\begin{tabular}{|l|l|p{5cm}|}
-  \hline
-   \textbf{Tags} & \textbf{Dependencies} & \textbf{Targets} \\
-  \hline
-  \hline
-   &  \%.itarget  &  \%.otarget  \\
-  \hline
-   ocaml &  \%.mli \%.mli.depends  &  \%.cmi  \\
-  \hline
-   byte, debug, ocaml &  \%.mlpack \%.cmi &  \%.d.cmo  \\
-  \hline
-   byte, ocaml &  \%.mlpack  &  \%.cmo \%.cmi  \\
-  \hline
-   byte, ocaml &  \%.mli \%.ml \%.ml.depends \%.cmi  & \%.d.cmo  \\
-  \hline
-   byte, ocaml &  \%.mli \%.ml \%.ml.depends \%.cmi  & \%.cmo  \\
-  \hline
-   native, ocaml, profile & \%.mlpack \%.cmi  &  \%.p.cmx \%.p.o  \\
-  \hline
-   native, ocaml &  \%.mlpack \%.cmi &  \%.cmx \%.o  \\
-  \hline
-   native, ocaml, profile &  \%.ml \%.ml.depends \%.cmi  & \%.p.cmx \%.p.o  \\
-  \hline
-   native, ocaml &  \%.ml \%.ml.depends \%.cmi  & \%.cmx \%.o  \\
-  \hline
-   debug, ocaml &  \%.ml \%.ml.depends \%.cmi  & \%.d.cmo  \\
-  \hline
-   ocaml &  \%.ml \%.ml.depends  &  \%.cmo \%.cmi  \\
-  \hline
-   byte, debug, ocaml, program &  \%.d.cmo  &  \%.d.byte \\
-  \hline
-   byte, ocaml, program &  \%.cmo  &  \%.byte  \\
-  \hline
-   native, ocaml, profile, program &  \%.p.cmx \%.p.o  & \%.p.native  \\
-  \hline
-   native, ocaml, program &  \%.cmx \%.o  & \%.native  \\
-  \hline
-   byte, debug, library, ocaml &  \%.mllib  & \%.d.cma  \\
-  \hline
-   byte, library, ocaml &  \%.mllib  &  \%.cma  \\
-  \hline
-   byte, debug, library, ocaml &  \%.d.cmo  &  \%.d.cma  \\
-  \hline
-   byte, library, ocaml &  \%.cmo  &  \%.cma  \\
-  \hline
-    & lib\%(libname).clib & lib\%(libname).a dll\%(libname).so  \\
-  \hline
-    & \%(path)/lib\%(libname).clib & \%(path)/lib\%(libname).a \%(path)/dll\%(libname).so \\
-  \hline
-   library, native, ocaml, profile & \%.mllib  &  \%.p.cmxa \%.p.a  \\
-  \hline
-   library, native, ocaml &  \%.mllib  & \%.cmxa \%.a  \\
-  \hline
-   library, native, ocaml, profile & \%.p.cmx \%.p.o  &  \%.p.cmxa \%.p.a  \\
-  \hline
-   library, native, ocaml &  \%.cmx \%.o  & \%.cmxa \%.a  \\
-  \hline
-    &  \%.ml  &  \%.ml.depends  \\
-  \hline
-    &  \%.mli  &  \%.mli.depends  \\
-  \hline
-   ocaml &  \%.mll  &  \%.ml  \\
-  \hline
-   doc, ocaml &  \%.mli \%.mli.depends  &  \%.odoc  \\
-  \hline
-    &  \%.odocl  & \%.docdir/index.html \\
-  \hline
-   ocaml &  \%.mly  &  \%.ml \%.mli  \\
-  \hline
-    &  \%.c  &  \%.o  \\
-  \hline
-    &  \%.ml \%.ml.depends  & \%.inferred.mli  \\
-  \hline
-\end{tabular}
-\end{center}
-%***)
-\end{document}
diff --git a/ocamlbuild/manual/myocamlbuild.ml b/ocamlbuild/manual/myocamlbuild.ml
deleted file mode 100644 (file)
index 9cc944e..0000000
+++ /dev/null
@@ -1,119 +0,0 @@
-(*p
-  \usepackage{xspace}
-  \newcommand{\ocb}{\texttt{ocamlbuild}\xspace}
-  \newcommand{\tags}{\texttt{\_tags}\xspace}
-*)
-let main = let module M = struct
-
-open Ocamlbuild_plugin;;
-open Command;;
-
-let pdflatex = ref (A"pdflatex");;
-let ocamlweb = ref (A"ocamlweb");;
-
-(*c dispatch is the main call of an \ocb plugin *)
-dispatch begin function
-
-  (*c Here one can change the default value of options, they can still be updated by a command line option. *)
-  | Before_options ->
-
-      (*c This will put all warnings to \texttt{ocaml\{c,opt\}} by default. *)
-      Options.ocaml_cflags := ["-w";"A"]
-
-  (*c Here one can change the final value of options. *)
-  | After_options ->
-
-      (*c This avoids the creation of symbolic links to the build directory. *)
-      Options.make_links := false
-
-  (*c This hook is called before the hygiene phase.
-      This phase also serve as collecting all the information about the
-      source tree. *)
-  | Before_hygiene ->
-
-      (*c Here you can dynamically tag some files or directories. *)
-      (*c This is done here by checking the [SOME_COND] variable which is
-          impossible in the \tags file. *)
-      if getenv "SOME_COND" ~default:"false" = "true" then
-
-        (*c By setting foo\_dir as not\_hygienic one say that the foo directory
-            can contains non hygienic files (such as \texttt{.cmi}, \texttt{.cmo}\ldots). *)
-        tag_file "foo_dir" ["not_hygienic"]
-
-  (*c One can also do things after the hygiene step. *)
-  | After_hygiene -> ()
-
-  (*c One can setup rules before the standard ones but that's not recommended. *)
-  | Before_rules -> ()
-
-  (*c Here one can add or override new rules *)
-  | After_rules ->
-
-      (*c Rules can be declared by a call of the form
-          [rule name ~prod ~dep action].
-          The first argument is the name of the rule.
-          [~prod:string] specifies the product of the rule.
-          Note that [~prods:string list] also exists.
-          [~dep] and [~deps] are for dependencies *)
-      rule "LaTeX to PDF conversion rule"
-        ~prod:"%.pdf"
-        ~dep:"%.tex"
-        begin fun env _build ->
-
-          (*c The action is a function that receive two arguments:
-               [env] is a conversion function that substitutes `\%' occurrences
-               according to the targets to which the rule applies.
-               [_build] can be called to build new things (dynamic dependencies). *)
-          let tex = env "%.tex" and _pdf = env "%.pdf" in
-
-          (*c Here we say: ``We compile the file tex form \LaTeX\xspace to PDF''.
-              Note that in fact that is a set of tags, thus the order does not
-              matter. But you got the idea. *)
-          let tags = tags_of_pathname tex++"compile"++"LaTeX"++"pdf" in
-
-          (*c Here we produce the command to run.
-              [S]  is for giving a sequence of command pieces.
-              [A]  is for atoms.
-              [P]  is for pathnames.
-              [Px] is a special pathname that should be the main product of the
-                   rule (for display purposes).
-              [T]  is for tags.
-
-              The other constructors are given in the documentation of the
-              [Command] module in [Signatures.COMMAND]. *)
-          let cmd = Cmd(S[!pdflatex; T tags; P tex; Sh"< /dev/null"]) in
-          (*c Hoping that \LaTeX will converge in two iterations *)
-          Seq[cmd; cmd]
-        end;
-
-      (*c Here we make an extension of any rule that produces a command
-          containing these tags. *)
-      flag ["compile"; "LaTeX"; "pdf"; "safe"] (A"-halt-on-error");
-
-      (*c Here we give an exception: the file ``manual.tex'' is tagged ``safe''.\ocweol
-          With this tag we add the -halt-on-error flag during the \LaTeX
-          compilation. *)
-      tag_file "manual.tex" ["safe"];
-
-      (*c The generic \LaTeX rule could look at the file searching for some
-          \verb'\input{}' command, but \LaTeX is so complex that it will
-          be hard to make this solution complete.
-          Here we manually inject some dependencies at one particular point. *)
-
-      (*c The [dep] function takes tags and pathnames. This will build pathnames
-          if a command contains these tags. Note that every file [some_file_name] is
-          tagged [file:some_file_name]. *)
-      dep ["compile"; "LaTeX"; "pdf"; "file:manual.tex"]
-          ["ocamlweb.sty"; "myocamlbuild.tex"];
-
-      rule "OCaml to LaTeX conversion rule (using ocamlweb)"
-        ~prod:"%.tex"
-        ~dep:"%.ml"
-        begin fun env _build ->
-          let tex = env "%.tex" and ml = env "%.ml" in
-          let tags = tags_of_pathname ml++"ocamlweb"++"LaTeX" in
-          Cmd(S[!ocamlweb; T tags; P ml; A"-o"; Px tex])
-        end;
-end;;
-
-end in ();;
\ No newline at end of file
diff --git a/ocamlbuild/manual/trace.out b/ocamlbuild/manual/trace.out
deleted file mode 100644 (file)
index cb2a355..0000000
+++ /dev/null
@@ -1,83 +0,0 @@
-00:00:00 0    (0) STARTING                -------- |
-00:00:00 1    (0) back.ml.depends         O------- |
-00:00:00 8    (0) keyword.mli.depends     O-b---i- |
-00:00:00 16   (0) mark.cmi                O-B---I- /
-00:00:00 20   (0) stringSet.cmi           O-B---I- /
-00:00:00 24   (0) time.mli.depends        O-b---i- /
-00:00:00 32   (0) stdlib.ml.depends       O-b---i- -
-00:00:00 35   (0) stringSet.cmx           ONb---i- -
-00:00:00 37   (0) settings.cmx            ONb---i- -
-00:00:00 44   (0) lineCount.cmx           ONb---i- \
-00:00:00 45   (0) interface.ml.depends    Onb---i- \
-00:00:00 45   (0) interface.ml.depends    Onb---i- \
-00:00:01 52   (0) stringMap.ml.depends    Onb---i- |
-00:00:01 53   (0) printer.cmx             ONb---i- |
-00:00:01 53   (0) printer.cmx             ONb---i- |
-00:00:01 57   (0) time.cmx                ONb---i- /
-00:00:01 64   (0) partialGrammar.cmi      OnB---I- /
-00:00:01 67   (0) parameters.ml.depends   Onb---i- /
-00:00:01 72   (0) misc.ml.depends         Onb---i- -
-00:00:01 74   (0) keyword.ml.depends      Onb---i- -
-00:00:01 77   (0) error.cmi               OnB---I- -
-00:00:01 82   (0) parameters.cmx          ONb---i- \
-00:00:01 84   (0) action.cmx              ONb---i- \
-00:00:01 87   (0) parser.mli.depends      Onb---i- \
-00:00:02 96   (0) parserAux.cmx           ONb---i- |
-00:00:02 103  (0) tarjan.ml.depends       Onb---i- |
-00:00:02 106  (0) unionFind.cmx           ONb---i- |
-00:00:02 108  (0) lexer.mll               Onb---i- /
-00:00:02 108  (0) lexer.mll               Onb---i- /
-00:00:02 110  (0) lexer.cmo               OnB---i- -
-00:00:02 111  (0) parser.cmx              ONb---i- -
-00:00:02 112  (0) partialGrammar.cmx      ONb---i- -
-00:00:02 114  (0) lexer.cmx               ONb---i- \
-00:00:02 116  (0) codeBits.mli.depends    Onb---i- \
-00:00:03 118  (0) preFront.cmx            ONb---i- |
-00:00:03 120  (0) tokenType.cmx           ONb---i- |
-00:00:03 123  (0) inliner.cmi             OnB---I- |
-00:00:03 126  (0) traverse.cmx            ONb---i- /
-00:00:03 126  (0) traverse.cmx            ONb---i- /
-00:00:03 129  (0) code.cmi                OnB---I- /
-00:00:03 131  (0) lr1.mli.depends         Onb---i- /
-00:00:03 134  (0) lookahead.mli.depends   Onb---i- -
-00:00:03 137  (0) gMap.ml.depends         Onb---i- -
-00:00:03 144  (0) lr1.cmi                 OnB---I- -
-00:00:03 146  (0) item.ml.depends         Onb---i- -
-00:00:03 149  (0) patricia.cmi            OnB---I- \
-00:00:03 151  (0) patricia.cmx            ONb---i- \
-00:00:03 151  (0) patricia.cmx            ONb---i- \
-00:00:04 154  (0) front.cmi               OnB---I- |
-00:00:04 164  (0) listMonad.ml.depends    Onb---i- |
-00:00:04 167  (0) listMonad.cmx           ONb---i- |
-00:00:04 170  (0) infer.cmi               OnB---I- /
-00:00:04 171  (0) lexmli.mll              Onb---i- /
-00:00:04 172  (0) lexmli.ml.depends       Onb---i- /
-00:00:04 174  (0) lexdep.mll              Onb---i- -
-00:00:04 177  (0) interface.cmx           ONb---i- -
-00:00:04 178  (0) IO.ml.depends           Onb---i- \
-00:00:04 181  (0) lexmli.cmx              ONb---i- \
-00:00:04 183  (0) IO.cmx                  ONb---i- \
-00:00:05 187  (0) infer.cmx               ONb---i- |
-00:00:05 190  (0) dot.cmi                 OnB---I- |
-00:00:05 193  (0) compressedBitSet.cmi    OnB---I- /
-00:00:05 195  (0) dot.cmx                 ONb---i- /
-00:00:05 197  (0) grammar.cmx             ONb---i- /
-00:00:05 197  (0) grammar.cmx             ONb---i- /
-00:00:05 197  (0) grammar.cmx             ONb---i- -
-00:00:05 200  (0) infiniteArray.cmi       OnB---I- -
-00:00:05 201  (0) item.cmx                ONb---i- -
-00:00:05 204  (0) breadth.mli.depends     Onb---i- \
-00:00:05 208  (0) invariant.ml.depends    Onb---i- \
-00:00:06 212  (0) invariant.cmx           ONb---i- |
-00:00:06 213  (0) inliner.cmx             ONb---i- |
-00:00:06 214  (0) code.cmx                ONb---i- /
-00:00:06 216  (0) back.native             ONbP--iL -
-Finished, 216 targets (0 cached) in 00:00:06.
-Finished, 216 targets (0 cached) in 00:00:06.
-Finished, 216 targets (0 cached) in 00:00:06.
-Finished, 216 targets (0 cached) in 00:00:06.
-Finished, 216 targets (0 cached) in 00:00:06.
-Finished, 216 targets (0 cached) in 00:00:06.
-Finished, 216 targets (0 cached) in 00:00:06.
-Finished, 216 targets (0 cached) in 00:00:06.
-Finished, 216 targets (0 cached) in 00:00:06.
index 3ba8550242ee5e38ab1d3f2eab313080d1c7d56f..a7839d059dca5a10ee30a37a1a2672ab1354f768 100644 (file)
@@ -332,7 +332,7 @@ module Digest = struct
 (* USEFUL FOR DIGEST DEBUGING
   let digest_log_hash = Hashtbl.create 103;;
   let digest_log = "digest.log";;
-  let digest_log_oc = open_out_gen [Open_append;Open_wronly;Open_text;Open_creat] 0o644 digest_log;;
+  let digest_log_oc = open_out_gen [Open_append;Open_wronly;Open_text;Open_creat] 0o666 digest_log;;
   let my_to_hex x = to_hex x ^ ";";;
   if sys_file_exists digest_log then
     with_input_file digest_log begin fun ic ->
index 79c149371b4734571e7716b2d8d1d4623d618ccc..f996f48e876439d3e9b63e6fe37d7d0cee05b2e4 100644 (file)
@@ -388,6 +388,7 @@ end;;
 
 flag ["ocaml"; "ocamlyacc"] (atomize !Options.ocaml_yaccflags);;
 flag ["ocaml"; "menhir"] (atomize !Options.ocaml_yaccflags);;
+flag ["ocaml"; "doc"] (atomize !Options.ocaml_docflags);;
 
 (* Tell menhir to explain conflicts *)
 flag [ "ocaml" ; "menhir" ; "explain" ] (S[A "--explain"]);;
@@ -453,6 +454,8 @@ let () =
 let () =
   pflag ["ocaml"; "native"; "compile"] "for-pack"
     (fun param -> S [A "-for-pack"; A param]);
+  pflag ["ocaml"; "native"; "pack"] "for-pack"
+    (fun param -> S [A "-for-pack"; A param]);
   pflag ["ocaml"; "native"; "compile"] "inline"
     (fun param -> S [A "-inline"; A param]);
   pflag ["ocaml"; "compile"] "pp"
@@ -462,7 +465,9 @@ let () =
   pflag ["ocaml"; "doc"] "pp"
     (fun param -> S [A "-pp"; A param]);
   pflag ["ocaml"; "infer_interface"] "pp"
-    (fun param -> S [A "-pp"; A param])
+    (fun param -> S [A "-pp"; A param]);
+  pflag ["ocaml";"compile";] "warn" 
+    (fun param -> S [A "-w"; A param])
 
 let camlp4_flags camlp4s =
   List.iter begin fun camlp4 ->
diff --git a/ocamlbuild/ocamlbuild-presentation.rslide b/ocamlbuild/ocamlbuild-presentation.rslide
deleted file mode 100644 (file)
index bb32c47..0000000
+++ /dev/null
@@ -1,362 +0,0 @@
-#########################################################################
-#                                                                       #
-#                                 OCaml                                 #
-#                                                                       #
-#   Nicolas Pouillard, Berke Durak, projet Gallium, INRIA Rocquencourt  #
-#                                                                       #
-#   Copyright 2007 Institut National de Recherche en Informatique et    #
-#   en Automatique.  All rights reserved.  This file is distributed     #
-#   under the terms of the Q Public License version 1.0.                #
-#                                                                       #
-#########################################################################
-
-# Works with rslide revision 8
-# http://gallium.inria.fr/~pouillar/rslide/rslide
-documentclass :beamer, :t, :compress, :red
-usepackage    :inputenc, :utf8
-
-words "**OCaml**", "**ocamlbuild**", "_Makefile_"
-
-title     "ocamlbuild"
-subtitle  "a compilation manager for OCaml projects"
-authors   "Berke Durak", "Nicolas Pouillard"
-institute do
-  > @@Berke.Durak@inria.fr@@
-  hfill
-  > @@Nicolas.Pouillard@inria.fr@@
-end
-
-usetheme      :JuanLesPins
-usefonttheme  :serif
-beamer_header '\setbeamercolor*{titlelike}{parent=structure}'
-at_begin_section do
-  slide "Outline" do
-    tableofcontents 'sectionstyle=show/shaded',
-                    'subsectionstyle=show/shaded/hide'
-  end
-end
-beamer_footline 50, 0
-
-extend do
-  def code_caml *a, &b
-    latex_only.small.code_inline(*a, &b)
-    html_only.code(*a, &b)
-  end
-  def code_tags *a, &b
-    latex_only.small.code_inline(*a, &b)
-    html_only.code(*a, &b)
-  end
-end
-
-html_only do
-  paragraph.huge1 "Warning: this presentation has a degraded style compared to the Beamer/PDF version"
-end
-
-short_version = true
-
-maketitle
-
-h1 "Introduction"
-
-slide "Why such a tool?", '<+->' do
-  * To make our OCaml life easier
-  * To stop writing poor MakefileS
-  * To have a tool that Just worksâ„¢
-end
-
-slide "What does ocamlbuild handle?", '<+->' do
-
-  box "Regular OCaml projects of arbitrary size" do
-    > Trivially handled using the command line options.
-  end
-
-  box "Mostly regular OCaml projects with common exceptions" do
-    > Requires writing one tag file (__tags_) that declares those exceptions.
-  end
-
-  box "Almost any project" do
-    > Accomplished by writing an ocamlbuild plugin.
-  end
-
-end
-
-slide "What does ocamlbuild provide?" do
-  list do
-    overlay 1,2 do
-      * Automated whole-project compilation
-      * Minimal recompilation
-      * Lots of useful targets (doc, debugging, profiling...)
-      * Supports multiple build directories
-      * Automatic and safe cleaning
-      * A source directory uncluttered by object files
-      * A portable tool shipped with OCaml
-    end
-    overlay 2 do
-      * Saves time and money!
-    end
-  end
-end
-
-h1 "Regular OCaml projects"
-
-slide "What's a regular OCaml project?" do
-  box "It's a project that needs no exceptions from the standard rules:" do
-    * Has compilation units (_ml_ and _mli_ files)
-    * May have parsers and lexers (_mly_ and _mll_ files)
-    * May use packages, libraries and toplevels (_ml{pack,lib,top}_)
-    * May link with external libraries
-    * Has one main OCaml unit from which these units are reachable
-  end
-end
-
-slide "How difficult is it to build regular projects by hand?" do
-  box "OCaml has subtle compilation rules" do
-    * Interfaces (_.mli_) can be absent, yet buildable (_.mly_)
-    * Native and bytecode suffixes and settings differ
-    * Native packages are difficult to do (_-for-pack_)
-    * Linkage order must be correctly computed
-    * Include directories must be ordered
-    * _ocamldep_ gives partial information (too conservative)
-  end
-end
-
-slide "How does ocamlbuild manage all that?" do
-  > It has a lot of hand-crafted OCaml-specific compilation logic!
-  box "A dynamic exploration approach", '<2>' do
-    * Start from the given targets
-    * Attempt to discover dependencies using _ocamldep_
-    * _ocamldep_ cannot always be trusted: backtrack if necessary
-    * Launch compilations and discover more dependencies
-  end
-end
-
-unless short_version
-slide "Demo..." do
-  box "Many projects can be compiled with a single command:" do
-    * Menhir: _ocamlbuild -lib unix back.native_
-    * Hevea: _ocamlbuild latexmain.native_
-    * Ergo: _ocamlbuild main.native_
-    * Ocamlgraph: _ocamlbuild -cflags -for-pack,Ocamlgraph demo.native_
-    * ...
-  end
-  box "To be fair..." do
-    > Some of these projects require that a _version.ml_
-      or _stdlib.ml_ file be generated beforehand.
-  end
-end
-end
-
-h1 "Dealing with exceptions to standard rules"
-
-slide "What's an exception?" do
-  box "Files that need specific flags" do
-    * Warnings to be enabled or disabled
-    * Debugging (_-g_), profiling (_-p_), type annotation,
-      recursive types, _-linkall_, _-thread_, _-custom_...
-  end
-  list do
-    * Units that need external C libraries
-    * Binaries that need external OCaml libraries
-    * Directories that must be included or excluded
-    * Dependencies that cannot be discovered
-  end
-end
-
-slide "_Make_ and exceptions" do
-  * The _make_ tool can't handle exceptions very well
-  * Needs exceptions to be encoded as specific rules
-  * This generally makes rules and exceptions tightly bound by variables
-  * This creates non-modular makefiles that don't *scale*
-end
-
-slide "The tags, our way to specify exceptions", 'fragile=singleslide' do
-  list do
-    * Tagging is made in _tags files
-    * Each line is made of a pattern and a list of signed tags
-    * A line adds or removes tags from matching files
-    * Patterns are boolean combinations of shell-like globbing expressions
-  end
-  code_tags do
-    : "funny.ml":           rectypes
-      ~<**/*.ml*>~:           warn_A, warn_error_A, debug, annot
-      "foo.ml" or "bar.ml": warn_v, warn_error_v
-      "vendor.ml":          -warn_A, -warn_error_A
-      <main.{byte,native}>: use_unix
-      "main.byte":          use_dynlink, linkall
-      "test":               not_hygienic
-      <satsolver.cm[io]>:   precious
-  end
-end
-
-slide "How tags and rules give commands", 'fragile=singleslide' do
-  box "Files are tagged using tagging rules" do
-    code_tags do
-      : "foo/bar.ml": rectypes
-    end
-  end
-  box "Rules then produce commands with *tagged holes*" do
-    code_caml do
-      : let tagged_hole =
-          tags_for(ml)++"ocaml"++"compile"++"byte" in
-        Cmd(S[A"ocamlc";A"-c";T tagged_hole;P ml;A"-o";P cmo])
-    end
-  end
-  box "These holes are filled by command fragments (such as flags)" do
-    code_caml do
-      : flag ["ocaml"; "compile"; "byte"; "rectypes"]
-             (A"-rectypes")
-    end
-  end
-end
-
-slide "Tags and dependencies", 'fragile=singleslide' do
-  box "One can define dependencies triggered by combinations of tags" do
-    code_caml do
-      : dep ["ocaml"; "link"; "byte"; "program"; "plugin:foo"]
-            ["plugin/pluginlib.cma"; "plugin/plugin_foo.cmo"]
-    end
-  end
-  box "By tagging files we make things happen" do
-    code_tags do
-      : "test.byte": plugin:foo
-    end
-  end
-end
-
-h1 "Writing an ocamlbuild plugin"
-
-slide "Not a specific language, but plain OCaml code" do
-  list do
-    * Plugins are compiled on the fly
-    * Dynamic configuration is feasible
-  end
-  box "With a plugin one can:" do
-    * Extend rules (add new ones, override old ones)
-    * Add flags and dependencies based on tags
-    * Tag files
-    * Change options
-    * Define the directory structure precisely
-    * Help _ocamldep_
-    * Specify external libraries
-  end
-end
-
-unless short_version
-slide "A plugin example" do
-  > Let's read it in live...
-end
-end
-
-# slide "ocamlbuild scales" do
-#   > Indeed ocamlbuild is used as an experimental replacement in OCaml itself.
-# end
-
-h1 "General features"
-
-slide "Parallel execution where applicable" do
-  * You select the maximum number of jobs (_-j N_)
-  * Rules know how to ask for parallel targets
-  * The system keeps things scheduled correctly
-  * Example: Separate compilation of byte code
-  * (Optimal scheduling would require a static graph)
-end
-
-unless short_version
-slide "A status bar for your visual comfort" do
-  list do
-    * Compilation tools echo commands and their output
-    * This creates a long and boring output that scrolls too fast
-    * Here you can keep an eye on what is going on!
-    * It succinctly displays time, number of targets, and tags
-    * Command outputs are correctly multiplexed
-    * A trace of the commands executed is kept in a log file
-    * This log file can be used as the basis of a shell script
-  end
-  latex_only.example do
-    invisible_join do
-      count = 0
-      mod = 1
-      File.read("manual/trace.out").each do |line|
-        count += 1
-        next if count % mod != 0
-        line.gsub!("\\", "|")
-        line.latex_encode!
-        line.gsub!(/( +)/) { "\\hspace{#{0.49 * $1.size}em}" }
-        line.chomp!
-        s = "\\only<#{count / mod}>{\\tt #{line}}%\n"
-        verbatim_text s
-      end
-    end
-  end
-end
-
-slide "Hygiene and sterilization" do
-  > ocamlbuild has a Hygiene Squad (HS) that checks your source tree for cleanliness
-  box "It has preconceived but useful cleanliness notions", '<1->' do
-    * Files dirty by default: _.cmi_, _.cmo_, _.cma_, _.cmx_...
-    * _ocamllex_/_ocamlyacc_ files: _.ml_ *if* _.mll_, _.ml_&_.mli_ *if* _.mly_...
-  end
-  box "If unsatisfied, the HS produces a sterilization script", '<2->' do
-    * Read it carefully (or work with versioning)
-    * Run at your own risks
-  end
-  box "HS can be told of exceptions", '<3->' do
-    > Files or directories tagged as __not_hygienic__ or _precious_.
-  end
-end
-end
-
-slide "Some supported tools" do
-  box "_Menhir_ as an _ocamlyacc_ replacement", '<1->' do
-    * Enabled with the __use_menhir__ global tag or the __-use-menhir__ option
-    * Handles implicit dependencies using _--infer_
-  end
-  box "_Ocamldoc_ to build your doc", '<2->' do
-    * Separated construction using (_-dump_/_-load_)
-    * Handles ??HTML??, ??LaTeX??, ??Man??, ??Dot??, ??TeXi??
-  end
-  # box "_ocamlmklib_, _ocamlmktop_" do
-  #   > Basic support using _.mllib_ and _.mltop_ files
-  # end
-  box "_Camlp4_ aware", '<3->' do
-    * Tags allow to setup any installed _Camlp4_ preprocessor
-    * Fine grained dependencies help a lot...
-  end
-end
-
-h1 "Conclusion"
-
-slide "Resume" do
-  box "ocamlbuild can be used in three ways:", '<1->' do
-    * With only command-line options for fully regular projects
-    * With the __tags_ file for intermediate projects
-    * With a plugin for the most complex projects
-  end
-  box "ocamlbuild saves your time by:", '<2->' do
-    * Building your project gently
-    * Compiling only as necessary
-    * Running commands in parallel
-    * Keeping your house clean
-    * Letting you concentrate on your code!
-  end
-end
-
-unless short_version
-slide "Acknowledgments" do
-  box "For enlightening discussions about OCaml internals:", '<1->' do
-    * Xavier Leroy
-    * Damien Doligez
-  end
-  box "For his insights about OCaml dependencies:", '<2->' do
-    * Alain Frisch
-  end
-  box "For letting this happen:", '<3->' do
-    * Michel Mauny
-  end
-end
-
-slide "Conclusion", '<+->' do
-  * ocamlbuild is not perfect but already damn useful
-  * Try it now! It's in OCaml 3.10!
-end
-end
index d17e0dc13649b5a12fcd95e2a00b61b6c35b4dab..1be4b6360fc9c75868ef28cc9f18ef2403cd73d6 100644 (file)
@@ -89,6 +89,7 @@ let ocaml_mods_internal = ref []
 let ocaml_pkgs_internal = ref []
 let ocaml_lflags_internal = ref []
 let ocaml_cflags_internal = ref []
+let ocaml_docflags_internal = ref []
 let ocaml_ppflags_internal = ref []
 let ocaml_yaccflags_internal = ref []
 let ocaml_lexflags_internal = ref []
@@ -162,6 +163,8 @@ let spec = ref (
    "-lflags", String (add_to ocaml_lflags_internal), "<flag,...> (idem)";
    "-cflag", String (add_to' ocaml_cflags_internal), "<flag> Add to ocamlc compile flags";
    "-cflags", String (add_to ocaml_cflags_internal), "<flag,...> (idem)";
+   "-docflag", String (add_to' ocaml_docflags_internal), "<flag> Add to ocamldoc flags";
+   "-docflags", String (add_to ocaml_docflags_internal), "<flag,...> (idem)";
    "-yaccflag", String (add_to' ocaml_yaccflags_internal), "<flag> Add to ocamlyacc flags";
    "-yaccflags", String (add_to ocaml_yaccflags_internal), "<flag,...> (idem)";
    "-lexflag", String (add_to' ocaml_lexflags_internal), "<flag> Add to ocamllex flags";
@@ -224,6 +227,7 @@ let ocaml_pkgs = ref []
 let ocaml_lflags = ref []
 let ocaml_cflags = ref []
 let ocaml_ppflags = ref []
+let ocaml_docflags = ref []
 let ocaml_yaccflags = ref []
 let ocaml_lexflags = ref []
 let program_args = ref []
@@ -272,6 +276,7 @@ let init () =
   reorder ocaml_cflags ocaml_cflags_internal;
   reorder ocaml_lflags ocaml_lflags_internal;
   reorder ocaml_ppflags ocaml_ppflags_internal;
+  reorder ocaml_docflags ocaml_docflags_internal;
   reorder ocaml_yaccflags ocaml_yaccflags_internal;
   reorder ocaml_lexflags ocaml_lexflags_internal;
   reorder program_args program_args_internal;
index 91dc6c62f18ecdb37cad8b2012b1efcd66252ec2..3b6c44eca95e5af25545f686f830fce1c814372a 100644 (file)
@@ -389,6 +389,7 @@ module type OPTIONS = sig
   val ocaml_cflags : string list ref
   val ocaml_lflags : string list ref
   val ocaml_ppflags : string list ref
+  val ocaml_docflags : string list ref
   val ocaml_yaccflags : string list ref
   val ocaml_lexflags : string list ref
   val program_args : string list ref
diff --git a/ocamlbuild/test/good-output b/ocamlbuild/test/good-output
deleted file mode 100644 (file)
index 5e8af9f..0000000
+++ /dev/null
@@ -1,1090 +0,0 @@
- _____         _   ____
-|_   _|__  ___| |_|___ \
-  | |/ _ \/ __| __| __) |
-  | |  __/\__ \ |_ / __/
-  |_|\___||___/\__|_____|
-
-+ CMDOPTS='-- -help'
-+ BUILD='../../_build/ocamlbuild.native toto.byte toto.native -no-skip -classic-display '
-+ BUILD1='../../_build/ocamlbuild.native toto.byte toto.native -no-skip -classic-display  -- -help'
-+ BUILD2='../../_build/ocamlbuild.native toto.byte toto.native -no-skip -classic-display  -verbose 0 -nothing-should-be-rebuilt -- -help'
-+ rm -rf _build
-+ cp vivi1.ml vivi.ml
-+ ../../_build/ocamlbuild.native toto.byte toto.native -no-skip -classic-display -- -help
-ocamldep.opt -modules toto.ml > toto.ml.depends
-ocamldep.opt -modules tata.mli > tata.mli.depends
-ocamldep.opt -modules titi.ml > titi.ml.depends
-ocamldep.opt -modules tutu.mli > tutu.mli.depends
-ocamlc.opt -c -o tata.cmi tata.mli
-ocamlc.opt -c -o titi.cmo titi.ml
-ocamlc.opt -c -o tutu.cmi tutu.mli
-ocamlc.opt -c -o toto.cmo toto.ml
-ocamldep.opt -modules tata.ml > tata.ml.depends
-ocamldep.opt -modules tutu.ml > tutu.ml.depends
-ocamldep.opt -modules tyty.mli > tyty.mli.depends
-ocamldep.opt -pp camlp4o -modules vivi.ml > vivi.ml.depends
-ocamlc.opt -c -o tyty.cmi tyty.mli
-ocamlc.opt -c -pp camlp4o -o vivi.cmo vivi.ml
-ocamlc.opt -c -o tata.cmo tata.ml
-ocamlc.opt -c -o tutu.cmo tutu.ml
-ocamlc.opt tata.cmo titi.cmo vivi.cmo tutu.cmo toto.cmo -o toto.byte
-ocamlopt.opt -c -pp camlp4o -o vivi.cmx vivi.ml
-ocamlopt.opt -c -o tata.cmx tata.ml
-ocamlopt.opt -c -o titi.cmx titi.ml
-ocamlopt.opt -c -o tutu.cmx tutu.ml
-ocamlopt.opt -c -o toto.cmx toto.ml
-ocamlopt.opt tata.cmx titi.cmx vivi.cmx tutu.cmx toto.cmx -o toto.native
-Warning: Using -- only run the last target
-toto.native: _build/toto.native: Hello world!!!
-Tutu.tutu => 1
-Tata.tata => "TATA2"
-+ ../../_build/ocamlbuild.native toto.byte toto.native -no-skip -classic-display -verbose 0 -nothing-should-be-rebuilt -- -help
-[cache hit] ocamldep.opt -modules toto.ml > toto.ml.depends
-[cache hit] ocamldep.opt -modules tata.mli > tata.mli.depends
-[cache hit] ocamlc.opt -c -o tata.cmi tata.mli
-[cache hit] ocamldep.opt -modules titi.ml > titi.ml.depends
-[cache hit] ocamlc.opt -c -o titi.cmo titi.ml
-[cache hit] ocamldep.opt -modules tutu.mli > tutu.mli.depends
-[cache hit] ocamlc.opt -c -o tutu.cmi tutu.mli
-[cache hit] ocamlc.opt -c -o toto.cmo toto.ml
-[cache hit] ocamldep.opt -modules tata.ml > tata.ml.depends
-[cache hit] ocamlc.opt -c -o tata.cmo tata.ml
-[cache hit] ocamldep.opt -modules tutu.ml > tutu.ml.depends
-[cache hit] ocamldep.opt -modules tyty.mli > tyty.mli.depends
-[cache hit] ocamlc.opt -c -o tyty.cmi tyty.mli
-[cache hit] ocamldep.opt -pp camlp4o -modules vivi.ml > vivi.ml.depends
-[cache hit] ocamlc.opt -c -pp camlp4o -o vivi.cmo vivi.ml
-[cache hit] ocamlc.opt -c -o tutu.cmo tutu.ml
-[cache hit] ocamlc.opt tata.cmo titi.cmo vivi.cmo tutu.cmo toto.cmo -o toto.byte
-[cache hit] ocamlopt.opt -c -o tata.cmx tata.ml
-[cache hit] ocamlopt.opt -c -o titi.cmx titi.ml
-[cache hit] ocamlopt.opt -c -pp camlp4o -o vivi.cmx vivi.ml
-[cache hit] ocamlopt.opt -c -o tutu.cmx tutu.ml
-[cache hit] ocamlopt.opt -c -o toto.cmx toto.ml
-[cache hit] ocamlopt.opt tata.cmx titi.cmx vivi.cmx tutu.cmx toto.cmx -o toto.native
-Warning: Using -- only run the last target
-toto.native: _build/toto.native: Hello world!!!
-Tutu.tutu => 1
-Tata.tata => "TATA2"
-+ cp vivi2.ml vivi.ml
-+ ../../_build/ocamlbuild.native toto.byte toto.native -no-skip -classic-display -- -help
-ocamldep.opt -pp camlp4o -modules vivi.ml > vivi.ml.depends
-ocamlc.opt -c -pp camlp4o -o vivi.cmo vivi.ml
-ocamlc.opt tata.cmo titi.cmo vivi.cmo tutu.cmo toto.cmo -o toto.byte
-ocamlopt.opt -c -pp camlp4o -o vivi.cmx vivi.ml
-ocamlopt.opt tata.cmx titi.cmx vivi.cmx tutu.cmx toto.cmx -o toto.native
-Warning: Using -- only run the last target
-toto.native: _build/toto.native: Hello world!!!
-Tutu.tutu => 1
-Tata.tata => "TATA2"
-+ ../../_build/ocamlbuild.native toto.byte toto.native -no-skip -classic-display -verbose 0 -nothing-should-be-rebuilt -- -help
-[cache hit] ocamldep.opt -modules toto.ml > toto.ml.depends
-[cache hit] ocamldep.opt -modules tata.mli > tata.mli.depends
-[cache hit] ocamlc.opt -c -o tata.cmi tata.mli
-[cache hit] ocamldep.opt -modules titi.ml > titi.ml.depends
-[cache hit] ocamlc.opt -c -o titi.cmo titi.ml
-[cache hit] ocamldep.opt -modules tutu.mli > tutu.mli.depends
-[cache hit] ocamlc.opt -c -o tutu.cmi tutu.mli
-[cache hit] ocamlc.opt -c -o toto.cmo toto.ml
-[cache hit] ocamldep.opt -modules tata.ml > tata.ml.depends
-[cache hit] ocamlc.opt -c -o tata.cmo tata.ml
-[cache hit] ocamldep.opt -modules tutu.ml > tutu.ml.depends
-[cache hit] ocamldep.opt -modules tyty.mli > tyty.mli.depends
-[cache hit] ocamlc.opt -c -o tyty.cmi tyty.mli
-[cache hit] ocamldep.opt -pp camlp4o -modules vivi.ml > vivi.ml.depends
-[cache hit] ocamlc.opt -c -pp camlp4o -o vivi.cmo vivi.ml
-[cache hit] ocamlc.opt -c -o tutu.cmo tutu.ml
-[cache hit] ocamlc.opt tata.cmo titi.cmo vivi.cmo tutu.cmo toto.cmo -o toto.byte
-[cache hit] ocamlopt.opt -c -o tata.cmx tata.ml
-[cache hit] ocamlopt.opt -c -o titi.cmx titi.ml
-[cache hit] ocamlopt.opt -c -pp camlp4o -o vivi.cmx vivi.ml
-[cache hit] ocamlopt.opt -c -o tutu.cmx tutu.ml
-[cache hit] ocamlopt.opt -c -o toto.cmx toto.ml
-[cache hit] ocamlopt.opt tata.cmx titi.cmx vivi.cmx tutu.cmx toto.cmx -o toto.native
-Warning: Using -- only run the last target
-toto.native: _build/toto.native: Hello world!!!
-Tutu.tutu => 1
-Tata.tata => "TATA2"
-+ cp vivi3.ml vivi.ml
-+ ../../_build/ocamlbuild.native toto.byte toto.native -no-skip -classic-display -- -help
-ocamldep.opt -pp camlp4o -modules vivi.ml > vivi.ml.depends
-ocamlc.opt -c -pp camlp4o -o vivi.cmo vivi.ml
-ocamlc.opt -c -o tutu.cmo tutu.ml
-ocamlc.opt tata.cmo titi.cmo vivi.cmo tutu.cmo toto.cmo -o toto.byte
-ocamlopt.opt -c -pp camlp4o -o vivi.cmx vivi.ml
-ocamlopt.opt -c -o tutu.cmx tutu.ml
-ocamlopt.opt -c -o toto.cmx toto.ml
-ocamlopt.opt tata.cmx titi.cmx vivi.cmx tutu.cmx toto.cmx -o toto.native
-Warning: Using -- only run the last target
-toto.native: _build/toto.native: Hello world!!!
-Tutu.tutu => 2
-Tata.tata => "TATA2"
-+ ../../_build/ocamlbuild.native toto.byte toto.native -no-skip -classic-display -verbose 0 -nothing-should-be-rebuilt -- -help
-[cache hit] ocamldep.opt -modules toto.ml > toto.ml.depends
-[cache hit] ocamldep.opt -modules tata.mli > tata.mli.depends
-[cache hit] ocamlc.opt -c -o tata.cmi tata.mli
-[cache hit] ocamldep.opt -modules titi.ml > titi.ml.depends
-[cache hit] ocamlc.opt -c -o titi.cmo titi.ml
-[cache hit] ocamldep.opt -modules tutu.mli > tutu.mli.depends
-[cache hit] ocamlc.opt -c -o tutu.cmi tutu.mli
-[cache hit] ocamlc.opt -c -o toto.cmo toto.ml
-[cache hit] ocamldep.opt -modules tata.ml > tata.ml.depends
-[cache hit] ocamlc.opt -c -o tata.cmo tata.ml
-[cache hit] ocamldep.opt -modules tutu.ml > tutu.ml.depends
-[cache hit] ocamldep.opt -modules tyty.mli > tyty.mli.depends
-[cache hit] ocamlc.opt -c -o tyty.cmi tyty.mli
-[cache hit] ocamldep.opt -pp camlp4o -modules vivi.ml > vivi.ml.depends
-[cache hit] ocamlc.opt -c -pp camlp4o -o vivi.cmo vivi.ml
-[cache hit] ocamlc.opt -c -o tutu.cmo tutu.ml
-[cache hit] ocamlc.opt tata.cmo titi.cmo vivi.cmo tutu.cmo toto.cmo -o toto.byte
-[cache hit] ocamlopt.opt -c -o tata.cmx tata.ml
-[cache hit] ocamlopt.opt -c -o titi.cmx titi.ml
-[cache hit] ocamlopt.opt -c -pp camlp4o -o vivi.cmx vivi.ml
-[cache hit] ocamlopt.opt -c -o tutu.cmx tutu.ml
-[cache hit] ocamlopt.opt -c -o toto.cmx toto.ml
-[cache hit] ocamlopt.opt tata.cmx titi.cmx vivi.cmx tutu.cmx toto.cmx -o toto.native
-Warning: Using -- only run the last target
-toto.native: _build/toto.native: Hello world!!!
-Tutu.tutu => 2
-Tata.tata => "TATA2"
- _____         _   _____
-|_   _|__  ___| |_|___ /
-  | |/ _ \/ __| __| |_ \
-  | |  __/\__ \ |_ ___) |
-  |_|\___||___/\__|____/
-
-+ CMDOTPS=
-+ BUILD='../../_build/ocamlbuild.native a.byte a.native proj.docdir/index.html -no-skip -classic-display '
-+ BUILD1='../../_build/ocamlbuild.native a.byte a.native proj.docdir/index.html -no-skip -classic-display  '
-+ BUILD2='../../_build/ocamlbuild.native a.byte a.native proj.docdir/index.html -no-skip -classic-display  -verbose 0 -nothing-should-be-rebuilt '
-+ rm -rf _build
-+ ../../_build/ocamlbuild.native a.byte a.native proj.docdir/index.html -no-skip -classic-display
-ocamldep.opt -modules a.mli > a.mli.depends
-ocamlc.opt -c -o a.cmi a.mli
-ocamldep.opt -modules a.ml > a.ml.depends
-ocamldep.opt -modules b.mli > b.mli.depends
-ocamlc.opt -c -o b.cmi b.mli
-ocamlc.opt -c -o a.cmo a.ml
-ocamldep.opt -modules b.ml > b.ml.depends
-ocamldep.opt -modules c.mli > c.mli.depends
-ocamlc.opt -c -o c.cmi c.mli
-ocamlc.opt -c -o b.cmo b.ml
-ocamldep.opt -modules c.ml > c.ml.depends
-ocamldep.opt -modules d.mli > d.mli.depends
-ocamlc.opt -c -o d.cmi d.mli
-ocamlc.opt -c -o c.cmo c.ml
-ocamldep.opt -modules d.ml > d.ml.depends
-ocamldep.opt -modules e.mli > e.mli.depends
-ocamlc.opt -c -o e.cmi e.mli
-ocamlc.opt -c -o d.cmo d.ml
-ocamldep.opt -modules e.ml > e.ml.depends
-ocamldep.opt -modules f.mli > f.mli.depends
-ocamlc.opt -c -o f.cmi f.mli
-ocamlc.opt -c -o e.cmo e.ml
-ocamldep.opt -modules f.ml > f.ml.depends
-ocamlc.opt -c -o f.cmo f.ml
-ocamlc.opt unix.cma f.cmo e.cmo d.cmo c.cmo b.cmo a.cmo -o a.byte
-ocamlopt.opt -c -o f.cmx f.ml
-ocamlopt.opt -c -o e.cmx e.ml
-ocamlopt.opt -c -o d.cmx d.ml
-ocamlopt.opt -c -o c.cmx c.ml
-ocamlopt.opt -c -o b.cmx b.ml
-ocamlopt.opt -c -o a.cmx a.ml
-ocamlopt.opt unix.cmxa f.cmx e.cmx d.cmx c.cmx b.cmx a.cmx -o a.native
-ocamldoc.opt -dump a.odoc a.mli
-ocamldoc.opt -dump b.odoc b.mli
-ocamldoc.opt -dump c.odoc c.mli
-ocamldoc.opt -dump d.odoc d.mli
-ocamldoc.opt -dump e.odoc e.mli
-ocamldoc.opt -dump f.odoc f.mli
-rm -rf proj.docdir
-mkdir -p proj.docdir
-ocamldoc.opt -load a.odoc -load b.odoc -load c.odoc -load d.odoc -load e.odoc -load f.odoc -html -d proj.docdir
-+ ../../_build/ocamlbuild.native a.byte a.native proj.docdir/index.html -no-skip -classic-display -verbose 0 -nothing-should-be-rebuilt
-[cache hit] ocamldep.opt -modules a.mli > a.mli.depends
-[cache hit] ocamlc.opt -c -o a.cmi a.mli
-[cache hit] ocamldep.opt -modules a.ml > a.ml.depends
-[cache hit] ocamldep.opt -modules b.mli > b.mli.depends
-[cache hit] ocamlc.opt -c -o b.cmi b.mli
-[cache hit] ocamlc.opt -c -o a.cmo a.ml
-[cache hit] ocamldep.opt -modules b.ml > b.ml.depends
-[cache hit] ocamldep.opt -modules c.mli > c.mli.depends
-[cache hit] ocamlc.opt -c -o c.cmi c.mli
-[cache hit] ocamlc.opt -c -o b.cmo b.ml
-[cache hit] ocamldep.opt -modules c.ml > c.ml.depends
-[cache hit] ocamldep.opt -modules d.mli > d.mli.depends
-[cache hit] ocamlc.opt -c -o d.cmi d.mli
-[cache hit] ocamlc.opt -c -o c.cmo c.ml
-[cache hit] ocamldep.opt -modules d.ml > d.ml.depends
-[cache hit] ocamldep.opt -modules e.mli > e.mli.depends
-[cache hit] ocamlc.opt -c -o e.cmi e.mli
-[cache hit] ocamlc.opt -c -o d.cmo d.ml
-[cache hit] ocamldep.opt -modules e.ml > e.ml.depends
-[cache hit] ocamldep.opt -modules f.mli > f.mli.depends
-[cache hit] ocamlc.opt -c -o f.cmi f.mli
-[cache hit] ocamlc.opt -c -o e.cmo e.ml
-[cache hit] ocamldep.opt -modules f.ml > f.ml.depends
-[cache hit] ocamlc.opt -c -o f.cmo f.ml
-[cache hit] ocamlc.opt unix.cma f.cmo e.cmo d.cmo c.cmo b.cmo a.cmo -o a.byte
-[cache hit] ocamlopt.opt -c -o f.cmx f.ml
-[cache hit] ocamlopt.opt -c -o e.cmx e.ml
-[cache hit] ocamlopt.opt -c -o d.cmx d.ml
-[cache hit] ocamlopt.opt -c -o c.cmx c.ml
-[cache hit] ocamlopt.opt -c -o b.cmx b.ml
-[cache hit] ocamlopt.opt -c -o a.cmx a.ml
-[cache hit] ocamlopt.opt unix.cmxa f.cmx e.cmx d.cmx c.cmx b.cmx a.cmx -o a.native
-[cache hit] ocamldoc.opt -dump a.odoc a.mli
-[cache hit] ocamldoc.opt -dump b.odoc b.mli
-[cache hit] ocamldoc.opt -dump c.odoc c.mli
-[cache hit] ocamldoc.opt -dump d.odoc d.mli
-[cache hit] ocamldoc.opt -dump e.odoc e.mli
-[cache hit] ocamldoc.opt -dump f.odoc f.mli
-[cache hit] rm -rf proj.docdir
-[cache hit] mkdir -p proj.docdir
-[cache hit] ocamldoc.opt -load a.odoc -load b.odoc -load c.odoc -load d.odoc -load e.odoc -load f.odoc -html -d proj.docdir
- _____         _   _  _
-|_   _|__  ___| |_| || |
-  | |/ _ \/ __| __| || |_
-  | |  __/\__ \ |_|__   _|
-  |_|\___||___/\__|  |_|
-
-+ CMDOTPS=
-+ BUILD='../../_build/ocamlbuild.native -I a -I b aa.byte aa.native -no-skip -classic-display '
-+ BUILD1='../../_build/ocamlbuild.native -I a -I b aa.byte aa.native -no-skip -classic-display  '
-+ BUILD2='../../_build/ocamlbuild.native -I a -I b aa.byte aa.native -no-skip -classic-display  -verbose 0 -nothing-should-be-rebuilt '
-+ rm -rf _build
-+ ../../_build/ocamlbuild.native -I a -I b aa.byte aa.native -no-skip -classic-display
-ocamldep.opt -modules a/aa.mli > a/aa.mli.depends
-ocamlc.opt -c -I a -I b -o a/aa.cmi a/aa.mli
-ocamldep.opt -modules a/aa.ml > a/aa.ml.depends
-ocamldep.opt -modules b/bb.ml > b/bb.ml.depends
-ocamlc.opt -c -I b -I a -o b/bb.cmo b/bb.ml
-ocamlc.opt -c -I a -I b -o a/aa.cmo a/aa.ml
-ocamlc.opt str.cma b/bb.cmo a/aa.cmo -o a/aa.byte
-ocamlopt.opt -c -I b -I a -o b/bb.cmx b/bb.ml
-ocamlopt.opt -c -I a -I b -o a/aa.cmx a/aa.ml
-ocamlopt.opt str.cmxa b/bb.cmx a/aa.cmx -o a/aa.native
-+ ../../_build/ocamlbuild.native -I a -I b aa.byte aa.native -no-skip -classic-display -verbose 0 -nothing-should-be-rebuilt
-[cache hit] ocamldep.opt -modules a/aa.mli > a/aa.mli.depends
-[cache hit] ocamlc.opt -c -I a -I b -o a/aa.cmi a/aa.mli
-[cache hit] ocamldep.opt -modules a/aa.ml > a/aa.ml.depends
-[cache hit] ocamldep.opt -modules b/bb.ml > b/bb.ml.depends
-[cache hit] ocamlc.opt -c -I b -I a -o b/bb.cmo b/bb.ml
-[cache hit] ocamlc.opt -c -I a -I b -o a/aa.cmo a/aa.ml
-[cache hit] ocamlc.opt str.cma b/bb.cmo a/aa.cmo -o a/aa.byte
-[cache hit] ocamlopt.opt -c -I b -I a -o b/bb.cmx b/bb.ml
-[cache hit] ocamlopt.opt -c -I a -I b -o a/aa.cmx a/aa.ml
-[cache hit] ocamlopt.opt str.cmxa b/bb.cmx a/aa.cmx -o a/aa.native
- _____         _   ____
-|_   _|__  ___| |_| ___|
-  | |/ _ \/ __| __|___ \
-  | |  __/\__ \ |_ ___) |
-  |_|\___||___/\__|____/
-
-+ CMDOPTS=
-+ BUILD='../../_build/ocamlbuild.native d.byte d.native -no-skip -classic-display '
-+ BUILD1='../../_build/ocamlbuild.native d.byte d.native -no-skip -classic-display  '
-+ BUILD2='../../_build/ocamlbuild.native d.byte d.native -no-skip -classic-display  -verbose 0 -nothing-should-be-rebuilt '
-+ rm -rf _build
-+ ../../_build/ocamlbuild.native d.byte d.native -no-skip -classic-display
-ocamldep.opt -modules d.ml > d.ml.depends
-ocamldep.opt -modules a.mli > a.mli.depends
-ocamlc.opt -c -o a.cmi a.mli
-ocamldep.opt -modules a.ml > a.ml.depends
-ocamldep.opt -modules stack.ml > stack.ml.depends
-ocamlc.opt -c -o stack.cmo stack.ml
-ocamldep.opt -modules b.ml > b.ml.depends
-ocamlc.opt -c -o a.cmo a.ml
-ocamlc.opt -c -o b.cmo b.ml
-ocamlc.opt -pack a.cmo b.cmo -o c.cmo
-ocamlc.opt -c -o d.cmo d.ml
-ocamlc.opt stack.cmo c.cmo d.cmo -o d.byte
-ocamlopt.opt -c -o stack.cmx stack.ml
-ocamlopt.opt -c -for-pack C -o a.cmx a.ml
-ocamlopt.opt -c -for-pack C -o b.cmx b.ml
-touch c.mli  ; if  ocamlopt.opt -pack a.cmx b.cmx -o c.cmx  ; then  rm -f c.mli  ; else  rm -f c.mli  ; exit 1; fi
-ocamlopt.opt -c -o d.cmx d.ml
-ocamlopt.opt stack.cmx c.cmx d.cmx -o d.native
-+ ../../_build/ocamlbuild.native d.byte d.native -no-skip -classic-display -verbose 0 -nothing-should-be-rebuilt
-[cache hit] ocamldep.opt -modules d.ml > d.ml.depends
-[cache hit] ocamldep.opt -modules a.mli > a.mli.depends
-[cache hit] ocamlc.opt -c -o a.cmi a.mli
-[cache hit] ocamldep.opt -modules a.ml > a.ml.depends
-[cache hit] ocamldep.opt -modules stack.ml > stack.ml.depends
-[cache hit] ocamlc.opt -c -o stack.cmo stack.ml
-[cache hit] ocamlc.opt -c -o a.cmo a.ml
-[cache hit] ocamldep.opt -modules b.ml > b.ml.depends
-[cache hit] ocamlc.opt -c -o b.cmo b.ml
-[cache hit] ocamlc.opt -pack a.cmo b.cmo -o c.cmo
-[cache hit] ocamlc.opt -c -o d.cmo d.ml
-[cache hit] ocamlc.opt stack.cmo c.cmo d.cmo -o d.byte
-[cache hit] ocamlopt.opt -c -o stack.cmx stack.ml
-[cache hit] ocamlopt.opt -c -for-pack C -o a.cmx a.ml
-[cache hit] ocamlopt.opt -c -for-pack C -o b.cmx b.ml
-[cache hit] touch c.mli  ; if  ocamlopt.opt -pack a.cmx b.cmx -o c.cmx  ; then  rm -f c.mli  ; else  rm -f c.mli  ; exit 1; fi
-[cache hit] ocamlopt.opt -c -o d.cmx d.ml
-[cache hit] ocamlopt.opt stack.cmx c.cmx d.cmx -o d.native
- _____         _    __
-|_   _|__  ___| |_ / /_
-  | |/ _ \/ __| __| '_ \
-  | |  __/\__ \ |_| (_) |
-  |_|\___||___/\__|\___/
-
-+ rm -rf _build
-+ CMDOPTS=
-+ BUILD='../../_build/ocamlbuild.native -no-skip main.byte -classic-display '
-+ BUILD1='../../_build/ocamlbuild.native -no-skip main.byte -classic-display  '
-+ BUILD2='../../_build/ocamlbuild.native -no-skip main.byte -classic-display  -verbose 0 -nothing-should-be-rebuilt '
-+ cp b.mli.v1 b.mli
-+ cp d.mli.v1 d.mli
-+ ../../_build/ocamlbuild.native -no-skip main.byte -classic-display
-ocamldep.opt -modules main.mli > main.mli.depends
-ocamlc.opt -c -o main.cmi main.mli
-ocamldep.opt -modules main.ml > main.ml.depends
-ocamldep.opt -modules a.mli > a.mli.depends
-ocamldep.opt -modules d.mli > d.mli.depends
-ocamlc.opt -c -o a.cmi a.mli
-ocamlc.opt -c -o d.cmi d.mli
-ocamlc.opt -c -o main.cmo main.ml
-ocamldep.opt -modules a.ml > a.ml.depends
-ocamldep.opt -modules b.mli > b.mli.depends
-ocamlc.opt -c -o b.cmi b.mli
-ocamldep.opt -modules d.ml > d.ml.depends
-ocamlc.opt -c -o a.cmo a.ml
-ocamlc.opt -c -o d.cmo d.ml
-ocamldep.opt -modules b.ml > b.ml.depends
-ocamlc.opt -c -o b.cmo b.ml
-ocamlc.opt d.cmo b.cmo a.cmo main.cmo -o main.byte
-+ ../../_build/ocamlbuild.native -no-skip main.byte -classic-display -verbose 0 -nothing-should-be-rebuilt
-[cache hit] ocamldep.opt -modules main.mli > main.mli.depends
-[cache hit] ocamlc.opt -c -o main.cmi main.mli
-[cache hit] ocamldep.opt -modules main.ml > main.ml.depends
-[cache hit] ocamldep.opt -modules a.mli > a.mli.depends
-[cache hit] ocamlc.opt -c -o a.cmi a.mli
-[cache hit] ocamldep.opt -modules d.mli > d.mli.depends
-[cache hit] ocamlc.opt -c -o d.cmi d.mli
-[cache hit] ocamlc.opt -c -o main.cmo main.ml
-[cache hit] ocamldep.opt -modules a.ml > a.ml.depends
-[cache hit] ocamldep.opt -modules b.mli > b.mli.depends
-[cache hit] ocamlc.opt -c -o b.cmi b.mli
-[cache hit] ocamlc.opt -c -o a.cmo a.ml
-[cache hit] ocamldep.opt -modules d.ml > d.ml.depends
-[cache hit] ocamlc.opt -c -o d.cmo d.ml
-[cache hit] ocamldep.opt -modules b.ml > b.ml.depends
-[cache hit] ocamlc.opt -c -o b.cmo b.ml
-[cache hit] ocamlc.opt d.cmo b.cmo a.cmo main.cmo -o main.byte
-+ cp b.mli.v2 b.mli
-+ cp d.mli.v2 d.mli
-+ ../../_build/ocamlbuild.native -no-skip main.byte -classic-display
-ocamldep.opt -modules d.mli > d.mli.depends
-ocamlc.opt -c -o d.cmi d.mli
-ocamlc.opt -c -o main.cmo main.ml
-ocamldep.opt -modules b.mli > b.mli.depends
-+ ocamldep.opt -modules b.mli > b.mli.depends
-File "b.mli", line 1, characters 0-2:
-Syntax error
-Command exited with code 2.
-+ cp b.mli.v1 b.mli
-+ ../../_build/ocamlbuild.native -no-skip main.byte -classic-display
-ocamldep.opt -modules b.mli > b.mli.depends
-ocamlc.opt -c -o b.cmi b.mli
-ocamlc.opt -c -o d.cmo d.ml
-ocamlc.opt -c -o b.cmo b.ml
-ocamlc.opt d.cmo b.cmo a.cmo main.cmo -o main.byte
-+ ../../_build/ocamlbuild.native -no-skip main.byte -classic-display -verbose 0 -nothing-should-be-rebuilt
-[cache hit] ocamldep.opt -modules main.mli > main.mli.depends
-[cache hit] ocamlc.opt -c -o main.cmi main.mli
-[cache hit] ocamldep.opt -modules main.ml > main.ml.depends
-[cache hit] ocamldep.opt -modules a.mli > a.mli.depends
-[cache hit] ocamlc.opt -c -o a.cmi a.mli
-[cache hit] ocamldep.opt -modules d.mli > d.mli.depends
-[cache hit] ocamlc.opt -c -o d.cmi d.mli
-[cache hit] ocamlc.opt -c -o main.cmo main.ml
-[cache hit] ocamldep.opt -modules a.ml > a.ml.depends
-[cache hit] ocamldep.opt -modules b.mli > b.mli.depends
-[cache hit] ocamlc.opt -c -o b.cmi b.mli
-[cache hit] ocamlc.opt -c -o a.cmo a.ml
-[cache hit] ocamldep.opt -modules d.ml > d.ml.depends
-[cache hit] ocamlc.opt -c -o d.cmo d.ml
-[cache hit] ocamldep.opt -modules b.ml > b.ml.depends
-[cache hit] ocamlc.opt -c -o b.cmo b.ml
-[cache hit] ocamlc.opt d.cmo b.cmo a.cmo main.cmo -o main.byte
-+ echo PASS
-PASS
- _____         _  _____
-|_   _|__  ___| ||___  |
-  | |/ _ \/ __| __| / /
-  | |  __/\__ \ |_ / /
-  |_|\___||___/\__/_/
-
-+ CMDOPTS=
-+ BUILD='../../_build/ocamlbuild.native bbcc.cma main.byte bbcc.cmxa main.native -no-skip -classic-display '
-+ BUILD1='../../_build/ocamlbuild.native bbcc.cma main.byte bbcc.cmxa main.native -no-skip -classic-display  '
-+ BUILD2='../../_build/ocamlbuild.native bbcc.cma main.byte bbcc.cmxa main.native -no-skip -classic-display  -verbose 0 -nothing-should-be-rebuilt '
-+ rm -rf _build
-+ cp bb1.ml bb.ml
-+ ../../_build/ocamlbuild.native bbcc.cma main.byte bbcc.cmxa main.native -no-skip -classic-display
-ocamlopt.opt -I /Users/ertai/l/ocaml/ocamlbuild-unstable/ocamlbuild/_install/lib/ocamlbuild unix.cmxa /Users/ertai/l/ocaml/ocamlbuild-unstable/ocamlbuild/_install/lib/ocamlbuild/ocamlbuildlib.cmxa myocamlbuild.ml /Users/ertai/l/ocaml/ocamlbuild-unstable/ocamlbuild/_install/lib/ocamlbuild/ocamlbuild.cmx -o myocamlbuild
-ocamldep.opt -modules bb.mli > bb.mli.depends
-ocamlc.opt -c -o bb.cmi bb.mli
-ocamldep.opt -modules bb.ml > bb.ml.depends
-ocamldep.opt -modules cc.ml > cc.ml.depends
-ocamldep.opt -modules aa.ml > aa.ml.depends
-ocamldep.opt -modules c2.mli > c2.mli.depends
-ocamlc.opt -c -o aa.cmo aa.ml
-ocamlc.opt -c -o c2.cmi c2.mli
-ocamlc.opt -c -o bb.cmo bb.ml
-ocamlc.opt -c -o cc.cmo cc.ml
-ocamlc.opt -a bb.cmo cc.cmo -o bbcc.cma
-ocamldep.opt -modules main.ml > main.ml.depends
-ocamldep.opt -modules c3.ml > c3.ml.depends
-ocamlc.opt -c -o c3.cmo c3.ml
-ocamlc.opt -c -o main.cmo main.ml
-ocamldep.opt -modules cool_plugin.ml > cool_plugin.ml.depends
-ocamlc.opt -c -o cool_plugin.cmo cool_plugin.ml
-ocamldep.opt -modules c2.ml > c2.ml.depends
-ocamlc.opt -c -o c2.cmo c2.ml
-ocamlc.opt aa.cmo c2.cmo bbcc.cma c3.cmo main.cmo cool_plugin.cmo -o main.byte
-ocamlopt.opt -c -o bb.cmx bb.ml
-ocamlopt.opt -c -o aa.cmx aa.ml
-ocamlopt.opt -c -o c2.cmx c2.ml
-ocamlopt.opt -c -o cc.cmx cc.ml
-ocamlopt.opt -a bb.cmx cc.cmx -o bbcc.cmxa
-ocamlopt.opt -c -o c3.cmx c3.ml
-ocamlopt.opt -c -o main.cmx main.ml
-ocamlopt.opt aa.cmx c2.cmx bbcc.cmxa c3.cmx main.cmx -o main.native
-+ ../../_build/ocamlbuild.native bbcc.cma main.byte bbcc.cmxa main.native -no-skip -classic-display -verbose 0 -nothing-should-be-rebuilt
-[cache hit] ocamldep.opt -modules bb.mli > bb.mli.depends
-[cache hit] ocamlc.opt -c -o bb.cmi bb.mli
-[cache hit] ocamldep.opt -modules bb.ml > bb.ml.depends
-[cache hit] ocamlc.opt -c -o bb.cmo bb.ml
-[cache hit] ocamldep.opt -modules cc.ml > cc.ml.depends
-[cache hit] ocamldep.opt -modules aa.ml > aa.ml.depends
-[cache hit] ocamlc.opt -c -o aa.cmo aa.ml
-[cache hit] ocamldep.opt -modules c2.mli > c2.mli.depends
-[cache hit] ocamlc.opt -c -o c2.cmi c2.mli
-[cache hit] ocamlc.opt -c -o cc.cmo cc.ml
-[cache hit] ocamlc.opt -a bb.cmo cc.cmo -o bbcc.cma
-[cache hit] ocamldep.opt -modules main.ml > main.ml.depends
-[cache hit] ocamldep.opt -modules c3.ml > c3.ml.depends
-[cache hit] ocamlc.opt -c -o c3.cmo c3.ml
-[cache hit] ocamlc.opt -c -o main.cmo main.ml
-[cache hit] ocamldep.opt -modules cool_plugin.ml > cool_plugin.ml.depends
-[cache hit] ocamlc.opt -c -o cool_plugin.cmo cool_plugin.ml
-[cache hit] ocamldep.opt -modules c2.ml > c2.ml.depends
-[cache hit] ocamlc.opt -c -o c2.cmo c2.ml
-[cache hit] ocamlc.opt aa.cmo c2.cmo bbcc.cma c3.cmo main.cmo cool_plugin.cmo -o main.byte
-[cache hit] ocamlopt.opt -c -o bb.cmx bb.ml
-[cache hit] ocamlopt.opt -c -o aa.cmx aa.ml
-[cache hit] ocamlopt.opt -c -o c2.cmx c2.ml
-[cache hit] ocamlopt.opt -c -o cc.cmx cc.ml
-[cache hit] ocamlopt.opt -a bb.cmx cc.cmx -o bbcc.cmxa
-[cache hit] ocamlopt.opt -c -o c3.cmx c3.ml
-[cache hit] ocamlopt.opt -c -o main.cmx main.ml
-[cache hit] ocamlopt.opt aa.cmx c2.cmx bbcc.cmxa c3.cmx main.cmx -o main.native
-+ cp bb2.ml bb.ml
-+ ../../_build/ocamlbuild.native bbcc.cma main.byte bbcc.cmxa main.native -no-skip -classic-display -verbose 0
-[cache hit] ocamldep.opt -modules bb.mli > bb.mli.depends
-[cache hit] ocamlc.opt -c -o bb.cmi bb.mli
-ocamldep.opt -modules bb.ml > bb.ml.depends
-[cache hit] ocamldep.opt -modules cc.ml > cc.ml.depends
-[cache hit] ocamldep.opt -modules aa.ml > aa.ml.depends
-[cache hit] ocamlc.opt -c -o aa.cmo aa.ml
-[cache hit] ocamldep.opt -modules c2.mli > c2.mli.depends
-[cache hit] ocamlc.opt -c -o c2.cmi c2.mli
-[cache hit] ocamlc.opt -c -o cc.cmo cc.ml
-ocamlc.opt -c -o bb.cmo bb.ml
-ocamlc.opt -a bb.cmo cc.cmo -o bbcc.cma
-[cache hit] ocamldep.opt -modules main.ml > main.ml.depends
-[cache hit] ocamldep.opt -modules c3.ml > c3.ml.depends
-[cache hit] ocamlc.opt -c -o c3.cmo c3.ml
-[cache hit] ocamlc.opt -c -o main.cmo main.ml
-[cache hit] ocamldep.opt -modules cool_plugin.ml > cool_plugin.ml.depends
-[cache hit] ocamlc.opt -c -o cool_plugin.cmo cool_plugin.ml
-[cache hit] ocamldep.opt -modules c2.ml > c2.ml.depends
-[cache hit] ocamlc.opt -c -o c2.cmo c2.ml
-ocamlc.opt aa.cmo c2.cmo bbcc.cma c3.cmo main.cmo cool_plugin.cmo -o main.byte
-[cache hit] ocamlopt.opt -c -o aa.cmx aa.ml
-ocamlopt.opt -c -o bb.cmx bb.ml
-[cache hit] ocamlopt.opt -c -o c2.cmx c2.ml
-ocamlopt.opt -c -o cc.cmx cc.ml
-ocamlopt.opt -a bb.cmx cc.cmx -o bbcc.cmxa
-ocamlopt.opt -c -o c3.cmx c3.ml
-ocamlopt.opt -c -o main.cmx main.ml
-ocamlopt.opt aa.cmx c2.cmx bbcc.cmxa c3.cmx main.cmx -o main.native
-+ ../../_build/ocamlbuild.native bbcc.cma main.byte bbcc.cmxa main.native -no-skip -classic-display -verbose 0 -nothing-should-be-rebuilt
-[cache hit] ocamldep.opt -modules bb.mli > bb.mli.depends
-[cache hit] ocamlc.opt -c -o bb.cmi bb.mli
-[cache hit] ocamldep.opt -modules bb.ml > bb.ml.depends
-[cache hit] ocamlc.opt -c -o bb.cmo bb.ml
-[cache hit] ocamldep.opt -modules cc.ml > cc.ml.depends
-[cache hit] ocamldep.opt -modules aa.ml > aa.ml.depends
-[cache hit] ocamlc.opt -c -o aa.cmo aa.ml
-[cache hit] ocamldep.opt -modules c2.mli > c2.mli.depends
-[cache hit] ocamlc.opt -c -o c2.cmi c2.mli
-[cache hit] ocamlc.opt -c -o cc.cmo cc.ml
-[cache hit] ocamlc.opt -a bb.cmo cc.cmo -o bbcc.cma
-[cache hit] ocamldep.opt -modules main.ml > main.ml.depends
-[cache hit] ocamldep.opt -modules c3.ml > c3.ml.depends
-[cache hit] ocamlc.opt -c -o c3.cmo c3.ml
-[cache hit] ocamlc.opt -c -o main.cmo main.ml
-[cache hit] ocamldep.opt -modules cool_plugin.ml > cool_plugin.ml.depends
-[cache hit] ocamlc.opt -c -o cool_plugin.cmo cool_plugin.ml
-[cache hit] ocamldep.opt -modules c2.ml > c2.ml.depends
-[cache hit] ocamlc.opt -c -o c2.cmo c2.ml
-[cache hit] ocamlc.opt aa.cmo c2.cmo bbcc.cma c3.cmo main.cmo cool_plugin.cmo -o main.byte
-[cache hit] ocamlopt.opt -c -o bb.cmx bb.ml
-[cache hit] ocamlopt.opt -c -o aa.cmx aa.ml
-[cache hit] ocamlopt.opt -c -o c2.cmx c2.ml
-[cache hit] ocamlopt.opt -c -o cc.cmx cc.ml
-[cache hit] ocamlopt.opt -a bb.cmx cc.cmx -o bbcc.cmxa
-[cache hit] ocamlopt.opt -c -o c3.cmx c3.ml
-[cache hit] ocamlopt.opt -c -o main.cmx main.ml
-[cache hit] ocamlopt.opt aa.cmx c2.cmx bbcc.cmxa c3.cmx main.cmx -o main.native
-+ cp bb3.ml bb.ml
-+ ../../_build/ocamlbuild.native bbcc.cma main.byte bbcc.cmxa main.native -no-skip -classic-display -verbose 0
-[cache hit] ocamldep.opt -modules bb.mli > bb.mli.depends
-[cache hit] ocamlc.opt -c -o bb.cmi bb.mli
-ocamldep.opt -modules bb.ml > bb.ml.depends
-[cache hit] ocamldep.opt -modules cc.ml > cc.ml.depends
-[cache hit] ocamldep.opt -modules aa.ml > aa.ml.depends
-[cache hit] ocamlc.opt -c -o aa.cmo aa.ml
-[cache hit] ocamldep.opt -modules c2.mli > c2.mli.depends
-[cache hit] ocamlc.opt -c -o c2.cmi c2.mli
-[cache hit] ocamlc.opt -c -o cc.cmo cc.ml
-ocamlc.opt -c -o bb.cmo bb.ml
-ocamlc.opt -a bb.cmo cc.cmo -o bbcc.cma
-[cache hit] ocamldep.opt -modules main.ml > main.ml.depends
-[cache hit] ocamldep.opt -modules c3.ml > c3.ml.depends
-[cache hit] ocamlc.opt -c -o c3.cmo c3.ml
-[cache hit] ocamlc.opt -c -o main.cmo main.ml
-[cache hit] ocamldep.opt -modules cool_plugin.ml > cool_plugin.ml.depends
-[cache hit] ocamlc.opt -c -o cool_plugin.cmo cool_plugin.ml
-[cache hit] ocamldep.opt -modules c2.ml > c2.ml.depends
-[cache hit] ocamlc.opt -c -o c2.cmo c2.ml
-ocamlc.opt aa.cmo c2.cmo bbcc.cma c3.cmo main.cmo cool_plugin.cmo -o main.byte
-[cache hit] ocamlopt.opt -c -o aa.cmx aa.ml
-ocamlopt.opt -c -o bb.cmx bb.ml
-[cache hit] ocamlopt.opt -c -o c2.cmx c2.ml
-[cache hit] ocamlopt.opt -c -o cc.cmx cc.ml
-ocamlopt.opt -a bb.cmx cc.cmx -o bbcc.cmxa
-[cache hit] ocamlopt.opt -c -o c3.cmx c3.ml
-[cache hit] ocamlopt.opt -c -o main.cmx main.ml
-ocamlopt.opt aa.cmx c2.cmx bbcc.cmxa c3.cmx main.cmx -o main.native
-+ ../../_build/ocamlbuild.native bbcc.cma main.byte bbcc.cmxa main.native -no-skip -classic-display -verbose 0 -nothing-should-be-rebuilt
-[cache hit] ocamldep.opt -modules bb.mli > bb.mli.depends
-[cache hit] ocamlc.opt -c -o bb.cmi bb.mli
-[cache hit] ocamldep.opt -modules bb.ml > bb.ml.depends
-[cache hit] ocamlc.opt -c -o bb.cmo bb.ml
-[cache hit] ocamldep.opt -modules cc.ml > cc.ml.depends
-[cache hit] ocamldep.opt -modules aa.ml > aa.ml.depends
-[cache hit] ocamlc.opt -c -o aa.cmo aa.ml
-[cache hit] ocamldep.opt -modules c2.mli > c2.mli.depends
-[cache hit] ocamlc.opt -c -o c2.cmi c2.mli
-[cache hit] ocamlc.opt -c -o cc.cmo cc.ml
-[cache hit] ocamlc.opt -a bb.cmo cc.cmo -o bbcc.cma
-[cache hit] ocamldep.opt -modules main.ml > main.ml.depends
-[cache hit] ocamldep.opt -modules c3.ml > c3.ml.depends
-[cache hit] ocamlc.opt -c -o c3.cmo c3.ml
-[cache hit] ocamlc.opt -c -o main.cmo main.ml
-[cache hit] ocamldep.opt -modules cool_plugin.ml > cool_plugin.ml.depends
-[cache hit] ocamlc.opt -c -o cool_plugin.cmo cool_plugin.ml
-[cache hit] ocamldep.opt -modules c2.ml > c2.ml.depends
-[cache hit] ocamlc.opt -c -o c2.cmo c2.ml
-[cache hit] ocamlc.opt aa.cmo c2.cmo bbcc.cma c3.cmo main.cmo cool_plugin.cmo -o main.byte
-[cache hit] ocamlopt.opt -c -o bb.cmx bb.ml
-[cache hit] ocamlopt.opt -c -o aa.cmx aa.ml
-[cache hit] ocamlopt.opt -c -o c2.cmx c2.ml
-[cache hit] ocamlopt.opt -c -o cc.cmx cc.ml
-[cache hit] ocamlopt.opt -a bb.cmx cc.cmx -o bbcc.cmxa
-[cache hit] ocamlopt.opt -c -o c3.cmx c3.ml
-[cache hit] ocamlopt.opt -c -o main.cmx main.ml
-[cache hit] ocamlopt.opt aa.cmx c2.cmx bbcc.cmxa c3.cmx main.cmx -o main.native
- _____         _   ___
-|_   _|__  ___| |_( _ )
-  | |/ _ \/ __| __/ _ \
-  | |  __/\__ \ || (_) |
-  |_|\___||___/\__\___/
-
-+ CMDOPTS=
-+ BUILD='../../_build/ocamlbuild.native a.byte a.native a a.opt bin/a bin/a.opt -no-skip -classic-display '
-+ BUILD1='../../_build/ocamlbuild.native a.byte a.native a a.opt bin/a bin/a.opt -no-skip -classic-display  '
-+ BUILD2='../../_build/ocamlbuild.native a.byte a.native a a.opt bin/a bin/a.opt -no-skip -classic-display  -verbose 0 -nothing-should-be-rebuilt '
-+ rm -rf _build
-+ ../../_build/ocamlbuild.native a.byte a.native a a.opt bin/a bin/a.opt -no-skip -classic-display
-ocamlopt.opt -I /Users/ertai/l/ocaml/ocamlbuild-unstable/ocamlbuild/_install/lib/ocamlbuild unix.cmxa /Users/ertai/l/ocaml/ocamlbuild-unstable/ocamlbuild/_install/lib/ocamlbuild/ocamlbuildlib.cmxa myocamlbuild.ml /Users/ertai/l/ocaml/ocamlbuild-unstable/ocamlbuild/_install/lib/ocamlbuild/ocamlbuild.cmx -o myocamlbuild
-ocamldep.opt -modules a.ml > a.ml.depends
-ocamldep.opt -modules myconfig.ml > myconfig.ml.depends
-ocamlc.opt -c -o myconfig.cmo myconfig.ml
-ocamlc.opt -c -o a.cmo a.ml
-ocamlc.opt myconfig.cmo a.cmo -o a.byte
-ocamlopt.opt -c -o myconfig.cmx myconfig.ml
-ocamlopt.opt -c -o a.cmx a.ml
-ocamlopt.opt myconfig.cmx a.cmx -o a.native
-cp -p a.byte a
-cp -p a.native a.opt
-cp -p a.byte bin/a.byte
-cp -p bin/a.byte bin/a
-cp -p a.native bin/a.native
-cp -p bin/a.native bin/a.opt
-+ ../../_build/ocamlbuild.native a.byte a.native a a.opt bin/a bin/a.opt -no-skip -classic-display -verbose 0 -nothing-should-be-rebuilt
-[cache hit] ocamldep.opt -modules a.ml > a.ml.depends
-[cache hit] ocamldep.opt -modules myconfig.ml > myconfig.ml.depends
-[cache hit] ocamlc.opt -c -o myconfig.cmo myconfig.ml
-[cache hit] ocamlc.opt -c -o a.cmo a.ml
-[cache hit] ocamlc.opt myconfig.cmo a.cmo -o a.byte
-[cache hit] ocamlopt.opt -c -o myconfig.cmx myconfig.ml
-[cache hit] ocamlopt.opt -c -o a.cmx a.ml
-[cache hit] ocamlopt.opt myconfig.cmx a.cmx -o a.native
-[cache hit] cp -p a.byte a
-[cache hit] cp -p a.native a.opt
-[cache hit] cp -p a.byte bin/a.byte
-[cache hit] cp -p bin/a.byte bin/a
-[cache hit] cp -p a.native bin/a.native
-[cache hit] cp -p bin/a.native bin/a.opt
- _____         _    ___
-|_   _|__  ___| |_ / _ \
-  | |/ _ \/ __| __| (_) |
-  | |  __/\__ \ |_ \__, |
-  |_|\___||___/\__|  /_/
-
-++ dirname ./test9/test.sh
-+ cd ./test9/../..
-+ ./_build/ocamlbuild.native -quiet -build-dir _buildtest -no-links test/test9/testglob.native
-+ ./_buildtest/test/test9/testglob.native
-Globexp for "\"hello\"" OK
-Globexp for "<hello>" OK
-Globexp for "<hel*lo>" OK
-Globexp for "<a> and <b> or <c>" OK
-Globexp for "<a> titi" OK
-Glob.eval "<[a]>" "a" = true OK
-Glob.eval "<[a]>" "b" = false OK
-Glob.eval "<[a]>" "a" = true OK
-Glob.eval "<[a]>" "b" = false OK
-Glob.eval "<[a]>" "a" = true OK
-Glob.eval "<[a]>" "b" = false OK
-Glob.eval "<[a-z]>" "a" = true OK
-Glob.eval "<[a-z]>" "e" = true OK
-Glob.eval "<[a-z]>" "k" = true OK
-Glob.eval "<[a-z]>" "z" = true OK
-Glob.eval "<[a-z]>" "0" = false OK
-Glob.eval "<[a-z]>" "A" = false OK
-Glob.eval "<[a-z]>" "~" = false OK
-Glob.eval "<[a-z]>" "a" = true OK
-Glob.eval "<[a-z]>" "e" = true OK
-Glob.eval "<[a-z]>" "k" = true OK
-Glob.eval "<[a-z]>" "z" = true OK
-Glob.eval "<[a-z]>" "0" = false OK
-Glob.eval "<[a-z]>" "A" = false OK
-Glob.eval "<[a-z]>" "~" = false OK
-Glob.eval "<[a-z]>" "a" = true OK
-Glob.eval "<[a-z]>" "e" = true OK
-Glob.eval "<[a-z]>" "k" = true OK
-Glob.eval "<[a-z]>" "z" = true OK
-Glob.eval "<[a-z]>" "0" = false OK
-Glob.eval "<[a-z]>" "A" = false OK
-Glob.eval "<[a-z]>" "~" = false OK
-Glob.eval "<[a-z][0-9]>" "a0" = true OK
-Glob.eval "<[a-z][0-9]>" "b9" = true OK
-Glob.eval "<[a-z][0-9]>" "a00" = false OK
-Glob.eval "<[a-z][0-9]>" "a0a" = false OK
-Glob.eval "<[a-z][0-9]>" "b0a" = false OK
-Glob.eval "<[a-z][0-9]>" "isduis" = false OK
-Glob.eval "<[a-z][0-9]>" "" = false OK
-Glob.eval "<[a-z][0-9]>" "a0" = true OK
-Glob.eval "<[a-z][0-9]>" "b9" = true OK
-Glob.eval "<[a-z][0-9]>" "a00" = false OK
-Glob.eval "<[a-z][0-9]>" "a0a" = false OK
-Glob.eval "<[a-z][0-9]>" "b0a" = false OK
-Glob.eval "<[a-z][0-9]>" "isduis" = false OK
-Glob.eval "<[a-z][0-9]>" "" = false OK
-Glob.eval "<[a-z][0-9]>" "a0" = true OK
-Glob.eval "<[a-z][0-9]>" "b9" = true OK
-Glob.eval "<[a-z][0-9]>" "a00" = false OK
-Glob.eval "<[a-z][0-9]>" "a0a" = false OK
-Glob.eval "<[a-z][0-9]>" "b0a" = false OK
-Glob.eval "<[a-z][0-9]>" "isduis" = false OK
-Glob.eval "<[a-z][0-9]>" "" = false OK
-Glob.eval "<hello>" "hello" = true OK
-Glob.eval "<hello>" "helli" = false OK
-Glob.eval "<hello>" "hello" = true OK
-Glob.eval "<hello>" "helli" = false OK
-Glob.eval "<hello>" "hello" = true OK
-Glob.eval "<hello>" "helli" = false OK
-Glob.eval "\"hello\"" "hello" = true OK
-Glob.eval "\"hello\"" "heidi" = false OK
-Glob.eval "\"hello\"" "hello" = true OK
-Glob.eval "\"hello\"" "heidi" = false OK
-Glob.eval "\"hello\"" "hello" = true OK
-Glob.eval "\"hello\"" "heidi" = false OK
-Glob.eval "<*>" "" = true OK
-Glob.eval "<*>" "a" = true OK
-Glob.eval "<*>" "ax" = true OK
-Glob.eval "<*>" "" = true OK
-Glob.eval "<*>" "a" = true OK
-Glob.eval "<*>" "ax" = true OK
-Glob.eval "<*>" "" = true OK
-Glob.eval "<*>" "a" = true OK
-Glob.eval "<*>" "ax" = true OK
-Glob.eval "<a*b>" "ab" = true OK
-Glob.eval "<a*b>" "acb" = true OK
-Glob.eval "<a*b>" "axxxxxb" = true OK
-Glob.eval "<a*b>" "ababbababb" = true OK
-Glob.eval "<a*b>" "abx" = false OK
-Glob.eval "<a*b>" "xxxxxab" = false OK
-Glob.eval "<a*b>" "xab" = false OK
-Glob.eval "<a*b>" "ab" = true OK
-Glob.eval "<a*b>" "acb" = true OK
-Glob.eval "<a*b>" "axxxxxb" = true OK
-Glob.eval "<a*b>" "ababbababb" = true OK
-Glob.eval "<a*b>" "abx" = false OK
-Glob.eval "<a*b>" "xxxxxab" = false OK
-Glob.eval "<a*b>" "xab" = false OK
-Glob.eval "<a*b>" "ab" = true OK
-Glob.eval "<a*b>" "acb" = true OK
-Glob.eval "<a*b>" "axxxxxb" = true OK
-Glob.eval "<a*b>" "ababbababb" = true OK
-Glob.eval "<a*b>" "abx" = false OK
-Glob.eval "<a*b>" "xxxxxab" = false OK
-Glob.eval "<a*b>" "xab" = false OK
-Glob.eval "<*.ml>" "hello.ml" = true OK
-Glob.eval "<*.ml>" ".ml" = true OK
-Glob.eval "<*.ml>" "ml" = false OK
-Glob.eval "<*.ml>" "" = false OK
-Glob.eval "<*.ml>" "toto.mli" = false OK
-Glob.eval "<*.ml>" "hello.ml" = true OK
-Glob.eval "<*.ml>" ".ml" = true OK
-Glob.eval "<*.ml>" "ml" = false OK
-Glob.eval "<*.ml>" "" = false OK
-Glob.eval "<*.ml>" "toto.mli" = false OK
-Glob.eval "<*.ml>" "hello.ml" = true OK
-Glob.eval "<*.ml>" ".ml" = true OK
-Glob.eval "<*.ml>" "ml" = false OK
-Glob.eval "<*.ml>" "" = false OK
-Glob.eval "<*.ml>" "toto.mli" = false OK
-Glob.eval "<a>" "a" = true OK
-Glob.eval "<a>" "" = false OK
-Glob.eval "<a>" "aa" = false OK
-Glob.eval "<a>" "ba" = false OK
-Glob.eval "<a>" "ab" = false OK
-Glob.eval "<a>" "abaa" = false OK
-Glob.eval "<a>" "a" = true OK
-Glob.eval "<a>" "" = false OK
-Glob.eval "<a>" "aa" = false OK
-Glob.eval "<a>" "ba" = false OK
-Glob.eval "<a>" "ab" = false OK
-Glob.eval "<a>" "abaa" = false OK
-Glob.eval "<a>" "a" = true OK
-Glob.eval "<a>" "" = false OK
-Glob.eval "<a>" "aa" = false OK
-Glob.eval "<a>" "ba" = false OK
-Glob.eval "<a>" "ab" = false OK
-Glob.eval "<a>" "abaa" = false OK
-Glob.eval "<ab>" "ab" = true OK
-Glob.eval "<ab>" "" = false OK
-Glob.eval "<ab>" "abab" = false OK
-Glob.eval "<ab>" "aba" = false OK
-Glob.eval "<ab>" "abx" = false OK
-Glob.eval "<ab>" "ab" = true OK
-Glob.eval "<ab>" "" = false OK
-Glob.eval "<ab>" "abab" = false OK
-Glob.eval "<ab>" "aba" = false OK
-Glob.eval "<ab>" "abx" = false OK
-Glob.eval "<ab>" "ab" = true OK
-Glob.eval "<ab>" "" = false OK
-Glob.eval "<ab>" "abab" = false OK
-Glob.eval "<ab>" "aba" = false OK
-Glob.eval "<ab>" "abx" = false OK
-Glob.eval "<ab?c>" "abac" = true OK
-Glob.eval "<ab?c>" "abxc" = true OK
-Glob.eval "<ab?c>" "abab" = false OK
-Glob.eval "<ab?c>" "ababab" = false OK
-Glob.eval "<ab?c>" "ababa" = false OK
-Glob.eval "<ab?c>" "abac" = true OK
-Glob.eval "<ab?c>" "abxc" = true OK
-Glob.eval "<ab?c>" "abab" = false OK
-Glob.eval "<ab?c>" "ababab" = false OK
-Glob.eval "<ab?c>" "ababa" = false OK
-Glob.eval "<ab?c>" "abac" = true OK
-Glob.eval "<ab?c>" "abxc" = true OK
-Glob.eval "<ab?c>" "abab" = false OK
-Glob.eval "<ab?c>" "ababab" = false OK
-Glob.eval "<ab?c>" "ababa" = false OK
-Glob.eval "<*ab?cd*>" "123abecd345" = true OK
-Glob.eval "<*ab?cd*>" "abccd" = true OK
-Glob.eval "<*ab?cd*>" "abccd345" = true OK
-Glob.eval "<*ab?cd*>" "ababcababccdab" = true OK
-Glob.eval "<*ab?cd*>" "abcd" = false OK
-Glob.eval "<*ab?cd*>" "aaaaabcdababcd" = false OK
-Glob.eval "<*ab?cd*>" "123abecd345" = true OK
-Glob.eval "<*ab?cd*>" "abccd" = true OK
-Glob.eval "<*ab?cd*>" "abccd345" = true OK
-Glob.eval "<*ab?cd*>" "ababcababccdab" = true OK
-Glob.eval "<*ab?cd*>" "abcd" = false OK
-Glob.eval "<*ab?cd*>" "aaaaabcdababcd" = false OK
-Glob.eval "<*ab?cd*>" "123abecd345" = true OK
-Glob.eval "<*ab?cd*>" "abccd" = true OK
-Glob.eval "<*ab?cd*>" "abccd345" = true OK
-Glob.eval "<*ab?cd*>" "ababcababccdab" = true OK
-Glob.eval "<*ab?cd*>" "abcd" = false OK
-Glob.eval "<*ab?cd*>" "aaaaabcdababcd" = false OK
-Glob.eval "<*this*is*a*test*>" "this is a test" = true OK
-Glob.eval "<*this*is*a*test*>" "You know this is a test really" = true OK
-Glob.eval "<*this*is*a*test*>" "thisisatest" = true OK
-Glob.eval "<*this*is*a*test*>" "thisatest" = false OK
-Glob.eval "<*this*is*a*test*>" "this is a test" = true OK
-Glob.eval "<*this*is*a*test*>" "You know this is a test really" = true OK
-Glob.eval "<*this*is*a*test*>" "thisisatest" = true OK
-Glob.eval "<*this*is*a*test*>" "thisatest" = false OK
-Glob.eval "<*this*is*a*test*>" "this is a test" = true OK
-Glob.eval "<*this*is*a*test*>" "You know this is a test really" = true OK
-Glob.eval "<*this*is*a*test*>" "thisisatest" = true OK
-Glob.eval "<*this*is*a*test*>" "thisatest" = false OK
-Glob.eval "<b*>" "bxx" = true OK
-Glob.eval "<b*>" "bx" = true OK
-Glob.eval "<b*>" "aaab" = false OK
-Glob.eval "<b*>" "" = false OK
-Glob.eval "<b*>" "bxx" = true OK
-Glob.eval "<b*>" "bx" = true OK
-Glob.eval "<b*>" "aaab" = false OK
-Glob.eval "<b*>" "" = false OK
-Glob.eval "<b*>" "bxx" = true OK
-Glob.eval "<b*>" "bx" = true OK
-Glob.eval "<b*>" "aaab" = false OK
-Glob.eval "<b*>" "" = false OK
-Glob.eval "<*>" "" = true OK
-Glob.eval "<*>" "a" = true OK
-Glob.eval "<*>" "aaa" = true OK
-Glob.eval "<*>" "aaaaa" = true OK
-Glob.eval "<*>" "" = true OK
-Glob.eval "<*>" "a" = true OK
-Glob.eval "<*>" "aaa" = true OK
-Glob.eval "<*>" "aaaaa" = true OK
-Glob.eval "<*>" "" = true OK
-Glob.eval "<*>" "a" = true OK
-Glob.eval "<*>" "aaa" = true OK
-Glob.eval "<*>" "aaaaa" = true OK
-Glob.eval "<?>" "a" = true OK
-Glob.eval "<?>" "" = false OK
-Glob.eval "<?>" "aaa" = false OK
-Glob.eval "<?>" "aaaaa" = false OK
-Glob.eval "<?>" "a" = true OK
-Glob.eval "<?>" "" = false OK
-Glob.eval "<?>" "aaa" = false OK
-Glob.eval "<?>" "aaaaa" = false OK
-Glob.eval "<?>" "a" = true OK
-Glob.eval "<?>" "" = false OK
-Glob.eval "<?>" "aaa" = false OK
-Glob.eval "<?>" "aaaaa" = false OK
-Glob.eval "<{a,b}>" "a" = true OK
-Glob.eval "<{a,b}>" "b" = true OK
-Glob.eval "<{a,b}>" "" = false OK
-Glob.eval "<{a,b}>" "aa" = false OK
-Glob.eval "<{a,b}>" "ab" = false OK
-Glob.eval "<{a,b}>" "ba" = false OK
-Glob.eval "<{a,b}>" "bb" = false OK
-Glob.eval "<{a,b}>" "c" = false OK
-Glob.eval "<{a,b}>" "a" = true OK
-Glob.eval "<{a,b}>" "b" = true OK
-Glob.eval "<{a,b}>" "" = false OK
-Glob.eval "<{a,b}>" "aa" = false OK
-Glob.eval "<{a,b}>" "ab" = false OK
-Glob.eval "<{a,b}>" "ba" = false OK
-Glob.eval "<{a,b}>" "bb" = false OK
-Glob.eval "<{a,b}>" "c" = false OK
-Glob.eval "<{a,b}>" "a" = true OK
-Glob.eval "<{a,b}>" "b" = true OK
-Glob.eval "<{a,b}>" "" = false OK
-Glob.eval "<{a,b}>" "aa" = false OK
-Glob.eval "<{a,b}>" "ab" = false OK
-Glob.eval "<{a,b}>" "ba" = false OK
-Glob.eval "<{a,b}>" "bb" = false OK
-Glob.eval "<{a,b}>" "c" = false OK
-Glob.eval "<toto.{ml,mli}>" "toto.ml" = true OK
-Glob.eval "<toto.{ml,mli}>" "toto.mli" = true OK
-Glob.eval "<toto.{ml,mli}>" "toto." = false OK
-Glob.eval "<toto.{ml,mli}>" "toto.mll" = false OK
-Glob.eval "<toto.{ml,mli}>" "toto.ml" = true OK
-Glob.eval "<toto.{ml,mli}>" "toto.mli" = true OK
-Glob.eval "<toto.{ml,mli}>" "toto." = false OK
-Glob.eval "<toto.{ml,mli}>" "toto.mll" = false OK
-Glob.eval "<toto.{ml,mli}>" "toto.ml" = true OK
-Glob.eval "<toto.{ml,mli}>" "toto.mli" = true OK
-Glob.eval "<toto.{ml,mli}>" "toto." = false OK
-Glob.eval "<toto.{ml,mli}>" "toto.mll" = false OK
-Glob.eval "<{a,b}{c,[de]}{f,g}>" "acf" = true OK
-Glob.eval "<{a,b}{c,[de]}{f,g}>" "acg" = true OK
-Glob.eval "<{a,b}{c,[de]}{f,g}>" "adf" = true OK
-Glob.eval "<{a,b}{c,[de]}{f,g}>" "adg" = true OK
-Glob.eval "<{a,b}{c,[de]}{f,g}>" "aef" = true OK
-Glob.eval "<{a,b}{c,[de]}{f,g}>" "aeg" = true OK
-Glob.eval "<{a,b}{c,[de]}{f,g}>" "bcf" = true OK
-Glob.eval "<{a,b}{c,[de]}{f,g}>" "bcg" = true OK
-Glob.eval "<{a,b}{c,[de]}{f,g}>" "bdf" = true OK
-Glob.eval "<{a,b}{c,[de]}{f,g}>" "bdg" = true OK
-Glob.eval "<{a,b}{c,[de]}{f,g}>" "bef" = true OK
-Glob.eval "<{a,b}{c,[de]}{f,g}>" "beg" = true OK
-Glob.eval "<{a,b}{c,[de]}{f,g}>" "afg" = false OK
-Glob.eval "<{a,b}{c,[de]}{f,g}>" "af" = false OK
-Glob.eval "<{a,b}{c,[de]}{f,g}>" "aee" = false OK
-Glob.eval "<{a,b}{c,[de]}{f,g}>" "acf" = true OK
-Glob.eval "<{a,b}{c,[de]}{f,g}>" "acg" = true OK
-Glob.eval "<{a,b}{c,[de]}{f,g}>" "adf" = true OK
-Glob.eval "<{a,b}{c,[de]}{f,g}>" "adg" = true OK
-Glob.eval "<{a,b}{c,[de]}{f,g}>" "aef" = true OK
-Glob.eval "<{a,b}{c,[de]}{f,g}>" "aeg" = true OK
-Glob.eval "<{a,b}{c,[de]}{f,g}>" "bcf" = true OK
-Glob.eval "<{a,b}{c,[de]}{f,g}>" "bcg" = true OK
-Glob.eval "<{a,b}{c,[de]}{f,g}>" "bdf" = true OK
-Glob.eval "<{a,b}{c,[de]}{f,g}>" "bdg" = true OK
-Glob.eval "<{a,b}{c,[de]}{f,g}>" "bef" = true OK
-Glob.eval "<{a,b}{c,[de]}{f,g}>" "beg" = true OK
-Glob.eval "<{a,b}{c,[de]}{f,g}>" "afg" = false OK
-Glob.eval "<{a,b}{c,[de]}{f,g}>" "af" = false OK
-Glob.eval "<{a,b}{c,[de]}{f,g}>" "aee" = false OK
-Glob.eval "<{a,b}{c,[de]}{f,g}>" "acf" = true OK
-Glob.eval "<{a,b}{c,[de]}{f,g}>" "acg" = true OK
-Glob.eval "<{a,b}{c,[de]}{f,g}>" "adf" = true OK
-Glob.eval "<{a,b}{c,[de]}{f,g}>" "adg" = true OK
-Glob.eval "<{a,b}{c,[de]}{f,g}>" "aef" = true OK
-Glob.eval "<{a,b}{c,[de]}{f,g}>" "aeg" = true OK
-Glob.eval "<{a,b}{c,[de]}{f,g}>" "bcf" = true OK
-Glob.eval "<{a,b}{c,[de]}{f,g}>" "bcg" = true OK
-Glob.eval "<{a,b}{c,[de]}{f,g}>" "bdf" = true OK
-Glob.eval "<{a,b}{c,[de]}{f,g}>" "bdg" = true OK
-Glob.eval "<{a,b}{c,[de]}{f,g}>" "bef" = true OK
-Glob.eval "<{a,b}{c,[de]}{f,g}>" "beg" = true OK
-Glob.eval "<{a,b}{c,[de]}{f,g}>" "afg" = false OK
-Glob.eval "<{a,b}{c,[de]}{f,g}>" "af" = false OK
-Glob.eval "<{a,b}{c,[de]}{f,g}>" "aee" = false OK
-Glob.eval "(<*.ml> or <*.mli>) and not \"hello.ml\"" "a.ml" = true OK
-Glob.eval "(<*.ml> or <*.mli>) and not \"hello.ml\"" "b.ml" = true OK
-Glob.eval "(<*.ml> or <*.mli>) and not \"hello.ml\"" "a.mli" = true OK
-Glob.eval "(<*.ml> or <*.mli>) and not \"hello.ml\"" "hello.ml" = false OK
-Glob.eval "(<*.ml> or <*.mli>) and not \"hello.ml\"" "a.mli.x" = false OK
-Glob.eval "(<*.ml> or <*.mli>) and not \"hello.ml\"" "a.ml" = true OK
-Glob.eval "(<*.ml> or <*.mli>) and not \"hello.ml\"" "b.ml" = true OK
-Glob.eval "(<*.ml> or <*.mli>) and not \"hello.ml\"" "a.mli" = true OK
-Glob.eval "(<*.ml> or <*.mli>) and not \"hello.ml\"" "hello.ml" = false OK
-Glob.eval "(<*.ml> or <*.mli>) and not \"hello.ml\"" "a.mli.x" = false OK
-Glob.eval "(<*.ml> or <*.mli>) and not \"hello.ml\"" "a.ml" = true OK
-Glob.eval "(<*.ml> or <*.mli>) and not \"hello.ml\"" "b.ml" = true OK
-Glob.eval "(<*.ml> or <*.mli>) and not \"hello.ml\"" "a.mli" = true OK
-Glob.eval "(<*.ml> or <*.mli>) and not \"hello.ml\"" "hello.ml" = false OK
-Glob.eval "(<*.ml> or <*.mli>) and not \"hello.ml\"" "a.mli.x" = false OK
-Glob.eval "<*>" "alpha" = true OK
-Glob.eval "<*>" "beta" = true OK
-Glob.eval "<*>" "alpha/beta" = false OK
-Glob.eval "<*>" "gamma/delta" = false OK
-Glob.eval "<*>" "alpha" = true OK
-Glob.eval "<*>" "beta" = true OK
-Glob.eval "<*>" "alpha/beta" = false OK
-Glob.eval "<*>" "gamma/delta" = false OK
-Glob.eval "<*>" "alpha" = true OK
-Glob.eval "<*>" "beta" = true OK
-Glob.eval "<*>" "alpha/beta" = false OK
-Glob.eval "<*>" "gamma/delta" = false OK
-Glob.eval "<alpha/**/beta>" "alpha/beta" = true OK
-Glob.eval "<alpha/**/beta>" "alpha/gamma/beta" = true OK
-Glob.eval "<alpha/**/beta>" "alpha/gamma/delta/beta" = true OK
-Glob.eval "<alpha/**/beta>" "alpha" = false OK
-Glob.eval "<alpha/**/beta>" "beta" = false OK
-Glob.eval "<alpha/**/beta>" "gamma/delta" = false OK
-Glob.eval "<alpha/**/beta>" "alpha/beta" = true OK
-Glob.eval "<alpha/**/beta>" "alpha/gamma/beta" = true OK
-Glob.eval "<alpha/**/beta>" "alpha/gamma/delta/beta" = true OK
-Glob.eval "<alpha/**/beta>" "alpha" = false OK
-Glob.eval "<alpha/**/beta>" "beta" = false OK
-Glob.eval "<alpha/**/beta>" "gamma/delta" = false OK
-Glob.eval "<alpha/**/beta>" "alpha/beta" = true OK
-Glob.eval "<alpha/**/beta>" "alpha/gamma/beta" = true OK
-Glob.eval "<alpha/**/beta>" "alpha/gamma/delta/beta" = true OK
-Glob.eval "<alpha/**/beta>" "alpha" = false OK
-Glob.eval "<alpha/**/beta>" "beta" = false OK
-Glob.eval "<alpha/**/beta>" "gamma/delta" = false OK
-Glob.eval "<**/*.ml>" "toto.ml" = true OK
-Glob.eval "<**/*.ml>" "toto/tata.ml" = true OK
-Glob.eval "<**/*.ml>" "alpha/gamma/delta/beta.ml" = true OK
-Glob.eval "<**/*.ml>" "toto.mli" = false OK
-Glob.eval "<**/*.ml>" "toto.ml" = true OK
-Glob.eval "<**/*.ml>" "toto/tata.ml" = true OK
-Glob.eval "<**/*.ml>" "alpha/gamma/delta/beta.ml" = true OK
-Glob.eval "<**/*.ml>" "toto.mli" = false OK
-Glob.eval "<**/*.ml>" "toto.ml" = true OK
-Glob.eval "<**/*.ml>" "toto/tata.ml" = true OK
-Glob.eval "<**/*.ml>" "alpha/gamma/delta/beta.ml" = true OK
-Glob.eval "<**/*.ml>" "toto.mli" = false OK
-Glob.eval "<toto/**>" "toto/" = true OK
-Glob.eval "<toto/**>" "toto/tata" = true OK
-Glob.eval "<toto/**>" "toto/alpha/gamma/delta/beta.ml" = true OK
-Glob.eval "<toto/**>" "toto" = true OK
-Glob.eval "<toto/**>" "toto2/tata" = false OK
-Glob.eval "<toto/**>" "tata/titi" = false OK
-Glob.eval "<toto/**>" "toto/" = true OK
-Glob.eval "<toto/**>" "toto/tata" = true OK
-Glob.eval "<toto/**>" "toto/alpha/gamma/delta/beta.ml" = true OK
-Glob.eval "<toto/**>" "toto" = true OK
-Glob.eval "<toto/**>" "toto2/tata" = false OK
-Glob.eval "<toto/**>" "tata/titi" = false OK
-Glob.eval "<toto/**>" "toto/" = true OK
-Glob.eval "<toto/**>" "toto/tata" = true OK
-Glob.eval "<toto/**>" "toto/alpha/gamma/delta/beta.ml" = true OK
-Glob.eval "<toto/**>" "toto" = true OK
-Glob.eval "<toto/**>" "toto2/tata" = false OK
-Glob.eval "<toto/**>" "tata/titi" = false OK
-Resource.matchit "%(path:<**/>)lib%(libname:<*> and not <*.*>).a" "libfoo.a" OK
-Resource.matchit "%(path:<**/>)lib%(libname:<*> and not <*.*>).a" "src/bar/libfoo.a" OK
-Resource.matchit "%(path:<**/>)lib%(libname:<*> and not <*.*>).a" "otherlibs/unix/libunix.a" OK
-Resource.matchit "%(path:<**/>)lib%(libname:<*> and not <*.*>).a" "otherlibsliblib/unlibix/libunix.a" OK
-Resource.matchit "%(path:<**/>)lib%(libname:<*> and not <*.*>).a" "libfoo/libbar.a" OK
-Resource.matchit "%(path:<**/>)lib%(libname:<*> and not <*.*>).a" "src/libfoo/boo/libbar.a" OK
-Resource.matchit "%(path:<**/>)lib%(libname:<*> and not <*.*>).a" "bar" = None OK
-Resource.matchit "%(path:<**/>)lib%(libname:<*> and not <*.*>).a" "libbar/foo.a" = None OK
-Resource.matchit "%(path:<**/>)lib%(libname:<*> and not <*.*>).a" "libfoo.b.a" = None OK
-Resource.matchit "%(path:<**/>)lib%(libname:<*> and not <*.*>).a" "libfoo.a" OK
-Resource.matchit "%(path:<**/>)lib%(libname:<*> and not <*.*>).a" "src/bar/libfoo.a" OK
-Resource.matchit "%(path:<**/>)lib%(libname:<*> and not <*.*>).a" "otherlibs/unix/libunix.a" OK
-Resource.matchit "%(path:<**/>)lib%(libname:<*> and not <*.*>).a" "otherlibsliblib/unlibix/libunix.a" OK
-Resource.matchit "%(path:<**/>)lib%(libname:<*> and not <*.*>).a" "libfoo/libbar.a" OK
-Resource.matchit "%(path:<**/>)lib%(libname:<*> and not <*.*>).a" "src/libfoo/boo/libbar.a" OK
-Resource.matchit "%(path:<**/>)lib%(libname:<*> and not <*.*>).a" "bar" = None OK
-Resource.matchit "%(path:<**/>)lib%(libname:<*> and not <*.*>).a" "libbar/foo.a" = None OK
-Resource.matchit "%(path:<**/>)lib%(libname:<*> and not <*.*>).a" "libfoo.b.a" = None OK
-Resource.matchit "%(path:<**/>)lib%(libname:<*> and not <*.*>).a" "libfoo.a" OK
-Resource.matchit "%(path:<**/>)lib%(libname:<*> and not <*.*>).a" "src/bar/libfoo.a" OK
-Resource.matchit "%(path:<**/>)lib%(libname:<*> and not <*.*>).a" "otherlibs/unix/libunix.a" OK
-Resource.matchit "%(path:<**/>)lib%(libname:<*> and not <*.*>).a" "otherlibsliblib/unlibix/libunix.a" OK
-Resource.matchit "%(path:<**/>)lib%(libname:<*> and not <*.*>).a" "libfoo/libbar.a" OK
-Resource.matchit "%(path:<**/>)lib%(libname:<*> and not <*.*>).a" "src/libfoo/boo/libbar.a" OK
-Resource.matchit "%(path:<**/>)lib%(libname:<*> and not <*.*>).a" "bar" = None OK
-Resource.matchit "%(path:<**/>)lib%(libname:<*> and not <*.*>).a" "libbar/foo.a" = None OK
-Resource.matchit "%(path:<**/>)lib%(libname:<*> and not <*.*>).a" "libfoo.b.a" = None OK
- _____         _    __     ___      _               _
-|_   _|__  ___| |_  \ \   / (_)_ __| |_ _   _  __ _| |
-  | |/ _ \/ __| __|  \ \ / /| | '__| __| | | |/ _` | |
-  | |  __/\__ \ |_    \ V / | | |  | |_| |_| | (_| | |
-  |_|\___||___/\__|    \_/  |_|_|   \__|\__,_|\__,_|_|
-
- _____                    _
-|_   _|_ _ _ __ __ _  ___| |_ ___
-  | |/ _` | '__/ _` |/ _ \ __/ __|
-  | | (_| | | | (_| |  __/ |_\__ \
-  |_|\__,_|_|  \__, |\___|\__|___/
-               |___/
-+ CMDOPTS=
-+ BUILD='../../_build/ocamlbuild.native bar -no-skip -classic-display '
-+ BUILD1='../../_build/ocamlbuild.native bar -no-skip -classic-display  '
-+ BUILD2='../../_build/ocamlbuild.native bar -no-skip -classic-display  -verbose 0 -nothing-should-be-rebuilt '
-+ rm -rf _build
-+ cp foo1 foo
-+ ../../_build/ocamlbuild.native bar -no-skip -classic-display
-ocamlopt.opt -I /Users/ertai/l/ocaml/ocamlbuild-unstable/ocamlbuild/_install/lib/ocamlbuild unix.cmxa /Users/ertai/l/ocaml/ocamlbuild-unstable/ocamlbuild/_install/lib/ocamlbuild/ocamlbuildlib.cmxa myocamlbuild.ml /Users/ertai/l/ocaml/ocamlbuild-unstable/ocamlbuild/_install/lib/ocamlbuild/ocamlbuild.cmx -o myocamlbuild
-cp foo bar
-+ ../../_build/ocamlbuild.native bar -no-skip -classic-display -verbose 0 -nothing-should-be-rebuilt
-[cache hit] cp foo bar
-+ cp foo2 foo
-+ ../../_build/ocamlbuild.native bar -no-skip -classic-display -verbose 0
-cp foo bar
-+ ../../_build/ocamlbuild.native bar -no-skip -classic-display -verbose 0 -nothing-should-be-rebuilt
-[cache hit] cp foo bar
-+ rm foo
diff --git a/ocamlbuild/test/runtest.sh b/ocamlbuild/test/runtest.sh
deleted file mode 100755 (executable)
index 215360f..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-#!/bin/sh
-set -e
-cd `dirname $0`
-
-myfiglet() {
-  figlet $@ | sed 's/  *$//'
-}
-
-if figlet ""; then
-  BANNER=myfiglet
-else
-  echo "Install figlet to have a better output, press enter to continue with echo"
-  read
-  BANNER=echo
-fi
-
-HERE=`pwd`
-
-$BANNER Test2
-./test2/test.sh $@
-$BANNER Test3
-./test3/test.sh $@
-$BANNER Test4
-./test4/test.sh $@
-$BANNER Test5
-./test5/test.sh $@
-$BANNER Test6
-./test6/test.sh $@
-$BANNER Test7
-./test7/test.sh $@
-$BANNER Test8
-./test8/test.sh $@
-$BANNER Test9
-./test9/test.sh $@
-$BANNER Test Virtual Targets
-./test_virtual/test.sh $@
diff --git a/ocamlbuild/test/test1/foo.ml b/ocamlbuild/test/test1/foo.ml
deleted file mode 100644 (file)
index 43a5106..0000000
+++ /dev/null
@@ -1 +0,0 @@
-module MA1 = A1
diff --git a/ocamlbuild/test/test10/dbdi b/ocamlbuild/test/test10/dbdi
deleted file mode 100644 (file)
index 7f54810..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-#load "discard_printf.cmo";;
-#load "debug.cmo";;
-#load "unix.cma";;
-#load "str.cma";;
-#load "my_unix.cmo";;
-#load "bool.cmo";;
-#load "glob_ast.cmo";;
-#load "glob_lexer.cmo";;
-#load "glob.cmo";;  
-#load "lexers.cmo";;
-#load "my_std.cmo";;
-#load "tags.cmo";;
diff --git a/ocamlbuild/test/test10/test.sh b/ocamlbuild/test/test10/test.sh
deleted file mode 100755 (executable)
index 1f96443..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-set -e
-set -x
-cd `dirname $0`/../..
-./_build/ocamlbuild.native -quiet -build-dir _buildtest -no-links test/test9/testglob.native
-./_buildtest/test/test9/testglob.native
diff --git a/ocamlbuild/test/test11/_tags b/ocamlbuild/test/test11/_tags
deleted file mode 100644 (file)
index 7e620a9..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-# a comment
-"a/aa.byte" or "a/aa.native": use_libb
diff --git a/ocamlbuild/test/test11/a/aa.ml b/ocamlbuild/test/test11/a/aa.ml
deleted file mode 100644 (file)
index 411d29b..0000000
+++ /dev/null
@@ -1 +0,0 @@
-let bar = 3 + List.length Bb.foo
diff --git a/ocamlbuild/test/test11/a/aa.mli b/ocamlbuild/test/test11/a/aa.mli
deleted file mode 100644 (file)
index 20f3c52..0000000
+++ /dev/null
@@ -1 +0,0 @@
-val bar : int
diff --git a/ocamlbuild/test/test11/b/bb.ml b/ocamlbuild/test/test11/b/bb.ml
deleted file mode 100644 (file)
index fa80dc4..0000000
+++ /dev/null
@@ -1 +0,0 @@
-let foo = [2.2]
diff --git a/ocamlbuild/test/test11/b/libb.mllib b/ocamlbuild/test/test11/b/libb.mllib
deleted file mode 100644 (file)
index d0acbb7..0000000
+++ /dev/null
@@ -1 +0,0 @@
-Bb
diff --git a/ocamlbuild/test/test11/myocamlbuild.ml b/ocamlbuild/test/test11/myocamlbuild.ml
deleted file mode 100644 (file)
index b6966c7..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-open Ocamlbuild_plugin;;
-dispatch begin function
-| After_rules -> ocaml_lib "b/libb"
-| _ -> ()
-end
diff --git a/ocamlbuild/test/test11/test.sh b/ocamlbuild/test/test11/test.sh
deleted file mode 100755 (executable)
index ed3f908..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-#!/bin/sh
-cd `dirname $0`
-set -e
-set -x
-CMDOTPS="" # -- command args
-BUILD="../../_build/ocamlbuild.native -I a -I b aa.byte aa.native -no-skip -classic-display $@"
-BUILD1="$BUILD $CMDOPTS"
-BUILD2="$BUILD -verbose 0 -nothing-should-be-rebuilt $CMDOPTS"
-rm -rf _build
-$BUILD1
-echo looks if libs are there
-ls _build/b/libb.cma _build/b/libb.cmxa _build/b/libb.a
-$BUILD2
diff --git a/ocamlbuild/test/test2/_tags b/ocamlbuild/test/test2/_tags
deleted file mode 100644 (file)
index fc23589..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-"vivi.ml": camlp4o
-
-# , some_useless_tag, \ more_useless_tags
diff --git a/ocamlbuild/test/test2/tata.ml b/ocamlbuild/test/test2/tata.ml
deleted file mode 100644 (file)
index 361fadd..0000000
+++ /dev/null
@@ -1 +0,0 @@
-let tata = "TATA2"
diff --git a/ocamlbuild/test/test2/tata.mli b/ocamlbuild/test/test2/tata.mli
deleted file mode 100644 (file)
index 7c7175c..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-(* a comment *)
-val tata : string
diff --git a/ocamlbuild/test/test2/test.sh b/ocamlbuild/test/test2/test.sh
deleted file mode 100755 (executable)
index 8bbd7c7..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-#!/bin/sh
-cd `dirname $0`
-set -e
-set -x
-CMDOPTS="-- -help"
-BUILD="../../_build/ocamlbuild.native toto.byte toto.native -no-skip -classic-display $@"
-BUILD1="$BUILD $CMDOPTS"
-BUILD2="$BUILD -verbose 0 -nothing-should-be-rebuilt $CMDOPTS"
-rm -rf _build
-cp vivi1.ml vivi.ml
-$BUILD1
-$BUILD2
-cp vivi2.ml vivi.ml
-$BUILD1
-$BUILD2
-cp vivi3.ml vivi.ml
-$BUILD1
-$BUILD2
diff --git a/ocamlbuild/test/test2/titi.ml b/ocamlbuild/test/test2/titi.ml
deleted file mode 100644 (file)
index 3abbf1d..0000000
+++ /dev/null
@@ -1 +0,0 @@
-let titi = []
diff --git a/ocamlbuild/test/test2/toto.ml b/ocamlbuild/test/test2/toto.ml
deleted file mode 100644 (file)
index dbb5a43..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-let i = Tutu.tutu + 10
-let s = Tata.tata ^ ".ml"
-let l = 3 :: Titi.titi
-let () = Format.printf "toto.native: %s: Hello world!!!@." Sys.argv.(0)
-let () = Format.printf "Tutu.tutu => %d@.Tata.tata => %S@." Tutu.tutu Tata.tata
diff --git a/ocamlbuild/test/test2/tutu.ml b/ocamlbuild/test/test2/tutu.ml
deleted file mode 100644 (file)
index 2e8015b..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-let tutu = (Array.length Vivi.vivi : Tyty.t)
-let tutu' = 2.0 +. float_of_int tutu
diff --git a/ocamlbuild/test/test2/tutu.mli b/ocamlbuild/test/test2/tutu.mli
deleted file mode 100644 (file)
index 26657f8..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-(* a comment *)
-val tutu : int
-val tutu' : float
diff --git a/ocamlbuild/test/test2/tyty.mli b/ocamlbuild/test/test2/tyty.mli
deleted file mode 100644 (file)
index 975adb5..0000000
+++ /dev/null
@@ -1 +0,0 @@
-type t = int
diff --git a/ocamlbuild/test/test2/vivi1.ml b/ocamlbuild/test/test2/vivi1.ml
deleted file mode 100644 (file)
index 1c0517e..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-let rec p i = [< '1; '2; p (i + 1) >]
-let vivi = [|2|]
diff --git a/ocamlbuild/test/test2/vivi2.ml b/ocamlbuild/test/test2/vivi2.ml
deleted file mode 100644 (file)
index 1fb48c1..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-let rec p i = [< '1; '2; p (i + 1) >]
-let vivi = [|3|]
diff --git a/ocamlbuild/test/test2/vivi3.ml b/ocamlbuild/test/test2/vivi3.ml
deleted file mode 100644 (file)
index 7849fad..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-let rec p i = [< '1; '2; p (i + 1) >]
-let vivi = [|2.1; 1.1|]
diff --git a/ocamlbuild/test/test3/_tags b/ocamlbuild/test/test3/_tags
deleted file mode 100644 (file)
index 4505f13..0000000
+++ /dev/null
@@ -1 +0,0 @@
-"a.byte" or "a.native": use_unix
diff --git a/ocamlbuild/test/test3/a.ml b/ocamlbuild/test/test3/a.ml
deleted file mode 100644 (file)
index d4586ea..0000000
+++ /dev/null
@@ -1 +0,0 @@
-module X = B
diff --git a/ocamlbuild/test/test3/a.mli b/ocamlbuild/test/test3/a.mli
deleted file mode 100644 (file)
index c17617a..0000000
+++ /dev/null
@@ -1 +0,0 @@
-(* Nothing *)
diff --git a/ocamlbuild/test/test3/b.ml b/ocamlbuild/test/test3/b.ml
deleted file mode 100644 (file)
index 58c510c..0000000
+++ /dev/null
@@ -1 +0,0 @@
-module X = C
diff --git a/ocamlbuild/test/test3/b.mli b/ocamlbuild/test/test3/b.mli
deleted file mode 100644 (file)
index 5eea480..0000000
+++ /dev/null
@@ -1 +0,0 @@
-(* nothing *)
diff --git a/ocamlbuild/test/test3/c.ml b/ocamlbuild/test/test3/c.ml
deleted file mode 100644 (file)
index 06f0fd9..0000000
+++ /dev/null
@@ -1 +0,0 @@
-module X = D
diff --git a/ocamlbuild/test/test3/c.mli b/ocamlbuild/test/test3/c.mli
deleted file mode 100644 (file)
index 5eea480..0000000
+++ /dev/null
@@ -1 +0,0 @@
-(* nothing *)
diff --git a/ocamlbuild/test/test3/d.ml b/ocamlbuild/test/test3/d.ml
deleted file mode 100644 (file)
index 42ab724..0000000
+++ /dev/null
@@ -1 +0,0 @@
-module X = E
diff --git a/ocamlbuild/test/test3/d.mli b/ocamlbuild/test/test3/d.mli
deleted file mode 100644 (file)
index 5eea480..0000000
+++ /dev/null
@@ -1 +0,0 @@
-(* nothing *)
diff --git a/ocamlbuild/test/test3/e.ml b/ocamlbuild/test/test3/e.ml
deleted file mode 100644 (file)
index 863ea00..0000000
+++ /dev/null
@@ -1 +0,0 @@
-module X = F
diff --git a/ocamlbuild/test/test3/e.mli b/ocamlbuild/test/test3/e.mli
deleted file mode 100644 (file)
index 5eea480..0000000
+++ /dev/null
@@ -1 +0,0 @@
-(* nothing *)
diff --git a/ocamlbuild/test/test3/f.ml b/ocamlbuild/test/test3/f.ml
deleted file mode 100644 (file)
index 00915fd..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-(* nothing *)
-let _ = Unix.stat
diff --git a/ocamlbuild/test/test3/f.mli b/ocamlbuild/test/test3/f.mli
deleted file mode 100644 (file)
index 5eea480..0000000
+++ /dev/null
@@ -1 +0,0 @@
-(* nothing *)
diff --git a/ocamlbuild/test/test3/proj.odocl b/ocamlbuild/test/test3/proj.odocl
deleted file mode 100644 (file)
index 532c720..0000000
+++ /dev/null
@@ -1 +0,0 @@
-A B C D E F
diff --git a/ocamlbuild/test/test3/test.sh b/ocamlbuild/test/test3/test.sh
deleted file mode 100755 (executable)
index 396aaf2..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-#!/bin/sh
-cd `dirname $0`
-set -e
-set -x
-CMDOTPS="" # -- command args
-BUILD="../../_build/ocamlbuild.native a.byte a.native proj.docdir/index.html -no-skip -classic-display $@"
-BUILD1="$BUILD $CMDOPTS"
-BUILD2="$BUILD -verbose 0 -nothing-should-be-rebuilt $CMDOPTS"
-rm -rf _build
-$BUILD1
-$BUILD2
diff --git a/ocamlbuild/test/test4/_tags b/ocamlbuild/test/test4/_tags
deleted file mode 100644 (file)
index 4b6e798..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-# a comment
-"a/aa.byte" or "a/aa.native": use_str
diff --git a/ocamlbuild/test/test4/a/aa.ml b/ocamlbuild/test/test4/a/aa.ml
deleted file mode 100644 (file)
index 411d29b..0000000
+++ /dev/null
@@ -1 +0,0 @@
-let bar = 3 + List.length Bb.foo
diff --git a/ocamlbuild/test/test4/a/aa.mli b/ocamlbuild/test/test4/a/aa.mli
deleted file mode 100644 (file)
index 20f3c52..0000000
+++ /dev/null
@@ -1 +0,0 @@
-val bar : int
diff --git a/ocamlbuild/test/test4/b/bb.ml b/ocamlbuild/test/test4/b/bb.ml
deleted file mode 100644 (file)
index 031031f..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-let r = Str.regexp "r"
-let foo = [2.2]
diff --git a/ocamlbuild/test/test4/test.sh b/ocamlbuild/test/test4/test.sh
deleted file mode 100755 (executable)
index 4b2580a..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-#!/bin/sh
-cd `dirname $0`
-set -e
-set -x
-CMDOTPS="" # -- command args
-BUILD="../../_build/ocamlbuild.native -I a -I b aa.byte aa.native -no-skip -classic-display $@"
-BUILD1="$BUILD $CMDOPTS"
-BUILD2="$BUILD -verbose 0 -nothing-should-be-rebuilt $CMDOPTS"
-rm -rf _build
-$BUILD1
-$BUILD2
diff --git a/ocamlbuild/test/test5/_tags b/ocamlbuild/test/test5/_tags
deleted file mode 100644 (file)
index 2f66a28..0000000
+++ /dev/null
@@ -1 +0,0 @@
-"a.cmx" or "b.cmx": for-pack(C)
diff --git a/ocamlbuild/test/test5/a.ml b/ocamlbuild/test/test5/a.ml
deleted file mode 100644 (file)
index e659e73..0000000
+++ /dev/null
@@ -1 +0,0 @@
-let a = 42 + Stack.stack
diff --git a/ocamlbuild/test/test5/a.mli b/ocamlbuild/test/test5/a.mli
deleted file mode 100644 (file)
index 3f79c81..0000000
+++ /dev/null
@@ -1 +0,0 @@
-val a : int
diff --git a/ocamlbuild/test/test5/b.ml b/ocamlbuild/test/test5/b.ml
deleted file mode 100644 (file)
index 8db5ca3..0000000
+++ /dev/null
@@ -1 +0,0 @@
-let b = A.a + 1
diff --git a/ocamlbuild/test/test5/c.mlpack b/ocamlbuild/test/test5/c.mlpack
deleted file mode 100644 (file)
index 5decc2b..0000000
+++ /dev/null
@@ -1 +0,0 @@
-A B
diff --git a/ocamlbuild/test/test5/d.ml b/ocamlbuild/test/test5/d.ml
deleted file mode 100644 (file)
index a5ec432..0000000
+++ /dev/null
@@ -1 +0,0 @@
-Format.printf "C.B.b = %d@." C.B.b
diff --git a/ocamlbuild/test/test5/stack.ml b/ocamlbuild/test/test5/stack.ml
deleted file mode 100644 (file)
index 1820f85..0000000
+++ /dev/null
@@ -1 +0,0 @@
-let stack = 42
diff --git a/ocamlbuild/test/test5/test.sh b/ocamlbuild/test/test5/test.sh
deleted file mode 100755 (executable)
index 9d78f19..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-#!/bin/sh
-cd `dirname $0` 
-set -e
-set -x
-CMDOPTS="" # -- command args
-BUILD="../../_build/ocamlbuild.native d.byte d.native -no-skip -classic-display $@"
-BUILD1="$BUILD $CMDOPTS"
-BUILD2="$BUILD -verbose 0 -nothing-should-be-rebuilt $CMDOPTS"
-rm -rf _build
-$BUILD1
-$BUILD2
diff --git a/ocamlbuild/test/test6/a.ml b/ocamlbuild/test/test6/a.ml
deleted file mode 100644 (file)
index e09e5d0..0000000
+++ /dev/null
@@ -1 +0,0 @@
-let a = B.b
diff --git a/ocamlbuild/test/test6/a.mli b/ocamlbuild/test/test6/a.mli
deleted file mode 100644 (file)
index 451c586..0000000
+++ /dev/null
@@ -1 +0,0 @@
-val a : 'a -> 'a
diff --git a/ocamlbuild/test/test6/b.ml b/ocamlbuild/test/test6/b.ml
deleted file mode 100644 (file)
index 362c8fc..0000000
+++ /dev/null
@@ -1 +0,0 @@
-let b = D.d
diff --git a/ocamlbuild/test/test6/b.mli b/ocamlbuild/test/test6/b.mli
deleted file mode 100644 (file)
index 685b790..0000000
+++ /dev/null
@@ -1 +0,0 @@
-val b : 'a -> 'a
diff --git a/ocamlbuild/test/test6/b.mli.v1 b/ocamlbuild/test/test6/b.mli.v1
deleted file mode 100644 (file)
index 685b790..0000000
+++ /dev/null
@@ -1 +0,0 @@
-val b : 'a -> 'a
diff --git a/ocamlbuild/test/test6/b.mli.v2 b/ocamlbuild/test/test6/b.mli.v2
deleted file mode 100644 (file)
index a431698..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-....
-val b : 'a -> 'a
diff --git a/ocamlbuild/test/test6/d.ml b/ocamlbuild/test/test6/d.ml
deleted file mode 100644 (file)
index 61c7a9c..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-type t
-let d x = x
diff --git a/ocamlbuild/test/test6/d.mli b/ocamlbuild/test/test6/d.mli
deleted file mode 100644 (file)
index 1db89bb..0000000
+++ /dev/null
@@ -1 +0,0 @@
-val d : 'a -> 'a
diff --git a/ocamlbuild/test/test6/d.mli.v1 b/ocamlbuild/test/test6/d.mli.v1
deleted file mode 100644 (file)
index 12fea1c..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-type t
-val d : 'a -> 'a
diff --git a/ocamlbuild/test/test6/d.mli.v2 b/ocamlbuild/test/test6/d.mli.v2
deleted file mode 100644 (file)
index 1db89bb..0000000
+++ /dev/null
@@ -1 +0,0 @@
-val d : 'a -> 'a
diff --git a/ocamlbuild/test/test6/main.ml b/ocamlbuild/test/test6/main.ml
deleted file mode 100644 (file)
index 61acf12..0000000
+++ /dev/null
@@ -1 +0,0 @@
-A.a 2. +. D.d 1.
diff --git a/ocamlbuild/test/test6/main.mli b/ocamlbuild/test/test6/main.mli
deleted file mode 100644 (file)
index 5eea480..0000000
+++ /dev/null
@@ -1 +0,0 @@
-(* nothing *)
diff --git a/ocamlbuild/test/test6/test.sh b/ocamlbuild/test/test6/test.sh
deleted file mode 100755 (executable)
index fedbc9c..0000000
+++ /dev/null
@@ -1,26 +0,0 @@
-#!/bin/sh
-cd `dirname $0`
-set -x
-rm -rf _build
-CMDOPTS="" # -- command args
-BUILD="../../_build/ocamlbuild.native -no-skip main.byte -classic-display $@"
-BUILD1="$BUILD $CMDOPTS"
-BUILD2="$BUILD -verbose 0 -nothing-should-be-rebuilt $CMDOPTS"
-cp b.mli.v1 b.mli
-cp d.mli.v1 d.mli
-$BUILD1
-$BUILD2
-cp b.mli.v2 b.mli
-cp d.mli.v2 d.mli
-$BUILD1
-cp b.mli.v1 b.mli
-if $BUILD1; then
-  if $BUILD2; then
-    echo PASS
-  else
-    echo "FAIL (-nothing-should-be-rebuilt)"
-  fi
-else
-  echo FAIL
-fi
-
diff --git a/ocamlbuild/test/test7/_tags b/ocamlbuild/test/test7/_tags
deleted file mode 100644 (file)
index 8501e32..0000000
+++ /dev/null
@@ -1 +0,0 @@
-"main.byte": my_cool_plugin
diff --git a/ocamlbuild/test/test7/aa.ml b/ocamlbuild/test/test7/aa.ml
deleted file mode 100644 (file)
index 877d0af..0000000
+++ /dev/null
@@ -1 +0,0 @@
-let aa = "aa"
diff --git a/ocamlbuild/test/test7/bb.mli b/ocamlbuild/test/test7/bb.mli
deleted file mode 100644 (file)
index 9256de2..0000000
+++ /dev/null
@@ -1 +0,0 @@
-val bb : int
diff --git a/ocamlbuild/test/test7/bb1.ml b/ocamlbuild/test/test7/bb1.ml
deleted file mode 100644 (file)
index 9ac2d59..0000000
+++ /dev/null
@@ -1 +0,0 @@
-let bb = 43
diff --git a/ocamlbuild/test/test7/bb2.ml b/ocamlbuild/test/test7/bb2.ml
deleted file mode 100644 (file)
index 2f91b98..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-let bb = 43
-let f x = x + 1
-let () = incr (ref 0)
diff --git a/ocamlbuild/test/test7/bb3.ml b/ocamlbuild/test/test7/bb3.ml
deleted file mode 100644 (file)
index b7ad4b5..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-let bb = 43
-let f x = x + 1
-let () = incr (ref 1)
diff --git a/ocamlbuild/test/test7/bbcc.mllib b/ocamlbuild/test/test7/bbcc.mllib
deleted file mode 100644 (file)
index a97a0e6..0000000
+++ /dev/null
@@ -1 +0,0 @@
-Bb Cc
diff --git a/ocamlbuild/test/test7/c2.ml b/ocamlbuild/test/test7/c2.ml
deleted file mode 100644 (file)
index 36ff6d6..0000000
+++ /dev/null
@@ -1 +0,0 @@
-let c2 = 12
diff --git a/ocamlbuild/test/test7/c2.mli b/ocamlbuild/test/test7/c2.mli
deleted file mode 100644 (file)
index 19fe565..0000000
+++ /dev/null
@@ -1 +0,0 @@
-val c2 : int
diff --git a/ocamlbuild/test/test7/c3.ml b/ocamlbuild/test/test7/c3.ml
deleted file mode 100644 (file)
index 277e1ee..0000000
+++ /dev/null
@@ -1 +0,0 @@
-let c3 = Bb.bb + 13
diff --git a/ocamlbuild/test/test7/cc.ml b/ocamlbuild/test/test7/cc.ml
deleted file mode 100644 (file)
index b39ef21..0000000
+++ /dev/null
@@ -1 +0,0 @@
-let cc = (String.length Aa.aa) + Bb.bb + C2.c2
diff --git a/ocamlbuild/test/test7/cool_plugin.ml b/ocamlbuild/test/test7/cool_plugin.ml
deleted file mode 100644 (file)
index 3225186..0000000
+++ /dev/null
@@ -1 +0,0 @@
-print_endline "I am a cool plugin"
diff --git a/ocamlbuild/test/test7/main.ml b/ocamlbuild/test/test7/main.ml
deleted file mode 100644 (file)
index f121959..0000000
+++ /dev/null
@@ -1 +0,0 @@
-let main = String.length Aa.aa - Bb.bb - C3.c3 - Cc.cc - 1
diff --git a/ocamlbuild/test/test7/myocamlbuild.ml b/ocamlbuild/test/test7/myocamlbuild.ml
deleted file mode 100644 (file)
index ab6a4b1..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-open Ocamlbuild_plugin;;
-dispatch begin function
-| After_rules ->
-    use_lib "main" "bbcc";
-    dep ["ocaml"; "link"; "byte"; "my_cool_plugin"] ["cool_plugin.cmo"];
-| _ -> ()
-end
diff --git a/ocamlbuild/test/test7/test.sh b/ocamlbuild/test/test7/test.sh
deleted file mode 100755 (executable)
index 1bbda4c..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-#!/bin/sh
-cd `dirname $0`
-set -e
-set -x
-CMDOPTS="" # -- command args
-BUILD="../../_build/ocamlbuild.native bbcc.cma main.byte bbcc.cmxa main.native -no-skip -classic-display $@"
-BUILD1="$BUILD $CMDARGS"
-BUILD2="$BUILD -verbose 0 -nothing-should-be-rebuilt $CMDARGS"
-rm -rf _build
-cp bb1.ml bb.ml
-$BUILD1
-$BUILD2
-cp bb2.ml bb.ml
-$BUILD1 -verbose 0
-$BUILD2
-cp bb3.ml bb.ml
-$BUILD1 -verbose 0
-$BUILD2
diff --git a/ocamlbuild/test/test8/a.ml b/ocamlbuild/test/test8/a.ml
deleted file mode 100644 (file)
index 35ac749..0000000
+++ /dev/null
@@ -1 +0,0 @@
-print_endline Myconfig.version;;
diff --git a/ocamlbuild/test/test8/myocamlbuild.ml b/ocamlbuild/test/test8/myocamlbuild.ml
deleted file mode 100644 (file)
index f2818b6..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-open Ocamlbuild_plugin;;
-let version = "0.1";;
-dispatch begin function
-  | After_rules ->
-      rule "myconfig.ml"
-        ~prod:"myconfig.ml"
-        begin fun _ _ ->
-          Echo(["let version = \""; version; "\";;\n"], "myconfig.ml")
-        end;
-
-      copy_rule "copy byte-code executables" "%(path).byte" "%(path:not <**/*.*>)";
-      copy_rule "copy native executables" "%(path).native" "%(path:not <**/*.*>).opt";
-      copy_rule "copy binaries to bin" "%(basename).%(extension)"
-                                       "bin/%(basename).%(extension:<{byte,native}>)";
-  | _ -> ()
-end
diff --git a/ocamlbuild/test/test8/test.sh b/ocamlbuild/test/test8/test.sh
deleted file mode 100755 (executable)
index 28825ea..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-#!/bin/sh
-cd `dirname $0`
-set -e
-set -x
-CMDOPTS="" # -- command args
-BUILD="../../_build/ocamlbuild.native a.byte a.native a a.opt bin/a bin/a.opt -no-skip -classic-display $@"
-BUILD1="$BUILD $CMDOPTS"
-BUILD2="$BUILD -verbose 0 -nothing-should-be-rebuilt $CMDOPTS"
-rm -rf _build
-$BUILD1
-$BUILD2
diff --git a/ocamlbuild/test/test9/dbgl b/ocamlbuild/test/test9/dbgl
deleted file mode 100644 (file)
index ac61a3d..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-#load "unix.cma";;
-#load "str.cma";;
-#load "discard_printf.cmo";;
-#load "debug.cmo";;
-#load "bool.cmo";;
-#load "glob_ast.cmo";;
-#load "glob_lexer.cmo";;
-#load "my_unix.cmo";;
-#use "glob.ml";;
-#install_printer print_is;;
diff --git a/ocamlbuild/test/test9/test.sh b/ocamlbuild/test/test9/test.sh
deleted file mode 100755 (executable)
index 0feded2..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/bin/sh
-set -e
-set -x
-cd `dirname $0`/../..
-./_build/ocamlbuild.native -quiet -build-dir _buildtest -no-links test/test9/testglob.native $@
-./_buildtest/test/test9/testglob.native
diff --git a/ocamlbuild/test/test9/testglob.ml b/ocamlbuild/test/test9/testglob.ml
deleted file mode 100644 (file)
index 80f3466..0000000
+++ /dev/null
@@ -1,134 +0,0 @@
-(* Testglob *)
-
-open Bool;;
-open Glob;;
-
-let yep f x =
-  try
-    ignore (f x);
-    true
-  with
-  | _ -> false
-;;
-
-let tests1 = [
-  "\"hello\"",           true;
-  "<hello>",             true;
-  "<hel*lo>",            true;
-  "<a> and <b> or <c>",  true;
-  "<a> titi",            false
-];;
-
-let tests2 = [
-  "<[a]>",              ["a"], ["b"];
-  "<[a-z]>",            ["a";"e";"k";"z"], ["0";"A";"~"];
-  "<[a-z][0-9]>",       ["a0";"b9"], ["a00";"a0a";"b0a";"isduis";""];
-  "<hello>",            ["hello"], ["helli"];
-  "\"hello\"",          ["hello"], ["heidi"];
-  "<*>",                ["";"a";"ax"], [];
-  "<a*b>",              ["ab";"acb";"axxxxxb";"ababbababb"], ["abx";"xxxxxab";"xab"];
-  "<*.ml>",             ["hello.ml";".ml"], ["ml"; ""; "toto.mli"];
-  "<a>",                ["a"], ["";"aa";"ba";"ab";"abaa"];
-  "<ab>",               ["ab"], ["";"abab";"aba";"abx"];
-  "<ab?c>",             ["abac";"abxc"], ["abab";"ababab";"ababa"];
-  "<*ab?cd*>",          ["123abecd345";"abccd";"abccd345";"ababcababccdab"], ["abcd";"aaaaabcdababcd"];
-  "<*this*is*a*test*>", ["this is a test";"You know this is a test really";"thisisatest"], ["thisatest"];
-  "<b*>",               ["bxx";"bx"], ["aaab";""];
-  "<*>",                ["";"a";"aaa";"aaaaa"], [];
-  "<?>",                ["a"],["";"aaa";"aaaaa"];
-  "<{a,b}>",              ["a";"b"],["";"aa";"ab";"ba";"bb";"c"];
-  "<toto.{ml,mli}>",      ["toto.ml";"toto.mli"],["toto.";"toto.mll"];
-  "<{a,b}{c,[de]}{f,g}>", ["acf";"acg";"adf";"adg";"aef";"aeg";"bcf";"bcg";"bdf";"bdg";"bef";"beg"],
-                          ["afg";"af";"aee"];
-  "(<*.ml> or <*.mli>) and not \"hello.ml\"",
-     ["a.ml"; "b.ml"; "a.mli"],
-     ["hello.ml"; "a.mli.x"];
-  "<*>",   ["alpha";"beta"], ["alpha/beta";"gamma/delta"];
-  "<alpha/**/beta>",  ["alpha/beta";"alpha/gamma/beta";"alpha/gamma/delta/beta"],
-                      ["alpha";"beta";"gamma/delta"];
-  "<**/*.ml>",  ["toto.ml";"toto/tata.ml";"alpha/gamma/delta/beta.ml"],
-                ["toto.mli"];
-  "<toto/**>",  ["toto/";"toto/tata";"toto/alpha/gamma/delta/beta.ml";"toto"],
-                ["toto2/tata"; "tata/titi"]
-];;
-
-let tests3 = [
-  "%(path:<**/>)lib%(libname:<*> and not <*.*>).a",
-  ["libfoo.a","","foo";
-   "src/bar/libfoo.a","src/bar/","foo";
-   "otherlibs/unix/libunix.a","otherlibs/unix/","unix";
-   "otherlibsliblib/unlibix/libunix.a","otherlibsliblib/unlibix/","unix";
-   "libfoo/libbar.a","libfoo/","bar";
-   "src/libfoo/boo/libbar.a","src/libfoo/boo/","bar";
-  ],
-  ["bar"; "libbar/foo.a"; "libfoo.b.a"]
-];;
-
-let _ =
-  let times = 3 in
-  List.iter
-    begin fun (str, ast) ->
-      let ast' = yep Glob.parse str in
-      if ast <> ast' then
-        begin
-          Printf.printf "Globexp parsing failed for %S.\n%!" str;
-          exit 1
-        end
-      else
-        Printf.printf "Globexp for %S OK\n%!" str
-    end
-    tests1;
-  List.iter
-    begin fun (gstr, yes, no) ->
-      let globber = Glob.parse gstr in
-      let check polarity =
-        List.iter
-          begin fun y ->
-            if Glob.eval globber y = polarity then
-              Printf.printf "Glob.eval %S %S = %b OK\n%!" gstr y polarity
-            else
-              begin
-                Printf.printf "Glob.eval %S %S = %b FAIL\n%!" gstr y (not polarity);
-                exit 1
-              end
-          end
-      in
-      for k = 1 to times do
-        check true yes;
-        check false no
-      done
-    end
-    tests2;
-  List.iter begin fun (str, yes, no) ->
-    let resource = Resource.import_pattern str in
-    for k = 1 to times do
-      List.iter begin fun (y, path, libname) ->
-        let resource' = Resource.import y in
-        match Resource.matchit resource resource' with
-        | Some env ->
-            let path' = Resource.subst env "%(path)" in
-            let libname' = Resource.subst env "%(libname)" in
-            if path' = path && libname = libname' then
-              Printf.printf "Resource.matchit %S %S OK\n%!" str y
-            else begin
-              Printf.printf "Resource.matchit %S %S FAIL\n%!" str y;
-              exit 1
-            end
-        | None ->
-            begin
-              Printf.printf "Resource.matchit %S %S = None FAIL\n%!" str y;
-              exit 1
-            end
-      end yes;
-      List.iter begin fun y ->
-        let resource' = Resource.import y in
-        if Resource.matchit resource resource' = None then
-          Printf.printf "Resource.matchit %S %S = None OK\n%!" str y
-        else begin
-          Printf.printf "Resource.matchit %S %S <> None FAIL\n%!" str y;
-          exit 1
-        end
-      end no
-    done
-  end tests3
-;;
diff --git a/ocamlbuild/test/test_virtual/foo.itarget b/ocamlbuild/test/test_virtual/foo.itarget
deleted file mode 100644 (file)
index 257cc56..0000000
+++ /dev/null
@@ -1 +0,0 @@
-foo
diff --git a/ocamlbuild/test/test_virtual/foo1 b/ocamlbuild/test/test_virtual/foo1
deleted file mode 100644 (file)
index 1715acd..0000000
+++ /dev/null
@@ -1 +0,0 @@
-foo1
diff --git a/ocamlbuild/test/test_virtual/foo2 b/ocamlbuild/test/test_virtual/foo2
deleted file mode 100644 (file)
index 54b060e..0000000
+++ /dev/null
@@ -1 +0,0 @@
-foo2
diff --git a/ocamlbuild/test/test_virtual/myocamlbuild.ml b/ocamlbuild/test/test_virtual/myocamlbuild.ml
deleted file mode 100644 (file)
index 0c43d4c..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-open Ocamlbuild_plugin;;
-dispatch begin function
-  | After_rules ->
-      rule "copy foo"
-        ~prod:"bar"
-        ~dep:"foo.otarget"
-        begin fun _env _build ->
-          cp "foo" "bar"
-        end
-  | _ -> ()
-end
diff --git a/ocamlbuild/test/test_virtual/test.sh b/ocamlbuild/test/test_virtual/test.sh
deleted file mode 100644 (file)
index dbb2be7..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-#!/bin/sh
-cd `dirname $0`
-set -e
-set -x
-CMDOPTS="" # -- command args
-BUILD="../../_build/ocamlbuild.native bar -no-skip -classic-display $@"
-BUILD1="$BUILD $CMDOPTS"
-BUILD2="$BUILD -verbose 0 -nothing-should-be-rebuilt $CMDOPTS"
-rm -rf _build
-cp foo1 foo
-$BUILD1
-$BUILD2
-cp foo2 foo
-$BUILD1 -verbose 0
-$BUILD2
-rm foo
index 09162d0f970f61475d62f646e57a266103d6a16b..f8e0d35704b1c4f1b84333ce32995bb4b6a3644d 100644 (file)
@@ -16,8 +16,8 @@ odoc_analyse.cmo : ../utils/warnings.cmi ../typing/typetexp.cmi \
     odoc_cross.cmi odoc_comments.cmi odoc_class.cmo odoc_ast.cmi \
     ../utils/misc.cmi ../parsing/location.cmi ../parsing/lexer.cmi \
     ../typing/includemod.cmi ../typing/env.cmi ../typing/ctype.cmi \
-    ../utils/config.cmi ../utils/clflags.cmi ../utils/ccomp.cmi \
-    odoc_analyse.cmi
+    ../utils/config.cmi ../typing/cmi_format.cmi ../utils/clflags.cmi \
+    ../utils/ccomp.cmi odoc_analyse.cmi
 odoc_analyse.cmx : ../utils/warnings.cmx ../typing/typetexp.cmx \
     ../typing/types.cmx ../typing/typemod.cmx ../typing/typedtree.cmx \
     ../typing/typedecl.cmx ../typing/typecore.cmx ../typing/typeclass.cmx \
@@ -28,8 +28,8 @@ odoc_analyse.cmx : ../utils/warnings.cmx ../typing/typetexp.cmx \
     odoc_cross.cmx odoc_comments.cmx odoc_class.cmx odoc_ast.cmx \
     ../utils/misc.cmx ../parsing/location.cmx ../parsing/lexer.cmx \
     ../typing/includemod.cmx ../typing/env.cmx ../typing/ctype.cmx \
-    ../utils/config.cmx ../utils/clflags.cmx ../utils/ccomp.cmx \
-    odoc_analyse.cmi
+    ../utils/config.cmx ../typing/cmi_format.cmx ../utils/clflags.cmx \
+    ../utils/ccomp.cmx odoc_analyse.cmi
 odoc_args.cmo : odoc_types.cmi odoc_texi.cmo odoc_messages.cmo odoc_man.cmo \
     odoc_latex.cmo odoc_html.cmo odoc_global.cmi odoc_gen.cmi odoc_dot.cmo \
     odoc_config.cmi ../utils/misc.cmi ../utils/config.cmi odoc_args.cmi
@@ -109,13 +109,13 @@ odoc_info.cmo : ../typing/printtyp.cmi odoc_value.cmo odoc_types.cmi \
     odoc_print.cmi odoc_parameter.cmo odoc_name.cmi odoc_module.cmo \
     odoc_misc.cmi odoc_global.cmi odoc_exception.cmo odoc_dep.cmo \
     odoc_config.cmi odoc_comments.cmi odoc_class.cmo odoc_analyse.cmi \
-    odoc_info.cmi
+    ../parsing/location.cmi odoc_info.cmi
 odoc_info.cmx : ../typing/printtyp.cmx odoc_value.cmx odoc_types.cmx \
     odoc_type.cmx odoc_text.cmx odoc_str.cmx odoc_search.cmx odoc_scan.cmx \
     odoc_print.cmx odoc_parameter.cmx odoc_name.cmx odoc_module.cmx \
     odoc_misc.cmx odoc_global.cmx odoc_exception.cmx odoc_dep.cmx \
     odoc_config.cmx odoc_comments.cmx odoc_class.cmx odoc_analyse.cmx \
-    odoc_info.cmi
+    ../parsing/location.cmx odoc_info.cmi
 odoc_inherit.cmo :
 odoc_inherit.cmx :
 odoc_latex.cmo : odoc_to_text.cmo odoc_messages.cmo odoc_latex_style.cmo \
@@ -179,15 +179,15 @@ odoc_sig.cmo : ../typing/types.cmi ../typing/typedtree.cmi \
     odoc_type.cmo odoc_parameter.cmo odoc_name.cmi odoc_module.cmo \
     odoc_misc.cmi odoc_messages.cmo odoc_merge.cmi odoc_global.cmi \
     odoc_exception.cmo odoc_env.cmi odoc_class.cmo ../utils/misc.cmi \
-    ../parsing/location.cmi ../typing/btype.cmi ../parsing/asttypes.cmi \
-    odoc_sig.cmi
+    ../parsing/location.cmi ../typing/ident.cmi ../typing/btype.cmi \
+    ../parsing/asttypes.cmi odoc_sig.cmi
 odoc_sig.cmx : ../typing/types.cmx ../typing/typedtree.cmx \
     ../typing/path.cmx ../parsing/parsetree.cmi odoc_value.cmx odoc_types.cmx \
     odoc_type.cmx odoc_parameter.cmx odoc_name.cmx odoc_module.cmx \
     odoc_misc.cmx odoc_messages.cmx odoc_merge.cmx odoc_global.cmx \
     odoc_exception.cmx odoc_env.cmx odoc_class.cmx ../utils/misc.cmx \
-    ../parsing/location.cmx ../typing/btype.cmx ../parsing/asttypes.cmi \
-    odoc_sig.cmi
+    ../parsing/location.cmx ../typing/ident.cmx ../typing/btype.cmx \
+    ../parsing/asttypes.cmi odoc_sig.cmi
 odoc_str.cmo : ../typing/types.cmi ../typing/printtyp.cmi odoc_value.cmo \
     odoc_type.cmo odoc_print.cmi odoc_name.cmi odoc_misc.cmi \
     odoc_messages.cmo odoc_exception.cmo odoc_class.cmo \
@@ -216,8 +216,8 @@ odoc_type.cmo : ../typing/types.cmi odoc_types.cmi odoc_name.cmi \
     ../parsing/asttypes.cmi
 odoc_type.cmx : ../typing/types.cmx odoc_types.cmx odoc_name.cmx \
     ../parsing/asttypes.cmi
-odoc_types.cmo : odoc_messages.cmo odoc_types.cmi
-odoc_types.cmx : odoc_messages.cmx odoc_types.cmi
+odoc_types.cmo : odoc_messages.cmo ../parsing/location.cmi odoc_types.cmi
+odoc_types.cmx : odoc_messages.cmx ../parsing/location.cmx odoc_types.cmi
 odoc_value.cmo : ../typing/types.cmi ../typing/printtyp.cmi odoc_types.cmi \
     odoc_parameter.cmo odoc_name.cmi
 odoc_value.cmx : ../typing/types.cmx ../typing/printtyp.cmx odoc_types.cmx \
@@ -238,7 +238,7 @@ odoc_gen.cmi : odoc_texi.cmo odoc_module.cmo odoc_man.cmo odoc_latex.cmo \
 odoc_global.cmi : odoc_types.cmi
 odoc_info.cmi : ../typing/types.cmi odoc_value.cmo odoc_types.cmi \
     odoc_type.cmo odoc_search.cmi odoc_parameter.cmo odoc_module.cmo \
-    odoc_global.cmi odoc_exception.cmo odoc_class.cmo
+    odoc_global.cmi odoc_exception.cmo odoc_class.cmo ../parsing/location.cmi
 odoc_merge.cmi : odoc_types.cmi odoc_module.cmo
 odoc_misc.cmi : ../typing/types.cmi odoc_types.cmi ../parsing/longident.cmi
 odoc_name.cmi : ../typing/path.cmi ../parsing/longident.cmi \
@@ -253,4 +253,4 @@ odoc_str.cmi : ../typing/types.cmi odoc_value.cmo odoc_type.cmo \
     odoc_exception.cmo odoc_class.cmo
 odoc_text.cmi : odoc_types.cmi
 odoc_text_parser.cmi : odoc_types.cmi
-odoc_types.cmi :
+odoc_types.cmi : ../parsing/location.cmi
index d04809aa31147e2a6573c65323db94721c0b2999..b9dd69008da423fb44d1b1cc47063d24b7fb03f8 100644 (file)
@@ -9,7 +9,7 @@
 #(*                                                                     *)
 #(***********************************************************************)
 
-# $Id$
+# $Id: Makefile 12511 2012-05-30 13:29:48Z lefessan $
 
 include ../config/Makefile
 
@@ -158,6 +158,7 @@ OCAMLCMOFILES=$(OCAMLSRCDIR)/parsing/printast.cmo \
        $(OCAMLSRCDIR)/typing/predef.cmo \
        $(OCAMLSRCDIR)/typing/datarepr.cmo \
        $(OCAMLSRCDIR)/typing/subst.cmo \
+       $(OCAMLSRCDIR)/typing/cmi_format.cmo \
        $(OCAMLSRCDIR)/typing/env.cmo \
        $(OCAMLSRCDIR)/typing/ctype.cmo \
        $(OCAMLSRCDIR)/typing/primitive.cmo \
@@ -168,6 +169,7 @@ OCAMLCMOFILES=$(OCAMLSRCDIR)/parsing/printast.cmo \
        $(OCAMLSRCDIR)/typing/typedtree.cmo \
        $(OCAMLSRCDIR)/typing/parmatch.cmo \
        $(OCAMLSRCDIR)/typing/stypes.cmo \
+       $(OCAMLSRCDIR)/typing/cmt_format.cmo \
        $(OCAMLSRCDIR)/typing/typecore.cmo \
        $(OCAMLSRCDIR)/typing/includeclass.cmo \
        $(OCAMLSRCDIR)/typing/typedecl.cmo \
@@ -210,7 +212,7 @@ debug:
 $(OCAMLDOC): $(EXECMOFILES)
        $(OCAMLC) -o $@ -linkall unix.cma str.cma dynlink.cma $(LINKFLAGS) $(OCAMLCMOFILES) $(EXECMOFILES)
 $(OCAMLDOC_OPT): $(EXECMXFILES)
-       $(OCAMLOPT) -o $@ unix.cmxa str.cmxa dynlink.cmxa $(LINKFLAGS) $(OCAMLCMXFILES) $(EXECMXFILES)
+       $(OCAMLOPT) -o $@ -linkall unix.cmxa str.cmxa dynlink.cmxa $(LINKFLAGS) $(OCAMLCMXFILES) $(EXECMXFILES)
 
 $(OCAMLDOC_LIBCMA): $(LIBCMOFILES)
        $(OCAMLC) -a -o $@ $(LINKFLAGS) $(OCAMLCMOFILES) $(LIBCMOFILES)
@@ -305,6 +307,13 @@ test_stdlib: dummy
        ../otherlibs/unix/unix.mli \
        ../otherlibs/str/str.mli
 
+test_stdlib_code: dummy
+       $(MKDIR) $@
+       $(OCAMLDOC_RUN) -html -colorize-code -sort -d $@ $(INCLUDES) -dump $@/stdlib.odoc -keep-code \
+       `ls ../stdlib/*.ml | grep -v Labels` \
+       ../otherlibs/unix/unix.ml \
+       ../otherlibs/str/str.ml
+
 test_framed: dummy
        $(MKDIR) $@
        $(OCAMLDOC_RUN) -g odoc_fhtml.cmo -sort -colorize-code -d $@ $(INCLUDES) odoc*.ml odoc*.mli
index a65b59738c1e92696ac6262867d932319c347d43..8133f3aeb4b269624b8498938d429a4511fc2fa0 100644 (file)
@@ -9,7 +9,7 @@
 #(*                                                                     *)
 #(***********************************************************************)
 
-# $Id$
+# $Id: Makefile.nt 12553 2012-06-04 12:39:11Z protzenk $
 
 include ../config/Makefile
 
@@ -148,6 +148,7 @@ OCAMLCMOFILES=$(OCAMLSRCDIR)/parsing/printast.cmo \
        $(OCAMLSRCDIR)/typing/predef.cmo \
        $(OCAMLSRCDIR)/typing/datarepr.cmo \
        $(OCAMLSRCDIR)/typing/subst.cmo \
+       $(OCAMLSRCDIR)/typing/cmi_format.cmo \
        $(OCAMLSRCDIR)/typing/env.cmo \
        $(OCAMLSRCDIR)/typing/ctype.cmo \
        $(OCAMLSRCDIR)/typing/primitive.cmo \
@@ -155,9 +156,10 @@ OCAMLCMOFILES=$(OCAMLSRCDIR)/parsing/printast.cmo \
        $(OCAMLSRCDIR)/typing/printtyp.cmo \
        $(OCAMLSRCDIR)/typing/includecore.cmo \
        $(OCAMLSRCDIR)/typing/typetexp.cmo \
-       $(OCAMLSRCDIR)/typing/parmatch.cmo \
        $(OCAMLSRCDIR)/typing/typedtree.cmo \
+       $(OCAMLSRCDIR)/typing/parmatch.cmo \
        $(OCAMLSRCDIR)/typing/stypes.cmo \
+       $(OCAMLSRCDIR)/typing/cmt_format.cmo \
        $(OCAMLSRCDIR)/typing/typecore.cmo \
        $(OCAMLSRCDIR)/typing/includeclass.cmo \
        $(OCAMLSRCDIR)/typing/typedecl.cmo \
index 54b84db93c71bc9d1ad8f2003043a547655e560c..6907749af399da2af8d178104cf217080a0cf8af 100644 (file)
@@ -9,7 +9,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: odoc.ml 10653 2010-08-24 11:48:46Z guesdon $ *)
 
 (** Main module for bytecode.
 @todo coucou le todo*)
index bbcfaf93d3aed1981160f569f63e6fe26acaf3a7..6e86af0b647cfe40d078c68ae0fd64be4e0f51ff 100644 (file)
@@ -9,7 +9,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: odoc_analyse.ml 12511 2012-05-30 13:29:48Z lefessan $ *)
 
 (** Analysis of source files. This module is strongly inspired from
     driver/main.ml :-) *)
@@ -46,7 +46,7 @@ let preprocess sourcefile =
   match !Clflags.preprocessor with
     None -> sourcefile
   | Some pp ->
-      let tmpfile = Filename.temp_file "camlpp" "" in
+      let tmpfile = Filename.temp_file "ocamldocpp" "" in
       let comm = Printf.sprintf "%s %s > %s" pp sourcefile tmpfile in
       if Ccomp.command comm <> 0 then begin
         remove_file tmpfile;
@@ -113,7 +113,10 @@ let process_implementation_file ppf sourcefile =
   let env = initial_env () in
   try
     let parsetree = parse_file inputfile Parse.implementation ast_impl_magic_number in
-    let typedtree = Typemod.type_implementation sourcefile prefixname modulename env parsetree in
+    let typedtree =
+      Typemod.type_implementation
+       sourcefile prefixname modulename env parsetree
+    in
     (Some (parsetree, typedtree), inputfile)
   with
     e ->
@@ -164,6 +167,9 @@ let process_error exn =
   | Env.Error err ->
       Location.print_error_cur_file ppf;
       Env.report_error ppf err
+  | Cmi_format.Error err ->
+      Location.print_error_cur_file ppf;
+      Cmi_format.report_error ppf err
   | Ctype.Tags(l, l') ->
       Location.print_error_cur_file ppf;
       fprintf ppf
@@ -251,7 +257,7 @@ let process_file ppf sourcefile =
        try
          let (ast, signat, input_file) = process_interface_file ppf file in
          let file_module = Sig_analyser.analyse_signature file
-             !Location.input_name ast signat
+             !Location.input_name ast signat.sig_type
          in
 
          file_module.Odoc_module.m_top_deps <- Odoc_dep.intf_dependencies ast ;
@@ -288,7 +294,7 @@ let process_file ppf sourcefile =
         let m =
           {
             Odoc_module.m_name = mod_name ;
-            Odoc_module.m_type = Types.Tmty_signature [] ;
+            Odoc_module.m_type = Types.Mty_signature [] ;
             Odoc_module.m_info = None ;
             Odoc_module.m_is_interface = true ;
             Odoc_module.m_file = file ;
@@ -296,7 +302,7 @@ let process_file ppf sourcefile =
               [Odoc_module.Element_module_comment txt] ;
             Odoc_module.m_loc =
               { Odoc_types.loc_impl = None ;
-                Odoc_types.loc_inter = Some (file, 0) } ;
+                Odoc_types.loc_inter = Some (Location.in_file file) } ;
             Odoc_module.m_top_deps = [] ;
             Odoc_module.m_code = None ;
             Odoc_module.m_code_intf = None ;
index b927ad4a069bd7e8d9d406cd4756e4ab7f7b6357..70c9009f3f459d3069a670e01133c019054f5f43 100644 (file)
@@ -9,7 +9,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: odoc_analyse.mli 10652 2010-08-24 09:45:45Z guesdon $ *)
 
 (** Analysis of source files. *)
 
index bee38930adfa215e2a84f0dc0eb9df52f110fd6a..ebc3d115ae1cf7671d8cceaf30eec58255f9930c 100644 (file)
@@ -9,7 +9,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* cvsid $Id$ *)
+(* cvsid $Id: odoc_args.ml 12221 2012-03-12 17:57:46Z guesdon $ *)
 
 (** Command-line arguments. *)
 
index 1d55de747775022c3ff03641a5ac09acbacb9134..a9d11d776ae78d69db8b6a93ac39aab885a37c50 100644 (file)
@@ -9,7 +9,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: odoc_args.mli 12221 2012-03-12 17:57:46Z guesdon $ *)
 
 (** Analysis of the command line arguments. *)
 
index 79db5e9535af53efc16ca05b50b848500b9c2c3c..c67903e13f1e5cf555d5038643027d7575e8d3f2 100644 (file)
@@ -9,7 +9,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: odoc_ast.ml 12511 2012-05-30 13:29:48Z lefessan $ *)
 
 (** Analysis of implementation files. *)
 open Misc
@@ -54,50 +54,50 @@ module Typedtree_search =
       | P of string
       | IM of string
 
-    type tab = (ele, Typedtree.structure_item) Hashtbl.t
+    type tab = (ele, Typedtree.structure_item_desc) Hashtbl.t
     type tab_values = (Odoc_module.Name.t, Typedtree.pattern * Typedtree.expression) Hashtbl.t
 
     let iter_val_pattern = function
       | Typedtree.Tpat_any -> None
-      | Typedtree.Tpat_var name -> Some (Name.from_ident name)
+      | Typedtree.Tpat_var (name, _) -> Some (Name.from_ident name)
       | Typedtree.Tpat_tuple _ -> None (* A VOIR quand on traitera les tuples *)
       | _ -> None
 
     let add_to_hashes table table_values tt =
       match tt with
-      | Typedtree.Tstr_module (ident, _) ->
+      | Typedtree.Tstr_module (ident, _, _) ->
           Hashtbl.add table (M (Name.from_ident ident)) tt
       | Typedtree.Tstr_recmodule mods ->
           List.iter
-            (fun (ident,mod_expr) ->
+            (fun (ident,ident_loc, _, mod_expr) ->
               Hashtbl.add table (M (Name.from_ident ident))
-                (Typedtree.Tstr_module (ident,mod_expr))
+                (Typedtree.Tstr_module (ident,ident_loc, mod_expr))
             )
             mods
-      | Typedtree.Tstr_modtype (ident, _) ->
+      | Typedtree.Tstr_modtype (ident, _, _) ->
           Hashtbl.add table (MT (Name.from_ident ident)) tt
-      | Typedtree.Tstr_exception (ident, _) ->
+      | Typedtree.Tstr_exception (ident, _, _) ->
           Hashtbl.add table (E (Name.from_ident ident)) tt
-      | Typedtree.Tstr_exn_rebind (ident, _) ->
+      | Typedtree.Tstr_exn_rebind (ident, _, _, _) ->
           Hashtbl.add table (ER (Name.from_ident ident)) tt
       | Typedtree.Tstr_type ident_type_decl_list ->
           List.iter
-            (fun (id, e) ->
+            (fun (id, id_loc, e) ->
               Hashtbl.add table (T (Name.from_ident id))
-                (Typedtree.Tstr_type [(id,e)]))
+                (Typedtree.Tstr_type [(id,id_loc,e)]))
             ident_type_decl_list
       | Typedtree.Tstr_class info_list ->
           List.iter
-            (fun ((id,_,_,_,_) as ci) ->
-              Hashtbl.add table (C (Name.from_ident id))
-                (Typedtree.Tstr_class [ci]))
+            (fun (ci, m, s) ->
+              Hashtbl.add table (C (Name.from_ident ci.ci_id_class))
+                (Typedtree.Tstr_class [ci, m, s]))
             info_list
-      | Typedtree.Tstr_cltype info_list ->
+      | Typedtree.Tstr_class_type info_list ->
           List.iter
-            (fun ((id,_) as ci) ->
+            (fun ((id,id_loc,_) as ci) ->
               Hashtbl.add table
                 (CT (Name.from_ident id))
-                (Typedtree.Tstr_cltype [ci]))
+                (Typedtree.Tstr_class_type [ci]))
             info_list
       | Typedtree.Tstr_value (_, pat_exp_list) ->
           List.iter
@@ -107,7 +107,7 @@ module Typedtree_search =
               | Some n -> Hashtbl.add table_values n (pat,exp)
             )
             pat_exp_list
-      | Typedtree.Tstr_primitive (ident, _) ->
+      | Typedtree.Tstr_primitive (ident, _, _) ->
           Hashtbl.add table (P (Name.from_ident ident)) tt
       | Typedtree.Tstr_open _ -> ()
       | Typedtree.Tstr_include _ -> ()
@@ -116,41 +116,42 @@ module Typedtree_search =
     let tables typedtree =
       let t = Hashtbl.create 13 in
       let t_values = Hashtbl.create 13 in
-      List.iter (add_to_hashes t t_values) typedtree;
+      List.iter (fun str -> add_to_hashes t t_values str.str_desc) typedtree;
       (t, t_values)
 
     let search_module table name =
       match Hashtbl.find table (M name) with
-        (Typedtree.Tstr_module (_, module_expr)) -> module_expr
+        (Typedtree.Tstr_module (_, _, module_expr)) -> module_expr
       | _ -> assert false
 
     let search_module_type table name =
       match Hashtbl.find table (MT name) with
-      | (Typedtree.Tstr_modtype (_, module_type)) -> module_type
+      | (Typedtree.Tstr_modtype (_, _, module_type)) -> module_type
       | _ -> assert false
 
     let search_exception table name =
       match Hashtbl.find table (E name) with
-      | (Typedtree.Tstr_exception (_, excep_decl)) -> excep_decl
+      | (Typedtree.Tstr_exception (_, _, excep_decl)) -> excep_decl
       | _ -> assert false
 
     let search_exception_rebind table name =
       match Hashtbl.find table (ER name) with
-      | (Typedtree.Tstr_exn_rebind (_, p)) -> p
+      | (Typedtree.Tstr_exn_rebind (_, _, p, _)) -> p
       | _ -> assert false
 
     let search_type_declaration table name =
       match Hashtbl.find table (T name) with
-      | (Typedtree.Tstr_type [(_,decl)]) -> decl
+      | (Typedtree.Tstr_type [(_,_, decl)]) -> decl
       | _ -> assert false
 
     let search_class_exp table name =
       match Hashtbl.find table (C name) with
-      | (Typedtree.Tstr_class [(_,_,_,ce,_)]) ->
+      | (Typedtree.Tstr_class [(ci, _, _ )]) ->
+          let ce = ci.ci_expr in
           (
            try
              let type_decl = search_type_declaration table name in
-             (ce, type_decl.Types.type_params)
+             (ce, type_decl.typ_type.Types.type_params)
            with
              Not_found ->
                (ce, [])
@@ -159,50 +160,50 @@ module Typedtree_search =
 
     let search_class_type_declaration table name =
       match Hashtbl.find table (CT name) with
-      | (Typedtree.Tstr_cltype [(_,cltype_decl)]) -> cltype_decl
+      | (Typedtree.Tstr_class_type [(_,_,cltype_decl)]) -> cltype_decl
       | _ -> assert false
 
     let search_value table name = Hashtbl.find table name
 
     let search_primitive table name =
       match Hashtbl.find table (P name) with
-        Tstr_primitive (ident, val_desc) -> val_desc.Types.val_type
+        Tstr_primitive (ident, _, val_desc) -> val_desc.val_val.Types.val_type
       | _ -> assert false
 
     let get_nth_inherit_class_expr cls n =
       let rec iter cpt = function
         | [] ->
             raise Not_found
-        | Typedtree.Cf_inher (clexp, _, _) :: q ->
+        | { cf_desc = Typedtree.Tcf_inher (_, clexp, _, _, _) } :: q ->
             if n = cpt then clexp else iter (cpt+1) q
         | _ :: q ->
             iter cpt q
       in
-      iter 0 cls.Typedtree.cl_field
+      iter 0 cls.Typedtree.cstr_fields
 
     let search_attribute_type cls name =
       let rec iter = function
         | [] ->
             raise Not_found
-        | Typedtree.Cf_val (_, ident, Some exp, _) :: q
+        | { cf_desc = Typedtree.Tcf_val (_, _, _, ident, Tcfk_concrete exp, _) } :: q
           when Name.from_ident ident = name ->
             exp.Typedtree.exp_type
         | _ :: q ->
             iter q
       in
-      iter cls.Typedtree.cl_field
+      iter cls.Typedtree.cstr_fields
 
     let class_sig_of_cltype_decl =
       let rec iter = function
-        Types.Tcty_constr (_, _, cty) -> iter cty
-      | Types.Tcty_signature s -> s
-      | Types.Tcty_fun (_,_, cty) -> iter cty
+        Types.Cty_constr (_, _, cty) -> iter cty
+      | Types.Cty_signature s -> s
+      | Types.Cty_fun (_,_, cty) -> iter cty
       in
       fun ct_decl -> iter ct_decl.Types.clty_type
 
     let search_virtual_attribute_type table ctname name =
       let ct_decl = search_class_type_declaration table ctname in
-      let cls_sig = class_sig_of_cltype_decl ct_decl in
+      let cls_sig = class_sig_of_cltype_decl ct_decl.ci_type_decl in
       let (_,_,texp) = Types.Vars.find name cls_sig.cty_vars in
       texp
 
@@ -210,12 +211,12 @@ module Typedtree_search =
       let rec iter = function
         | [] ->
             raise Not_found
-        | Typedtree.Cf_meth (label, exp) :: q when label = name ->
+        | { cf_desc = Typedtree.Tcf_meth (label, _, _, Tcfk_concrete exp, _) } :: q when label = name ->
             exp
         | _ :: q ->
             iter q
       in
-      iter cls.Typedtree.cl_field
+      iter cls.Typedtree.cstr_fields
   end
 
 module Analyser =
@@ -253,14 +254,14 @@ module Analyser =
     let tt_param_info_from_pattern env f_desc pat =
       let rec iter_pattern pat =
         match pat.pat_desc with
-          Typedtree.Tpat_var ident ->
+          Typedtree.Tpat_var (ident, _) ->
             let name = Name.from_ident ident in
             Simple_name { sn_name = name ;
                           sn_text = f_desc name ;
                           sn_type = Odoc_env.subst_type env pat.pat_type
                         }
 
-        | Typedtree.Tpat_alias (pat, _) ->
+        | Typedtree.Tpat_alias (pat, _, _) ->
             iter_pattern pat
 
         | Typedtree.Tpat_tuple patlist ->
@@ -268,7 +269,7 @@ module Analyser =
               (List.map iter_pattern patlist,
                Odoc_env.subst_type env pat.pat_type)
 
-        | Typedtree.Tpat_construct (cons_desc, _) when
+        | Typedtree.Tpat_construct (_, _, cons_desc, _, _) when
             (* we give a name to the parameter only if it unit *)
             (match cons_desc.cstr_res.desc with
               Tconstr (p, _, _) ->
@@ -322,7 +323,7 @@ module Analyser =
                 (
                  (
                   match func_body.exp_desc with
-                    Typedtree.Texp_let (_, ({pat_desc = Typedtree.Tpat_var id } , exp) :: _, func_body2) ->
+                    Typedtree.Texp_let (_, ({pat_desc = Typedtree.Tpat_var (id, _) } , exp) :: _, func_body2) ->
                       let name = Name.from_ident id in
                       let new_param = Simple_name
                           { sn_name = name ;
@@ -341,7 +342,7 @@ module Analyser =
           in
          (* continue if the body is still a function *)
           match next_exp.exp_desc with
-            Texp_function (pat_exp_list, _) ->
+            Texp_function (_, pat_exp_list, _) ->
               p :: (tt_analyse_function_parameters env current_comment_opt pat_exp_list)
           | _ ->
               (* something else ; no more parameter *)
@@ -352,7 +353,7 @@ module Analyser =
      let tt_analyse_value env current_module_name comment_opt loc pat_exp rec_flag =
        let (pat, exp) = pat_exp in
        match (pat.pat_desc, exp.exp_desc) with
-         (Typedtree.Tpat_var ident, Typedtree.Texp_function (pat_exp_list2, partial)) ->
+         (Typedtree.Tpat_var (ident, _), Typedtree.Texp_function (_, pat_exp_list2, partial)) ->
            (* a new function is defined *)
            let name_pre = Name.from_ident ident in
            let name = Name.parens_if_infix name_pre in
@@ -372,12 +373,12 @@ module Analyser =
              val_recursive = rec_flag = Asttypes.Recursive ;
              val_parameters = tt_analyse_function_parameters env comment_opt pat_exp_list2 ;
              val_code = code ;
-             val_loc = { loc_impl = Some (!file_name, loc.Location.loc_start.Lexing.pos_cnum) ; loc_inter = None } ;
+             val_loc = { loc_impl = Some loc ; loc_inter = None } ;
            }
            in
            [ new_value ]
 
-       | (Typedtree.Tpat_var ident, _) ->
+       | (Typedtree.Tpat_var (ident, _), _) ->
            (* a new value is defined *)
            let name_pre = Name.from_ident ident in
            let name = Name.parens_if_infix name_pre in
@@ -396,7 +397,7 @@ module Analyser =
              val_recursive = rec_flag = Asttypes.Recursive ;
              val_parameters = [] ;
              val_code = code ;
-             val_loc = { loc_impl = Some (!file_name, loc.Location.loc_start.Lexing.pos_cnum) ; loc_inter = None } ;
+             val_loc = { loc_impl = Some loc ; loc_inter = None } ;
            }
            in
            [ new_value ]
@@ -425,9 +426,9 @@ module Analyser =
       );
 *)
       match clexp.Typedtree.cl_desc with
-        Typedtree.Tclass_ident p -> Name.from_path p
-      | Typedtree.Tclass_constraint (class_expr, _, _, _)
-      | Typedtree.Tclass_apply (class_expr, _) -> tt_name_of_class_expr class_expr
+        Typedtree.Tcl_ident (p, _, _) -> Name.from_path p
+      | Typedtree.Tcl_constraint (class_expr, _, _, _, _)
+      | Typedtree.Tcl_apply (class_expr, _) -> tt_name_of_class_expr class_expr
 (*
       | Typedtree.Tclass_fun (_, _, class_expr, _) -> tt_name_of_class_expr class_expr
       | Typedtree.Tclass_let (_,_,_, class_expr) -> tt_name_of_class_expr class_expr
@@ -441,7 +442,7 @@ module Analyser =
     *)
     let rec tt_analyse_method_expression env current_method_name comment_opt ?(first=true) exp =
       match exp.Typedtree.exp_desc with
-        Typedtree.Texp_function (pat_exp_list, _) ->
+        Typedtree.Texp_function (_, pat_exp_list, _) ->
           (
            match pat_exp_list with
              [] ->
@@ -481,7 +482,7 @@ module Analyser =
                             (
                              (
                               match body.exp_desc with
-                                Typedtree.Texp_let (_, ({pat_desc = Typedtree.Tpat_var id } , exp) :: _, body2) ->
+                                Typedtree.Texp_let (_, ({pat_desc = Typedtree.Tpat_var (id, _) } , exp) :: _, body2) ->
                                   let name = Name.from_ident id in
                                   let new_param = Simple_name
                                       { sn_name = name ;
@@ -527,8 +528,10 @@ module Analyser =
                 ele_coms
             in
             (acc_inher, acc_fields @ ele_comments)
-
-        | (Parsetree.Pcf_inher (_, p_clexp, _)) :: q  ->
+          | item :: q ->
+              let loc = item.Parsetree.pcf_loc in
+              match item.Parsetree.pcf_desc with
+        | (Parsetree.Pcf_inher (_, p_clexp, _))  ->
             let tt_clexp =
               let n = List.length acc_inher in
               try Typedtree_search.get_nth_inherit_class_expr tt_cls n
@@ -555,8 +558,8 @@ module Analyser =
               p_clexp.Parsetree.pcl_loc.Location.loc_end.Lexing.pos_cnum
               q
 
-      | ((Parsetree.Pcf_val (label, mutable_flag, _, _, loc) |
-          Parsetree.Pcf_valvirt (label, mutable_flag, _, loc) ) as x) :: q ->
+      | ((Parsetree.Pcf_val ({ txt = label }, mutable_flag, _, _) |
+          Parsetree.Pcf_valvirt ({ txt = label }, mutable_flag, _) ) as x) ->
           let virt = match x with Parsetree.Pcf_val _ -> false | _ -> true in
           let complete_name = Name.concat current_class_name label in
           let (info_opt, ele_comments) = get_comments_in_class last_pos loc.Location.loc_start.Lexing.pos_cnum in
@@ -585,7 +588,7 @@ module Analyser =
                 val_recursive = false ;
                 val_parameters = [] ;
                 val_code = code ;
-                val_loc = { loc_impl = Some (!file_name, loc.Location.loc_start.Lexing.pos_cnum) ; loc_inter = None } ;
+                val_loc = { loc_impl = Some loc ; loc_inter = None } ;
               } ;
               att_mutable = mutable_flag = Asttypes.Mutable ;
               att_virtual = virt ;
@@ -593,7 +596,7 @@ module Analyser =
           in
           iter acc_inher (acc_fields @ ele_comments @ [ Class_attribute att ]) loc.Location.loc_end.Lexing.pos_cnum q
 
-        | (Parsetree.Pcf_virt  (label, private_flag, _, loc)) :: q ->
+        | (Parsetree.Pcf_virt  ({ txt = label }, private_flag, _)) ->
           let complete_name = Name.concat current_class_name label in
           let (info_opt, ele_comments) = get_comments_in_class last_pos loc.Location.loc_start.Lexing.pos_cnum in
           let met_type =
@@ -624,7 +627,7 @@ module Analyser =
                 val_recursive = false ;
                 val_parameters = [] ;
                 val_code = code ;
-                val_loc = { loc_impl = Some (!file_name, loc.Location.loc_start.Lexing.pos_cnum) ; loc_inter = None } ;
+                val_loc = { loc_impl = Some loc ; loc_inter = None } ;
               } ;
               met_private = private_flag = Asttypes.Private ;
               met_virtual = true ;
@@ -635,7 +638,7 @@ module Analyser =
 
           iter acc_inher (acc_fields @ ele_comments @ [ Class_method met ]) loc.Location.loc_end.Lexing.pos_cnum q
 
-        | (Parsetree.Pcf_meth  (label, private_flag, _, _, loc)) :: q ->
+        | (Parsetree.Pcf_meth ({ txt = label }, private_flag, _, _)) ->
           let complete_name = Name.concat current_class_name label in
           let (info_opt, ele_comments) = get_comments_in_class last_pos loc.Location.loc_start.Lexing.pos_cnum in
           let exp =
@@ -665,7 +668,7 @@ module Analyser =
                 val_recursive = false ;
                 val_parameters = tt_analyse_method_expression env complete_name info_opt exp ;
                 val_code = code ;
-                val_loc = { loc_impl = Some (!file_name, loc.Location.loc_start.Lexing.pos_cnum) ; loc_inter = None } ;
+                val_loc = { loc_impl = Some loc ; loc_inter = None } ;
               } ;
               met_private = private_flag = Asttypes.Private ;
               met_virtual = false ;
@@ -676,14 +679,14 @@ module Analyser =
 
           iter acc_inher (acc_fields @ ele_comments @ [ Class_method met ]) loc.Location.loc_end.Lexing.pos_cnum q
 
-        | Parsetree.Pcf_cstr (_, _, loc) :: q ->
+        | Parsetree.Pcf_constr (_, _) ->
             (* don't give a $*%@ ! *)
             iter acc_inher acc_fields loc.Location.loc_end.Lexing.pos_cnum q
 
-        | (Parsetree.Pcf_init exp) :: q ->
+        | (Parsetree.Pcf_init exp) ->
             iter acc_inher acc_fields exp.Parsetree.pexp_loc.Location.loc_end.Lexing.pos_cnum q
       in
-      iter [] [] last_pos (snd p_cls)
+      iter [] [] last_pos (p_cls.Parsetree.pcstr_fields)
 
     (** Analysis of a [Parsetree.class_expr] and a [Typedtree.class_expr] to get a a couple (class parameters, class kind). *)
     let rec analyse_class_kind env current_class_name comment_opt last_pos p_class_expr tt_class_exp table =
@@ -691,17 +694,17 @@ module Analyser =
         (Parsetree.Pcl_constr (lid, _), tt_class_exp_desc ) ->
           let name =
             match tt_class_exp_desc with
-              Typedtree.Tclass_ident p -> Name.from_path p
+              Typedtree.Tcl_ident (p,_,_) -> Name.from_path p
             | _ ->
                 (* we try to get the name from the environment. *)
                 (* A VOIR : dommage qu'on n'ait pas un Tclass_ident :-( même quand on a class tutu = toto *)
-                Name.from_longident lid
+                Name.from_longident lid.txt
           in
           (* On n'a pas ici les paramètres de type sous forme de Types.type_expr,
              par contre on peut les trouver dans le class_type *)
           let params =
             match tt_class_exp.Typedtree.cl_type with
-              Types.Tcty_constr (p2, type_exp_list, cltyp) ->
+              Types.Cty_constr (p2, type_exp_list, cltyp) ->
                 (* cltyp is the class type for [type_exp_list] p *)
                 type_exp_list
             | _ ->
@@ -715,11 +718,11 @@ module Analyser =
                cco_type_parameters = List.map (Odoc_env.subst_type env) params ;
              } )
 
-      | (Parsetree.Pcl_structure p_class_structure, Typedtree.Tclass_structure tt_class_structure) ->
+      | (Parsetree.Pcl_structure p_class_structure, Typedtree.Tcl_structure tt_class_structure) ->
           (* we need the class signature to get the type of methods in analyse_class_structure *)
           let tt_class_sig =
             match tt_class_exp.Typedtree.cl_type with
-              Types.Tcty_signature class_sig -> class_sig
+              Types.Cty_signature class_sig -> class_sig
             | _ -> raise (Failure "analyse_class_kind: no class signature for a class structure.")
           in
           let (inherited_classes, class_elements) = analyse_class_structure
@@ -736,16 +739,16 @@ module Analyser =
            Class_structure (inherited_classes, class_elements) )
 
       | (Parsetree.Pcl_fun (label, expression_opt, pattern, p_class_expr2),
-         Typedtree.Tclass_fun (pat, ident_exp_list, tt_class_expr2, partial)) ->
+         Typedtree.Tcl_fun (_, pat, ident_exp_list, tt_class_expr2, partial)) ->
            (* we check that this is not an optional parameter with
               a default value. In this case, we look for the good parameter pattern *)
            let (parameter, next_tt_class_exp) =
              match pat.Typedtree.pat_desc with
-               Typedtree.Tpat_var ident when Name.from_ident ident = "*opt*" ->
+               Typedtree.Tpat_var (ident, _) when Name.from_ident ident = "*opt*" ->
                  (
-                  (* there must be a Tclass_let just after *)
+                  (* there must be a Tcl_let just after *)
                   match tt_class_expr2.Typedtree.cl_desc with
-                    Typedtree.Tclass_let (_, ({pat_desc = Typedtree.Tpat_var id } , exp) :: _, _, tt_class_expr3) ->
+                    Typedtree.Tcl_let (_, ({pat_desc = Typedtree.Tpat_var (id,_) } , exp) :: _, _, tt_class_expr3) ->
                       let name = Name.from_ident id in
                       let new_param = Simple_name
                           { sn_name = name ;
@@ -775,23 +778,23 @@ module Analyser =
             in
            (parameter :: params, k)
 
-      | (Parsetree.Pcl_apply (p_class_expr2, _), Tclass_apply (tt_class_expr2, exp_opt_optional_list)) ->
+      | (Parsetree.Pcl_apply (p_class_expr2, _), Tcl_apply (tt_class_expr2, exp_opt_optional_list)) ->
           let applied_name =
             (* we want an ident, or else the class applied will appear in the form object ... end,
                because if the class applied has no name, the code is kinda ugly, isn't it ? *)
             match tt_class_expr2.Typedtree.cl_desc with
-              Typedtree.Tclass_ident p -> Name.from_path p (* A VOIR : obtenir le nom complet *)
+              Typedtree.Tcl_ident (p,_,_) -> Name.from_path p (* A VOIR : obtenir le nom complet *)
             | _ ->
                 (* A VOIR : dommage qu'on n'ait pas un Tclass_ident :-( même quand on a class tutu = toto *)
                 match p_class_expr2.Parsetree.pcl_desc with
                   Parsetree.Pcl_constr (lid, _) ->
                     (* we try to get the name from the environment. *)
-                    Name.from_longident lid
+                    Name.from_longident lid.txt
                 |  _ ->
                     Odoc_messages.object_end
           in
           let param_exps = List.fold_left
-              (fun acc -> fun (exp_opt, _) ->
+              (fun acc -> fun (_, exp_opt, _) ->
                 match exp_opt with
                   None -> acc
                 | Some e -> acc @ [e])
@@ -814,14 +817,14 @@ module Analyser =
                capp_params_code = params_code ;
              } )
 
-      | (Parsetree.Pcl_let (_, _, p_class_expr2), Typedtree.Tclass_let (_, _, _, tt_class_expr2)) ->
+      | (Parsetree.Pcl_let (_, _, p_class_expr2), Typedtree.Tcl_let (_, _, _, tt_class_expr2)) ->
           (* we don't care about these lets *)
           analyse_class_kind
               env current_class_name comment_opt last_pos p_class_expr2
               tt_class_expr2 table
 
       | (Parsetree.Pcl_constraint (p_class_expr2, p_class_type2),
-         Typedtree.Tclass_constraint (tt_class_expr2, _, _, _)) ->
+         Typedtree.Tcl_constraint (tt_class_expr2, _, _, _, _)) ->
           let (l, class_kind) = analyse_class_kind
               env current_class_name comment_opt last_pos p_class_expr2
                 tt_class_expr2 table
@@ -846,8 +849,9 @@ module Analyser =
     (** Analysis of a [Parsetree.class_declaration] and a [Typedtree.class_expr] to return a [t_class].*)
     let analyse_class env current_module_name comment_opt p_class_decl tt_type_params tt_class_exp table =
       let name = p_class_decl.Parsetree.pci_name in
-      let complete_name = Name.concat current_module_name name in
-      let pos_start = p_class_decl.Parsetree.pci_expr.Parsetree.pcl_loc.Location.loc_start.Lexing.pos_cnum in
+      let complete_name = Name.concat current_module_name name.txt in
+      let loc = p_class_decl.Parsetree.pci_expr.Parsetree.pcl_loc in
+      let pos_start = loc.Location.loc_start.Lexing.pos_cnum in
       let type_parameters = tt_type_params in
       let virt = p_class_decl.Parsetree.pci_virt = Asttypes.Virtual in
       let cltype = Odoc_env.subst_class_type env tt_class_exp.Typedtree.cl_type in
@@ -869,7 +873,7 @@ module Analyser =
           cl_type_parameters = type_parameters ;
           cl_kind = kind ;
           cl_parameters = parameters ;
-          cl_loc = { loc_impl = Some (!file_name, pos_start) ; loc_inter = None } ;
+          cl_loc = { loc_impl = Some loc ; loc_inter = None } ;
         }
       in
       cl
@@ -878,8 +882,8 @@ module Analyser =
        is not an ident of a constraint on an ident. *)
     let rec tt_name_from_module_expr mod_expr =
       match mod_expr.Typedtree.mod_desc with
-        Typedtree.Tmod_ident p -> Name.from_path p
-      | Typedtree.Tmod_constraint (m_exp, _, _) -> tt_name_from_module_expr m_exp
+        Typedtree.Tmod_ident (p,_) -> Name.from_path p
+      | Typedtree.Tmod_constraint (m_exp, _, _, _) -> tt_name_from_module_expr m_exp
       | Typedtree.Tmod_structure _
       | Typedtree.Tmod_functor _
       | Typedtree.Tmod_apply _
@@ -889,7 +893,7 @@ module Analyser =
     (** Get the list of included modules in a module structure of a typed tree. *)
     let tt_get_included_module_list tt_structure =
       let f acc item =
-        match item with
+        match item.str_desc with
           Typedtree.Tstr_include (mod_expr, _) ->
             acc @ [
                   { (* A VOIR : chercher dans les modules et les module types, avec quel env ? *)
@@ -901,7 +905,7 @@ module Analyser =
         | _ ->
             acc
       in
-      List.fold_left f [] tt_structure
+      List.fold_left f [] tt_structure.str_items
 
     (** This function takes a [module element list] of a module and replaces the "dummy" included modules with
        the ones found in typed tree structure of the module. *)
@@ -924,7 +928,7 @@ module Analyser =
        and the module has a "structure" kind. *)
     let rec filter_module_with_module_type_constraint m mt =
       match m.m_kind, mt with
-        Module_struct l, Types.Tmty_signature lsig ->
+        Module_struct l, Types.Mty_signature lsig ->
           m.m_kind <- Module_struct (filter_module_elements_with_module_type_constraint l lsig);
           m.m_type <- mt;
       | _ -> ()
@@ -934,7 +938,7 @@ module Analyser =
        and the module type has a "structure" kind. *)
     and filter_module_type_with_module_type_constraint mtyp mt =
       match mtyp.mt_kind, mt with
-        Some Module_type_struct l, Types.Tmty_signature lsig ->
+        Some Module_type_struct l, Types.Mty_signature lsig ->
           mtyp.mt_kind <- Some (Module_type_struct (filter_module_elements_with_module_type_constraint l lsig));
           mtyp.mt_type <- Some mt;
       | _ -> ()
@@ -944,7 +948,7 @@ module Analyser =
         let f = match ele with
           Element_module m ->
             (function
-                Types.Tsig_module (ident,t,_) ->
+                Types.Sig_module (ident,t,_) ->
                   let n1 = Name.simple m.m_name
                   and n2 = Ident.name ident in
                   (
@@ -955,7 +959,7 @@ module Analyser =
               | _ -> false)
         | Element_module_type mt ->
             (function
-                Types.Tsig_modtype (ident,Types.Tmodtype_manifest t) ->
+                Types.Sig_modtype (ident,Types.Modtype_manifest t) ->
                   let n1 = Name.simple mt.mt_name
                   and n2 = Ident.name ident in
                   (
@@ -966,14 +970,14 @@ module Analyser =
               | _ -> false)
         | Element_value v ->
             (function
-                Types.Tsig_value (ident,_) ->
+                Types.Sig_value (ident,_) ->
                   let n1 = Name.simple v.val_name
                   and n2 = Ident.name ident in
                   n1 = n2
               | _ -> false)
         | Element_type t ->
              (function
-                Types.Tsig_type (ident,_,_) ->
+                Types.Sig_type (ident,_,_) ->
                   (* A VOIR: il est possible que le détail du type soit caché *)
                   let n1 = Name.simple t.ty_name
                   and n2 = Ident.name ident in
@@ -981,21 +985,21 @@ module Analyser =
                | _ -> false)
         | Element_exception e ->
             (function
-                Types.Tsig_exception (ident,_) ->
+                Types.Sig_exception (ident,_) ->
                   let n1 = Name.simple e.ex_name
                   and n2 = Ident.name ident in
                   n1 = n2
               | _ -> false)
         | Element_class c ->
             (function
-                Types.Tsig_class (ident,_,_) ->
+                Types.Sig_class (ident,_,_) ->
                   let n1 = Name.simple c.cl_name
                   and n2 = Ident.name ident in
                   n1 = n2
               | _ -> false)
         | Element_class_type ct ->
             (function
-                Types.Tsig_cltype (ident,_,_) ->
+                Types.Sig_class_type (ident,_,_) ->
                   let n1 = Name.simple ct.clt_name
                   and n2 = Ident.name ident in
                   n1 = n2
@@ -1010,7 +1014,7 @@ module Analyser =
     (** Analysis of a parse tree structure with a typed tree, to return module elements.*)
     let rec analyse_structure env current_module_name last_pos pos_limit parsetree typedtree =
       print_DEBUG "Odoc_ast:analyse_struture";
-      let (table, table_values) = Typedtree_search.tables typedtree in
+      let (table, table_values) = Typedtree_search.tables typedtree.str_items in
       let rec iter env last_pos = function
           [] ->
             let s = get_string_of_file last_pos pos_limit in
@@ -1083,7 +1087,7 @@ module Analyser =
                     iter new_last_pos acc_env acc q
                 | Some name ->
                     try
-                      let pat_exp = Typedtree_search.search_value table_values name in
+                      let pat_exp = Typedtree_search.search_value table_values name.txt in
                       let (info_opt, ele_comments) =
                         (* we already have the optional comment for the first value. *)
                         if first then
@@ -1121,7 +1125,7 @@ module Analyser =
           let (new_env, l_ele) = iter ~first: true loc.Location.loc_start.Lexing.pos_cnum env [] pat_exp_list in
           (0, new_env, l_ele)
 
-      | Parsetree.Pstr_primitive (name_pre, val_desc) ->
+      | Parsetree.Pstr_primitive ({ txt = name_pre }, val_desc) ->
             (* of string * value_description *)
             print_DEBUG ("Parsetree.Pstr_primitive ("^name_pre^", ["^(String.concat ", " val_desc.Parsetree.pval_prim)^"]");
             let typ = Typedtree_search.search_primitive table name_pre in
@@ -1141,7 +1145,7 @@ module Analyser =
                 val_recursive = false ;
                 val_parameters = [] ;
                 val_code = code ;
-                val_loc = { loc_impl = Some (!file_name, loc.Location.loc_start.Lexing.pos_cnum) ; loc_inter = None } ;
+                val_loc = { loc_impl = Some loc ; loc_inter = None } ;
               }
             in
             let new_env = Odoc_env.add_value env new_value.val_name in
@@ -1152,7 +1156,7 @@ module Analyser =
             (* we start by extending the environment *)
             let new_env =
               List.fold_left
-              (fun acc_env -> fun (name, _) ->
+              (fun acc_env -> fun ({ txt = name }, _) ->
                  let complete_name = Name.concat current_module_name name in
                  Odoc_env.add_type acc_env complete_name
               )
@@ -1162,10 +1166,11 @@ module Analyser =
             let rec f ?(first=false) maybe_more_acc last_pos name_type_decl_list =
               match name_type_decl_list with
                 [] -> (maybe_more_acc, [])
-              | (name, type_decl) :: q ->
+              | ({ txt = name }, type_decl) :: q ->
                   let complete_name = Name.concat current_module_name name in
-                  let loc_start = type_decl.Parsetree.ptype_loc.Location.loc_start.Lexing.pos_cnum in
-                  let loc_end =  type_decl.Parsetree.ptype_loc.Location.loc_end.Lexing.pos_cnum in
+                  let loc = type_decl.Parsetree.ptype_loc in
+                  let loc_start = loc.Location.loc_start.Lexing.pos_cnum in
+                  let loc_end =  loc.Location.loc_end.Lexing.pos_cnum in
                   let pos_limit2 =
                   match q with
                       [] -> pos_limit
@@ -1181,6 +1186,7 @@ module Analyser =
                     try Typedtree_search.search_type_declaration table name
                     with Not_found -> raise (Failure (Odoc_messages.type_not_found_in_typedtree complete_name))
                   in
+                  let tt_type_decl = tt_type_decl.Typedtree.typ_type in
                   let (com_opt, ele_comments) = (* the comment for the first type was already retrieved *)
                     if first then
                       (comment_opt , [])
@@ -1207,10 +1213,10 @@ module Analyser =
                       ty_kind = kind ;
                       ty_private = tt_type_decl.Types.type_private;
                       ty_manifest =
-                      (match tt_type_decl.Types.type_manifest with
-                         None -> None
-                       | Some t -> Some (Odoc_env.subst_type new_env t));
-                      ty_loc = { loc_impl = Some (!file_name, loc_start) ; loc_inter = None } ;
+                        (match tt_type_decl.Types.type_manifest with
+                           None -> None
+                         | Some t -> Some (Odoc_env.subst_type new_env t));
+                      ty_loc = { loc_impl = Some loc ; loc_inter = None } ;
                       ty_code =
                       (
                        if !Odoc_global.keep_code then
@@ -1234,10 +1240,10 @@ module Analyser =
 
       | Parsetree.Pstr_exception (name, excep_decl) ->
           (* a new exception is defined *)
-          let complete_name = Name.concat current_module_name name in
+          let complete_name = Name.concat current_module_name name.txt in
           (* we get the exception declaration in the typed tree *)
           let tt_excep_decl =
-            try Typedtree_search.search_exception table name
+            try Typedtree_search.search_exception table name.txt
             with Not_found ->
               raise (Failure (Odoc_messages.exception_not_found_in_typedtree complete_name))
           in
@@ -1248,9 +1254,11 @@ module Analyser =
             {
               ex_name = complete_name ;
               ex_info = comment_opt ;
-              ex_args = List.map (Odoc_env.subst_type new_env) tt_excep_decl.exn_args ;
+              ex_args = List.map (fun ctyp ->
+                Odoc_env.subst_type new_env ctyp.ctyp_type)
+                tt_excep_decl.exn_params ;
               ex_alias = None ;
-              ex_loc = { loc_impl = Some (!file_name, loc.Location.loc_start.Lexing.pos_cnum) ; loc_inter = None } ;
+              ex_loc = { loc_impl = Some loc ; loc_inter = None } ;
               ex_code =
                 (
                  if !Odoc_global.keep_code then
@@ -1262,12 +1270,12 @@ module Analyser =
           in
           (0, new_env, [ Element_exception new_ex ])
 
-      | Parsetree.Pstr_exn_rebind (name, _) ->
+      | Parsetree.Pstr_exn_rebind (name,  _) ->
           (* a new exception is defined *)
-          let complete_name = Name.concat current_module_name name in
+          let complete_name = Name.concat current_module_name name.txt in
           (* we get the exception rebind in the typed tree *)
           let tt_path =
-            try Typedtree_search.search_exception_rebind table name
+            try Typedtree_search.search_exception_rebind table name.txt
             with Not_found ->
               raise (Failure (Odoc_messages.exception_not_found_in_typedtree complete_name))
           in
@@ -1279,7 +1287,7 @@ module Analyser =
               ex_args = [] ;
               ex_alias = Some { ea_name = (Odoc_env.full_exception_name env (Name.from_path tt_path)) ;
                                 ea_ex = None ; } ;
-              ex_loc = { loc_impl = Some (!file_name, loc.Location.loc_start.Lexing.pos_cnum) ; loc_inter = None } ;
+              ex_loc = { loc_impl = Some loc ; loc_inter = None } ;
               ex_code = None ;
             }
           in
@@ -1289,11 +1297,11 @@ module Analyser =
           (
            (* of string * module_expr *)
            try
-             let tt_module_expr = Typedtree_search.search_module table name in
+             let tt_module_expr = Typedtree_search.search_module table name.txt in
              let new_module_pre = analyse_module
                  env
                  current_module_name
-                 name
+                 name.txt
                  comment_opt
                  module_expr
                  tt_module_expr
@@ -1314,7 +1322,7 @@ module Analyser =
              let new_env2 =
                match new_module.m_type with
                  (* A VOIR : cela peut-il Ãªtre Tmty_ident ? dans ce cas, on aurait pas la signature *)
-                 Types.Tmty_signature s ->
+                 Types.Mty_signature s ->
                    Odoc_env.add_signature new_env new_module.m_name
                      ~rel: (Name.simple new_module.m_name) s
                | _ ->
@@ -1323,7 +1331,7 @@ module Analyser =
              (0, new_env2, [ Element_module new_module ])
            with
              Not_found ->
-               let complete_name = Name.concat current_module_name name in
+               let complete_name = Name.concat current_module_name name.txt in
                raise (Failure (Odoc_messages.module_not_found_in_typedtree complete_name))
           )
 
@@ -1333,22 +1341,22 @@ module Analyser =
           let new_env =
             List.fold_left
               (fun acc_env (name, _, mod_exp) ->
-                let complete_name = Name.concat current_module_name name in
+                let complete_name = Name.concat current_module_name name.txt in
                 let e = Odoc_env.add_module acc_env complete_name in
                 let tt_mod_exp =
-                  try Typedtree_search.search_module table name
+                  try Typedtree_search.search_module table name.txt
                   with Not_found -> raise (Failure (Odoc_messages.module_not_found_in_typedtree complete_name))
                 in
                 let new_module = analyse_module
                     e
                     current_module_name
-                    name
+                    name.txt
                     None
                     mod_exp
                     tt_mod_exp
                 in
                 match new_module.m_type with
-                  Types.Tmty_signature s ->
+                  Types.Mty_signature s ->
                     Odoc_env.add_signature e new_module.m_name
                       ~rel: (Name.simple new_module.m_name) s
                   | _ ->
@@ -1361,11 +1369,11 @@ module Analyser =
             match name_mod_exp_list with
               [] -> []
             | (name, _, mod_exp) :: q ->
-                let complete_name = Name.concat current_module_name name in
+                let complete_name = Name.concat current_module_name name.txt in
                 let loc_start = mod_exp.Parsetree.pmod_loc.Location.loc_start.Lexing.pos_cnum in
                 let loc_end =  mod_exp.Parsetree.pmod_loc.Location.loc_end.Lexing.pos_cnum in
                 let tt_mod_exp =
-                  try Typedtree_search.search_module table name
+                  try Typedtree_search.search_module table name.txt
                   with Not_found -> raise (Failure (Odoc_messages.module_not_found_in_typedtree complete_name))
                 in
                 let (com_opt, ele_comments) = (* the comment for the first type was already retrieved *)
@@ -1377,7 +1385,7 @@ module Analyser =
                 let new_module = analyse_module
                     new_env
                     current_module_name
-                    name
+                    name.txt
                     com_opt
                     mod_exp
                     tt_mod_exp
@@ -1389,31 +1397,31 @@ module Analyser =
           (0, new_env, eles)
 
       | Parsetree.Pstr_modtype (name, modtype) ->
-          let complete_name = Name.concat current_module_name name in
+          let complete_name = Name.concat current_module_name name.txt in
           let tt_module_type =
-            try Typedtree_search.search_module_type table name
+            try Typedtree_search.search_module_type table name.txt
             with Not_found ->
               raise (Failure (Odoc_messages.module_type_not_found_in_typedtree complete_name))
           in
           let kind = Sig.analyse_module_type_kind env complete_name
-              modtype tt_module_type
+              modtype tt_module_type.mty_type
           in
           let mt =
             {
               mt_name = complete_name ;
               mt_info = comment_opt ;
-              mt_type = Some tt_module_type ;
+              mt_type = Some tt_module_type.mty_type ;
               mt_is_interface = false ;
               mt_file = !file_name ;
               mt_kind = Some kind ;
-              mt_loc = { loc_impl = Some (!file_name, loc.Location.loc_start.Lexing.pos_cnum) ; loc_inter = None } ;
+              mt_loc = { loc_impl = Some loc ; loc_inter = None } ;
             }
           in
           let new_env = Odoc_env.add_module_type env mt.mt_name in
           let new_env2 =
-            match tt_module_type with
+            match tt_module_type.mty_type with
               (* A VOIR : cela peut-il Ãªtre Tmty_ident ? dans ce cas, on n'aurait pas la signature *)
-              Types.Tmty_signature s ->
+              Types.Mty_signature s ->
                 Odoc_env.add_signature new_env mt.mt_name ~rel: (Name.simple mt.mt_name) s
             | _ ->
                 new_env
@@ -1436,7 +1444,7 @@ module Analyser =
           let new_env =
             List.fold_left
               (fun acc_env -> fun class_decl ->
-                let complete_name = Name.concat current_module_name class_decl.Parsetree.pci_name in
+                let complete_name = Name.concat current_module_name class_decl.Parsetree.pci_name.txt in
                 Odoc_env.add_class acc_env complete_name
               )
               env
@@ -1448,9 +1456,9 @@ module Analyser =
                 []
             | class_decl :: q ->
                 let (tt_class_exp, tt_type_params) =
-                  try Typedtree_search.search_class_exp table class_decl.Parsetree.pci_name
+                  try Typedtree_search.search_class_exp table class_decl.Parsetree.pci_name.txt
                   with Not_found ->
-                    let complete_name = Name.concat current_module_name class_decl.Parsetree.pci_name in
+                    let complete_name = Name.concat current_module_name class_decl.Parsetree.pci_name.txt in
                     raise (Failure (Odoc_messages.class_not_found_in_typedtree complete_name))
                 in
                 let (com_opt, ele_comments) =
@@ -1478,7 +1486,7 @@ module Analyser =
           let new_env =
             List.fold_left
               (fun acc_env -> fun class_type_decl ->
-                let complete_name = Name.concat current_module_name class_type_decl.Parsetree.pci_name in
+                let complete_name = Name.concat current_module_name class_type_decl.Parsetree.pci_name.txt in
                 Odoc_env.add_class_type acc_env complete_name
               )
               env
@@ -1490,13 +1498,14 @@ module Analyser =
                 []
             | class_type_decl :: q ->
                 let name = class_type_decl.Parsetree.pci_name in
-                let complete_name = Name.concat current_module_name name in
+                let complete_name = Name.concat current_module_name name.txt in
                 let virt = class_type_decl.Parsetree.pci_virt = Asttypes.Virtual in
                 let tt_cltype_declaration =
-                  try Typedtree_search.search_class_type_declaration table name
+                  try Typedtree_search.search_class_type_declaration table name.txt
                   with Not_found ->
                     raise (Failure (Odoc_messages.class_type_not_found_in_typedtree complete_name))
-                in
+                  in
+                  let tt_cltype_declaration = tt_cltype_declaration.ci_type_decl in
                 let type_params = tt_cltype_declaration.Types.clty_params in
                 let kind = Sig.analyse_class_type_kind
                     new_env
@@ -1521,7 +1530,7 @@ module Analyser =
                       clt_type_parameters = List.map (Odoc_env.subst_type new_env) type_params ;
                       clt_virtual = virt ;
                       clt_kind = kind ;
-                      clt_loc = { loc_impl = Some (!file_name, loc.Location.loc_start.Lexing.pos_cnum) ;
+                      clt_loc = { loc_impl = Some loc ;
                                   loc_inter = None } ;
                     }
                 in
@@ -1545,8 +1554,9 @@ module Analyser =
      (** Analysis of a [Parsetree.module_expr] and a name to return a [t_module].*)
      and analyse_module env current_module_name module_name comment_opt p_module_expr tt_module_expr =
       let complete_name = Name.concat current_module_name module_name in
-      let pos_start = p_module_expr.Parsetree.pmod_loc.Location.loc_start.Lexing.pos_cnum in
-      let pos_end = p_module_expr.Parsetree.pmod_loc.Location.loc_end.Lexing.pos_cnum in
+      let loc = p_module_expr.Parsetree.pmod_loc in
+      let pos_start = loc.Location.loc_start.Lexing.pos_cnum in
+      let pos_end = loc.Location.loc_end.Lexing.pos_cnum in
       let modtype =
         (* A VOIR : Odoc_env.subst_module_type env  ? *)
         tt_module_expr.Typedtree.mod_type
@@ -1568,7 +1578,7 @@ module Analyser =
           m_is_interface = false ;
           m_file = !file_name ;
           m_kind = Module_struct [] ;
-          m_loc = { loc_impl = Some (!file_name, pos_start) ; loc_inter = None } ;
+          m_loc = { loc_impl = Some loc ; loc_inter = None } ;
           m_top_deps = [] ;
           m_code = None ; (* code is set by the caller, after the module is created *)
           m_code_intf = m_code_intf ;
@@ -1576,7 +1586,7 @@ module Analyser =
       }
       in
       match (p_module_expr.Parsetree.pmod_desc, tt_module_expr.Typedtree.mod_desc) with
-        (Parsetree.Pmod_ident longident, Typedtree.Tmod_ident path) ->
+        (Parsetree.Pmod_ident longident, Typedtree.Tmod_ident (path, _)) ->
           let alias_name = Odoc_env.full_module_name env (Name.from_path path) in
           { m_base with m_kind = Module_alias { ma_name = alias_name ;
                                                 ma_module = None ; } }
@@ -1589,19 +1599,19 @@ module Analyser =
           { m_base with m_kind = Module_struct elements2 }
 
       | (Parsetree.Pmod_functor (_, pmodule_type, p_module_expr2),
-         Typedtree.Tmod_functor (ident, mtyp, tt_module_expr2)) ->
+         Typedtree.Tmod_functor (ident, _, mtyp, tt_module_expr2)) ->
            let loc_start = pmodule_type.Parsetree.pmty_loc.Location.loc_start.Lexing.pos_cnum in
            let loc_end = pmodule_type.Parsetree.pmty_loc.Location.loc_end.Lexing.pos_cnum in
            let mp_type_code = get_string_of_file loc_start loc_end in
            print_DEBUG (Printf.sprintf "mp_type_code=%s" mp_type_code);
            let mp_name = Name.from_ident ident in
            let mp_kind = Sig.analyse_module_type_kind env
-               current_module_name pmodule_type mtyp
+               current_module_name pmodule_type mtyp.mty_type
            in
            let param =
              {
                mp_name = mp_name ;
-               mp_type = Odoc_env.subst_module_type env mtyp ;
+               mp_type = Odoc_env.subst_module_type env mtyp.mty_type ;
                mp_type_code = mp_type_code ;
                mp_kind = mp_kind ;
              }
@@ -1624,7 +1634,7 @@ module Analyser =
          Typedtree.Tmod_apply (tt_module_expr1, tt_module_expr2, _))
       | (Parsetree.Pmod_apply (p_module_expr1, p_module_expr2),
          Typedtree.Tmod_constraint
-           ({ Typedtree.mod_desc = Typedtree.Tmod_apply (tt_module_expr1, tt_module_expr2, _)},
+           ({ Typedtree.mod_desc = Typedtree.Tmod_apply (tt_module_expr1, tt_module_expr2, _)}, _,
             _, _)
         ) ->
           let m1 = analyse_module
@@ -1646,7 +1656,7 @@ module Analyser =
           { m_base with m_kind = Module_apply (m1.m_kind, m2.m_kind) }
 
       | (Parsetree.Pmod_constraint (p_module_expr2, p_modtype),
-         Typedtree.Tmod_constraint (tt_module_expr2, tt_modtype, _)) ->
+         Typedtree.Tmod_constraint (tt_module_expr2, tt_modtype, _, _)) ->
           print_DEBUG ("Odoc_ast: case Parsetree.Pmod_constraint + Typedtree.Tmod_constraint "^module_name);
           let m_base2 = analyse_module
               env
@@ -1672,7 +1682,7 @@ module Analyser =
       | (Parsetree.Pmod_structure p_structure,
          Typedtree.Tmod_constraint
            ({ Typedtree.mod_desc = Typedtree.Tmod_structure tt_structure},
-            tt_modtype, _)
+            tt_modtype, _, _)
         ) ->
           (* needed for recursive modules *)
 
@@ -1686,7 +1696,7 @@ module Analyser =
             m_kind = Module_struct elements2 ;
           }
 
-      | (Parsetree.Pmod_unpack (p_exp),
+      | (Parsetree.Pmod_unpack p_exp,
          Typedtree.Tmod_unpack (t_exp, tt_modtype)) ->
           print_DEBUG ("Odoc_ast: case Parsetree.Pmod_unpack + Typedtree.Tmod_unpack "^module_name);
           let code =
@@ -1700,7 +1710,7 @@ module Analyser =
           (* let name = Odoc_env.full_module_type_name env (Name.from_path (fst pkg_type)) in *)
           let name =
             match tt_modtype with
-            | Tmty_ident p ->
+            | Mty_ident p ->
                 Odoc_env.full_module_type_name env (Name.from_path p)
             | _ -> ""
           in
@@ -1763,12 +1773,12 @@ module Analyser =
        let kind = Module_struct elements2 in
        {
          m_name = mod_name ;
-         m_type = Types.Tmty_signature [] ;
+         m_type = Types.Mty_signature [] ;
          m_info = info_opt ;
          m_is_interface = false ;
          m_file = !file_name ;
          m_kind = kind ;
-         m_loc = { loc_impl = Some (!file_name, 0) ; loc_inter = None } ;
+         m_loc = { loc_impl = Some (Location.in_file !file_name) ; loc_inter = None } ;
          m_top_deps = [] ;
          m_code = (if !Odoc_global.keep_code then Some !file else None) ;
          m_code_intf = None ;
index 48ba98bfb39ef894e57aea8d26c5eff877e9bd18..a26610da6b8b2d754c146facc71c6756dd9ec42b 100644 (file)
@@ -9,7 +9,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: odoc_ast.mli 12511 2012-05-30 13:29:48Z lefessan $ *)
 
 (** The module for analysing the typed abstract syntax tree and source code and creating modules, classes, ..., elements.*)
 
@@ -20,7 +20,7 @@ module Typedtree_search :
     sig
       type ele
 
-      type tab = (ele, Typedtree.structure_item) Hashtbl.t
+      type tab = (ele, Typedtree.structure_item_desc) Hashtbl.t
       type tab_values = (Odoc_name.t, Typedtree.pattern * Typedtree.expression) Hashtbl.t
 
       (** Create hash tables used to search by some of the functions below. *)
@@ -34,12 +34,12 @@ module Typedtree_search :
       (** This function returns the [Types.module_type] associated to the given module type name,
          in the given table.
          @raise Not_found if the module type was not found.*)
-      val search_module_type : tab -> string -> Types.module_type
+      val search_module_type : tab -> string -> Typedtree.module_type
 
       (** This function returns the [Types.exception_declaration] associated to the given exception name,
          in the given table.
          @raise Not_found if the exception was not found.*)
-      val search_exception : tab -> string -> Types.exception_declaration
+      val search_exception : tab -> string -> Typedtree.exception_declaration
 
       (** This function returns the [Path.t] associated to the given exception rebind name,
          in the table.
@@ -49,7 +49,7 @@ module Typedtree_search :
       (** This function returns the [Typedtree.type_declaration] associated to the given type name,
          in the given table.
          @raise Not_found if the type was not found. *)
-      val search_type_declaration : tab -> string -> Types.type_declaration
+      val search_type_declaration : tab -> string -> Typedtree.type_declaration
 
       (** This function returns the [Typedtree.class_expr] and type parameters
          associated to the given class name, in the given table.
@@ -59,7 +59,7 @@ module Typedtree_search :
       (** This function returns the [Types.cltype_declaration] associated to the given class type name,
          in the given table.
          @raise Not_found if the class type was not found. *)
-      val search_class_type_declaration : tab -> string -> Types.cltype_declaration
+      val search_class_type_declaration : tab -> string -> Typedtree.class_type_declaration
 
       (** This function returns the couple (pat, exp) for the given value name, in the
          given table of values.
index 28abf67031aa4a4311f568677c97913029ca6b4f..a8457ab883556f2841452d8980f50805a9ae8800 100644 (file)
@@ -9,7 +9,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: odoc_class.ml 12341 2012-04-11 16:46:30Z guesdon $ *)
 
 (** Representation and manipulation of classes and class types.*)
 
@@ -250,4 +250,4 @@ let class_type_parameter_text_by_name clt label =
           None
 
 
-(* eof $Id$ *)
+(* eof $Id: odoc_class.ml 12341 2012-04-11 16:46:30Z guesdon $ *)
index af524eefaf945f54ff63d6b545a26b5e66105ac1..d7c89b2adc023b372bc5253cd626dd78fc55a4ec 100644 (file)
@@ -9,7 +9,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: odoc_comments.ml 12245 2012-03-14 21:01:41Z guesdon $ *)
 
 (** Analysis of comments. *)
 
index 28122cda94790af41dfd5fb3b833018384d6264c..6e1a37689152e5382b545b8fe78cc0bc64dacb3a 100644 (file)
@@ -9,7 +9,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: odoc_comments.mli 7619 2006-09-20 11:14:37Z doligez $ *)
 
 (** Analysis of comments. *)
 
index a4366ceb71882acfdac6daa2a513cda8b0721b87..0b5d92f6bdff64a78eab9724c49164e331fd2766 100644 (file)
@@ -9,7 +9,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: odoc_comments_global.ml 10480 2010-05-31 11:52:13Z guesdon $ *)
 
 (** The global variables used by the special comment parser.*)
 
@@ -48,4 +48,4 @@ let init () =
   return_value := None ;
   customs := []
 
-(* eof $Id$ *)
+(* eof $Id: odoc_comments_global.ml 10480 2010-05-31 11:52:13Z guesdon $ *)
index e9efbffc5914dd32845878058a6263551c8a6640..b00fdbc6519a1d5d59013df42f35dd8aadb83042 100644 (file)
@@ -9,7 +9,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: odoc_comments_global.mli 10480 2010-05-31 11:52:13Z guesdon $ *)
 
 (** The global variables used by the special comment parser.*)
 
index 71769534dcb00e84e9be4c35442bacd5d55c7744..038b1caa82ad7340eb4bd7b070497aba74fc7463 100644 (file)
@@ -9,7 +9,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: odoc_config.ml 8416 2007-10-08 14:19:34Z doligez $ *)
 
 let custom_generators_path =
   Filename.concat Config.standard_library
index fb356084bba7f3ce095056683a212d2e18ecaa6f..f67a611788e878f5b73a72122cf199b14fdd7b9c 100644 (file)
@@ -9,7 +9,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: odoc_config.mli 8416 2007-10-08 14:19:34Z doligez $ *)
 
 (** Ocamldoc configuration contants. *)
 
index b73796bf8a40bf84a1c2b27f068d64cda0791766..a282a21e0b1bd76cbf4ba3749fe1033f79d1f3c5 100644 (file)
@@ -9,4 +9,4 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: odoc_control.ml 9547 2010-01-22 12:48:24Z doligez $ *)
index cd79790d24afb24c88744e792e808218b2ff22eb..2fe10b59539831377e98727293df90bc670ce2c5 100644 (file)
@@ -9,7 +9,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: odoc_cross.ml 12249 2012-03-20 12:00:11Z guesdon $ *)
 
 (** Cross referencing. *)
 
index 2fce2c48c15e3f8d0e09afb2e83f9cd0d4dca6aa..35e70b6abe9fed3b0331ef63d3a7ccc9741fc607 100644 (file)
@@ -9,7 +9,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: odoc_cross.mli 7619 2006-09-20 11:14:37Z doligez $ *)
 
 (** Cross-referencing. *)
 
index cfdf9abcb439e260fbc412eeefbb1aaf990cafe7..4daf0f95951e085eb90087461d61ade8832ed19c 100644 (file)
@@ -9,7 +9,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: odoc_dag2html.ml 6723 2004-12-03 14:42:09Z guesdon $ *)
 
 (** The types and functions to create a html table representing a dag. Thanks to Daniel De Rauglaudre. *)
 
index d377bce2ee4e7d658f04c381fa5be990519b79f6..2da9607b9d13411f5af0687fa145db47e15d5c45 100644 (file)
@@ -9,7 +9,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: odoc_dag2html.mli 9547 2010-01-22 12:48:24Z doligez $ *)
 
 (** The types and functions to create a html table representing a dag.
    Thanks to Daniel de Rauglaudre. *)
index 8878e723e07bb2d666535d20eb2d9ed21dcf493f..a812260d10491789c73f01766b3e1959ae0612d6 100644 (file)
@@ -9,7 +9,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: odoc_dep.ml 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (** Top modules dependencies. *)
 
index a0d5ee2224e00231aac2cb0cd064a7f2ca8c0bae..bf31217ab4a2dc04d3c61aec5bf83fcdea467a21 100644 (file)
@@ -9,7 +9,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: odoc_dot.ml 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (** Definition of a class which outputs a dot file showing
    top modules dependencies.*)
index 9a1c941d7121e1c34d0e9321ef5517ffce4d8363..3140be11c87ff36c62d4e0d54bac1bdd6680a57f 100644 (file)
@@ -9,7 +9,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: odoc_env.ml 12511 2012-05-30 13:29:48Z lefessan $ *)
 
 (** Environment for finding complete names from relative names. *)
 
@@ -51,30 +51,30 @@ let rec add_signature env root ?rel signat =
   in
   let f env item =
     match item with
-      Types.Tsig_value (ident, _) -> { env with env_values = (rel_name ident, qualify ident) :: env.env_values }
-    | Types.Tsig_type (ident,_,_) -> { env with env_types = (rel_name ident, qualify ident) :: env.env_types }
-    | Types.Tsig_exception (ident, _) -> { env with env_exceptions = (rel_name ident, qualify ident) :: env.env_exceptions }
-    | Types.Tsig_module (ident, modtype, _) ->
+      Types.Sig_value (ident, _) -> { env with env_values = (rel_name ident, qualify ident) :: env.env_values }
+    | Types.Sig_type (ident,_,_) -> { env with env_types = (rel_name ident, qualify ident) :: env.env_types }
+    | Types.Sig_exception (ident, _) -> { env with env_exceptions = (rel_name ident, qualify ident) :: env.env_exceptions }
+    | Types.Sig_module (ident, modtype, _) ->
         let env2 =
           match modtype with (* A VOIR : le cas où c'est un identificateur, dans ce cas on n'a pas de signature *)
-            Types.Tmty_signature s -> add_signature env (qualify ident) ~rel: (rel_name ident) s
+            Types.Mty_signature s -> add_signature env (qualify ident) ~rel: (rel_name ident) s
           |  _ -> env
         in
         { env2 with env_modules = (rel_name ident, qualify ident) :: env2.env_modules }
-    | Types.Tsig_modtype (ident, modtype_decl) ->
+    | Types.Sig_modtype (ident, modtype_decl) ->
         let env2 =
           match modtype_decl with
-            Types.Tmodtype_abstract ->
+            Types.Modtype_abstract ->
               env
-          | Types.Tmodtype_manifest modtype ->
+          | Types.Modtype_manifest modtype ->
               match modtype with
                  (* A VOIR : le cas où c'est un identificateur, dans ce cas on n'a pas de signature *)
-                Types.Tmty_signature s -> add_signature env (qualify ident) ~rel: (rel_name ident) s
+                Types.Mty_signature s -> add_signature env (qualify ident) ~rel: (rel_name ident) s
               |  _ -> env
         in
         { env2 with env_module_types = (rel_name ident, qualify ident) :: env2.env_module_types }
-    | Types.Tsig_class (ident, _, _) -> { env with env_classes = (rel_name ident, qualify ident) :: env.env_classes }
-    | Types.Tsig_cltype (ident, _, _) -> { env with env_class_types = (rel_name ident, qualify ident) :: env.env_class_types }
+    | Types.Sig_class (ident, _, _) -> { env with env_classes = (rel_name ident, qualify ident) :: env.env_classes }
+    | Types.Sig_class_type (ident, _, _) -> { env with env_class_types = (rel_name ident, qualify ident) :: env.env_class_types }
   in
   List.fold_left f env signat
 
@@ -218,32 +218,32 @@ let subst_type env t =
 let subst_module_type env t =
   let rec iter t =
     match t with
-      Types.Tmty_ident p ->
+      Types.Mty_ident p ->
         let new_p = Odoc_name.to_path (full_module_type_name env (Odoc_name.from_path p)) in
-        Types.Tmty_ident new_p
-    | Types.Tmty_signature _ ->
+        Types.Mty_ident new_p
+    | Types.Mty_signature _ ->
         t
-    | Types.Tmty_functor (id, mt1, mt2) ->
-        Types.Tmty_functor (id, iter mt1, iter mt2)
+    | Types.Mty_functor (id, mt1, mt2) ->
+        Types.Mty_functor (id, iter mt1, iter mt2)
   in
   iter t
 
 let subst_class_type env t =
   let rec iter t =
     match t with
-      Types.Tcty_constr (p,texp_list,ct) ->
+      Types.Cty_constr (p,texp_list,ct) ->
         let new_p = Odoc_name.to_path (full_type_name env (Odoc_name.from_path p)) in
         let new_texp_list = List.map (subst_type env) texp_list in
         let new_ct = iter ct in
-        Types.Tcty_constr (new_p, new_texp_list, new_ct)
-    | Types.Tcty_signature cs ->
+        Types.Cty_constr (new_p, new_texp_list, new_ct)
+    | Types.Cty_signature cs ->
         (* on ne s'occupe pas des vals et methods *)
         t
-    | Types.Tcty_fun (l, texp, ct) ->
+    | Types.Cty_fun (l, texp, ct) ->
         let new_texp = subst_type env texp in
         let new_ct = iter ct in
-        Types.Tcty_fun (l, new_texp, new_ct)
+        Types.Cty_fun (l, new_texp, new_ct)
   in
   iter t
 
-(* eof $Id$ *)
+(* eof $Id: odoc_env.ml 12511 2012-05-30 13:29:48Z lefessan $ *)
index 75c0b38a4d28de0b56f8afc59af77917bd37e367..5eb92dfb859e9fdac5e42d459ff089e247b683b7 100644 (file)
@@ -9,7 +9,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: odoc_env.mli 9547 2010-01-22 12:48:24Z doligez $ *)
 
 (** Environment for finding complete names from relative names. *)
 
index 74a2fb5a20dbce86db86808588fbd3ff99b7c848..5ff5c4007755f7829702d69d00138986e346c336 100644 (file)
@@ -9,7 +9,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: odoc_exception.ml 9547 2010-01-22 12:48:24Z doligez $ *)
 
 (** Representation and manipulation of exceptions. *)
 
index b2d7bf872f41d4403cfa3247c59e7ea302f0df2a..7a37554ec5ec55ddd4ba229c4074f4384b7b32b7 100644 (file)
@@ -9,7 +9,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: odoc_global.ml 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (** Global variables. *)
 
index d3d17ebe38e4b7a2a3424d7157a4a77c32b08069..b107b3063afee76930fb548c482468286ee134c6 100644 (file)
@@ -9,7 +9,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: odoc_global.mli 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (** Global variables. *)
 
index 6f494284ffceda7583a6fcc9890bb4e3e457527c..efe12d1622dfe2625b686e24c396e114d42ee970 100644 (file)
@@ -9,7 +9,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: odoc_html.ml 12434 2012-05-07 09:41:28Z guesdon $ *)
 
 (** Generation of html documentation.*)
 
@@ -335,14 +335,10 @@ class virtual text =
         in
         fun b s ->
       if !colorize_code then
-        (
-         bs b "<pre></pre>";
-         self#html_of_code b (remove_useless_newlines s);
-         bs b "<pre></pre>"
-        )
+         self#html_of_code b (remove_useless_newlines s)
       else
         (
-         bs b "<pre><code class=\"";
+         bs b "<pre class=\"codepre\"><code class=\"";
          bs b Odoc_ocamlhtml.code_class;
          bs b "\">" ;
          bs b (self#escape (remove_useless_newlines s));
@@ -350,7 +346,7 @@ class virtual text =
         )
 
     method html_of_Verbatim b s =
-      bs b "<pre>";
+      bs b "<pre class=\"verbatim\">";
       bs b (self#escape s);
       bs b "</pre>"
 
@@ -487,7 +483,7 @@ class virtual text =
       bs b "<br>\n<table class=\"indextable\">\n";
       List.iter
         (fun name ->
-          bs b "<tr><td>";
+          bs b "<tr><td class=\"module\">";
           (
            try
              let m =
@@ -511,8 +507,9 @@ class virtual text =
       let index_if_not_empty l url m =
         match l with
           [] -> ()
-        | _ -> bp b "<a href=\"%s\">%s</a><br>\n" url m
+        | _ -> bp b "<li><a href=\"%s\">%s</a></li>\n" url m
       in
+      bp b "<ul class=\"indexlist\">\n";
       index_if_not_empty self#list_types self#index_types Odoc_messages.index_of_types;
       index_if_not_empty self#list_exceptions self#index_exceptions Odoc_messages.index_of_exceptions;
       index_if_not_empty self#list_values self#index_values Odoc_messages.index_of_values;
@@ -521,7 +518,8 @@ class virtual text =
       index_if_not_empty self#list_classes self#index_classes Odoc_messages.index_of_classes;
       index_if_not_empty self#list_class_types self#index_class_types Odoc_messages.index_of_class_types;
       index_if_not_empty self#list_modules self#index_modules Odoc_messages.index_of_modules;
-      index_if_not_empty self#list_module_types self#index_module_types Odoc_messages.index_of_module_types
+      index_if_not_empty self#list_module_types self#index_module_types Odoc_messages.index_of_module_types;
+      bp b "</ul>\n"
 
     method virtual list_types : Odoc_info.Type.t_type list
     method virtual index_types : string
@@ -711,7 +709,7 @@ class virtual info =
           let module M = Odoc_info in
           let dep = info.M.i_deprecated <> None in
           bs b "<div class=\"info\">\n";
-          if dep then bs b "<font color=\"#CCCCCC\">";
+          if dep then bs b "<span class=\"deprecated\">";
           (
            match info.M.i_desc with
              None -> ()
@@ -722,7 +720,7 @@ class virtual info =
                     (Odoc_info.first_sentence_of_text d));
                bs b "\n"
           );
-          if dep then bs b "</font>";
+          if dep then bs b "</span>";
           bs b "</div>\n"
 
   end
@@ -769,11 +767,7 @@ class html =
 
     (** The default style options. *)
     val mutable default_style_options =
-      ["a:visited {color : #416DFF; text-decoration : none; }" ;
-        "a:link {color : #416DFF; text-decoration : none;}" ;
-        "a:hover {color : Red; text-decoration : none; background-color: #5FFF88}" ;
-        "a:active {color : Red; text-decoration : underline; }" ;
-        ".keyword { font-weight : bold ; color : Red }" ;
+      [ ".keyword { font-weight : bold ; color : Red }" ;
         ".keywordsign { color : #C04600 }" ;
         ".superscript { font-size : 4 }" ;
         ".subscript { font-size : 4 }" ;
@@ -782,9 +776,18 @@ class html =
         ".type { color : #5C6585 }" ;
         ".string { color : Maroon }" ;
         ".warning { color : Red ; font-weight : bold }" ;
-        ".info { margin-left : 3em; margin-right : 3em }" ;
+        ".info { margin-left : 3em; margin-right: 3em }" ;
         ".param_info { margin-top: 4px; margin-left : 3em; margin-right : 3em }" ;
         ".code { color : #465F91 ; }" ;
+        ".typetable { border-style : hidden }" ;
+        ".paramstable { border-style : hidden ; padding: 5pt 5pt}" ;
+        "tr { background-color : White }" ;
+        "td.typefieldcomment { background-color : #FFFFFF ; font-size: smaller ;}" ;
+        "div.sig_block {margin-left: 2em}" ;
+        "*:target { background: yellow; }" ;
+
+        "body {font: 13px sans-serif; color: black; text-align: left; padding: 5px; margin: 0}";
+
         "h1 { font-size : 20pt ; text-align: center; }" ;
 
         "h2 { font-size : 20pt ; border: 1px solid #000000; "^
@@ -809,7 +812,7 @@ class html =
 
         "h6 { font-size : 20pt ; border: 1px solid #000000; "^
         "margin-top: 5px; margin-bottom: 2px;"^
-        "text-align: center; background-color: #C0FFFF ; "^
+        "text-align: center; background-color: #90BDFF ; "^
         "padding: 2px; }" ;
 
         "div.h7 { font-size : 20pt ; border: 1px solid #000000; "^
@@ -827,17 +830,22 @@ class html =
         "text-align: center; background-color: #FFFFFF ; "^
         "padding: 2px; }" ;
 
-        ".typetable { border-style : hidden }" ;
-        ".indextable { border-style : hidden }" ;
-        ".paramstable { border-style : hidden ; padding: 5pt 5pt}" ;
-        "body { background-color : White }" ;
-        "tr { background-color : White }" ;
-        "td.typefieldcomment { background-color : #FFFFFF ; font-size: smaller ;}" ;
-        "pre { margin-bottom: 4px }" ;
+        "a {color: #416DFF; text-decoration: none}";
+        "a:hover {background-color: #ddd; text-decoration: underline}";
+        "pre { margin-bottom: 4px; font-family: monospace; }" ;
+        "pre.verbatim, pre.codepre { }";
 
-        "div.sig_block {margin-left: 2em}" ;
+        ".indextable {border: 1px #ddd solid; border-collapse: collapse}";
+        ".indextable td, .indextable th {border: 1px #ddd solid;       min-width: 80px}";
+        ".indextable td.module {background-color: #eee ;  padding-left: 2px; padding-right: 2px}";
+        ".indextable td.module a {color: 4E6272;       text-decoration: none; display: block; width: 100%}";
+        ".indextable td.module a:hover {text-decoration: underline; background-color: transparent}";
+        ".deprecated {color: #888; font-style: italic}" ;
+
+        ".indextable tr td div.info { margin-left: 2px; margin-right: 2px }" ;
 
-        "*:target { background: yellow; } " ;
+        "ul.indexlist { margin-left: 0; padding-left: 0;}";
+        "ul.indexlist li { list-style-type: none ; margin-left: 0; padding-left: 0; }";
       ]
 
     (** The style file for all pages. *)
@@ -1073,21 +1081,24 @@ class html =
        match pre with
          None -> ()
        | Some name ->
-           bp b "<a href=\"%s\">%s</a>\n"
+           bp b "<a class=\"pre\" href=\"%s\" title=\"%s\">%s</a>\n"
              (fst (Naming.html_files name))
+             name
              Odoc_messages.previous
       );
       bs b "&nbsp;";
       let father = Name.father name in
       let href = if father = "" then self#index else fst (Naming.html_files father) in
-      bp b "<a href=\"%s\">%s</a>\n" href Odoc_messages.up;
+      let father_name = if father = "" then "Index" else father in
+      bp b "<a class=\"up\" href=\"%s\" title=\"%s\">%s</a>\n" href father_name Odoc_messages.up;
       bs b "&nbsp;";
       (
        match post with
          None -> ()
        | Some name ->
-           bp b "<a href=\"%s\">%s</a>\n"
+           bp b "<a class=\"post\" href=\"%s\" title=\"%s\">%s</a>\n"
              (fst (Naming.html_files name))
+             name
              Odoc_messages.next
       );
       bs b "</div>\n"
@@ -1265,7 +1276,7 @@ class html =
           self#html_of_module_kind b father k2;
           self#html_of_text b [Code ")"]
       | Module_with (k, s) ->
-          (* TODO: ÃƒÂ  modifier quand Module_with sera plus détaillé *)
+          (* TODO: modify when Module_with will be more detailed *)
           self#html_of_module_type_kind b father ?modu k;
           bs b "<code class=\"type\"> ";
           bs b (self#create_fully_qualified_module_idents_links father s);
@@ -1448,7 +1459,7 @@ class html =
         (match t.ty_manifest, t.ty_kind with
           None, Type_abstract -> "<pre>"
         | None, Type_variant _
-        | None, Type_record _ -> "<br><code>"
+        | None, Type_record _ -> "<pre><code>"
         | Some _, Type_abstract -> "<pre>"
         | Some _, Type_variant _
         | Some _, Type_record _ -> "<pre>"
@@ -1477,7 +1488,7 @@ class html =
           bs b
             (
              match t.ty_manifest with
-               None -> "</code>"
+               None -> "</code></pre>"
              | Some _ -> "</pre>"
             );
           bs b "<table class=\"typetable\">\n";
@@ -1534,7 +1545,7 @@ class html =
           bs b
             (
              match t.ty_manifest with
-               None -> "</code>"
+               None -> "</code></pre>"
              | Some _ -> "</pre>"
             );
           bs b "<table class=\"typetable\">\n" ;
@@ -1859,7 +1870,7 @@ class html =
           self#html_of_text b [Code "end"]
 
       | Class_apply capp ->
-          (* TODO: afficher le type final ÃƒÂ  partir du typedtree *)
+          (* TODO: display final type from typedtree *)
           self#html_of_text b [Raw "class application not handled yet"]
 
       | Class_constr cco ->
@@ -2110,9 +2121,11 @@ class html =
         let b = new_buf () in
         bs b "<html>\n";
         self#print_header b (self#inner_title title);
-        bs b "<body>\n<center><h1>";
+        bs b "<body>\n";
+        self#print_navbar b None None "";
+        bs b "<h1>";
         bs b title;
-        bs b "</h1></center>\n" ;
+        bs b "</h1>\n" ;
 
         let sorted_elements = List.sort
             (fun e1 e2 -> compare (Name.simple (name e1)) (Name.simple (name e2)))
@@ -2145,7 +2158,7 @@ class html =
         in
         bs b "<table>\n";
         List.iter f_group groups ;
-        bs b "</table><br>\n" ;
+        bs b "</table>\n" ;
         bs b "</body>\n</html>";
         Buffer.output_buffer chanout b;
         close_out chanout
@@ -2184,11 +2197,11 @@ class html =
           (self#inner_title cl.cl_name);
         bs b "<body>\n";
         self#print_navbar b pre_name post_name cl.cl_name;
-        bs b "<center><h1>";
+        bs b "<h1>";
         bs b (Odoc_messages.clas^" ");
         if cl.cl_virtual then bs b "virtual " ;
         bp b "<a href=\"%s\">%s</a>" type_file cl.cl_name;
-        bs b "</h1></center>\n<br>\n";
+        bs b "</h1>\n";
         self#html_of_class b ~with_link: false cl;
         (* parameters *)
         self#html_of_described_parameter_list b
@@ -2232,11 +2245,11 @@ class html =
 
         bs b "<body>\n";
         self#print_navbar b pre_name post_name clt.clt_name;
-        bs b "<center><h1>";
+        bs b "<h1>";
         bs b (Odoc_messages.class_type^" ");
         if clt.clt_virtual then bs b "virtual ";
         bp b "<a href=\"%s\">%s</a>" type_file clt.clt_name;
-        bs b "</h1></center>\n<br>\n";
+        bs b "</h1>\n";
         self#html_of_class_type b ~with_link: false clt;
 
         (* class inheritance *)
@@ -2277,14 +2290,14 @@ class html =
           (self#inner_title mt.mt_name);
         bs b "<body>\n";
         self#print_navbar b pre_name post_name mt.mt_name;
-        bp b "<center><h1>";
+        bp b "<h1>";
         bs b (Odoc_messages.module_type^" ");
         (
          match mt.mt_type with
            Some _ -> bp b "<a href=\"%s\">%s</a>" type_file mt.mt_name
          | None-> bs b mt.mt_name
         );
-        bs b "</h1></center>\n<br>\n" ;
+        bs b "</h1>\n" ;
         self#html_of_modtype b ~with_link: false mt;
 
         (* parameters for functors *)
@@ -2345,7 +2358,7 @@ class html =
           (self#inner_title modu.m_name);
         bs b "<body>\n" ;
         self#print_navbar b pre_name post_name modu.m_name ;
-        bs b "<center><h1>";
+        bs b "<h1>";
         if modu.m_text_only then
           bs b modu.m_name
         else
@@ -2364,7 +2377,7 @@ class html =
             | Some _ -> bp b " (<a href=\"%s\">.ml</a>)" code_file
            )
           );
-        bs b "</h1></center>\n<br>\n";
+        bs b "</h1>\n";
 
         if not modu.m_text_only then self#html_of_module b ~with_link: false modu;
 
@@ -2422,9 +2435,10 @@ class html =
         bs b "<html>\n";
         self#print_header b self#title;
         bs b "<body>\n";
-        bs b "<center><h1>";
+
+        bs b "<h1>";
         bs b title;
-        bs b "</h1></center>\n" ;
+        bs b "</h1>\n" ;
         let info = Odoc_info.apply_opt
             (Odoc_info.info_of_comment_file module_list)
             !Odoc_info.Global.intro_file
index 4cd4a3e3b1a7b8092185429c94dffcad90a2f0de..54fadaba0ee631e49850f46d75c86ddf314eb10c 100644 (file)
@@ -9,7 +9,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: odoc_info.ml 12435 2012-05-07 10:31:18Z guesdon $ *)
 
 (** Interface for analysing documented OCaml source files and to the collected information. *)
 
@@ -83,8 +83,8 @@ type info = Odoc_types.info = {
   }
 
 type location = Odoc_types.location = {
-    loc_impl : (string * int) option ;
-    loc_inter : (string * int) option ;
+    loc_impl : Location.t option ;
+    loc_inter : Location.t option ;
   }
 
 let dummy_loc = { loc_impl = None ; loc_inter = None }
index a3fc5975b8991ed467d14041764d0366e51d6b92..00d626af47a4c5695d2880bcc2e4dc00faaa8959 100644 (file)
@@ -9,7 +9,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: odoc_info.mli 12435 2012-05-07 10:31:18Z guesdon $ *)
 
 (** Interface to the information collected in source files. *)
 
@@ -100,8 +100,8 @@ type info = Odoc_types.info = {
 
 (** Location of elements in implementation and interface files. *)
 type location = Odoc_types.location = {
-    loc_impl : (string * int) option ; (** implementation file name and position *)
-    loc_inter : (string * int) option ; (** interface file name and position *)
+    loc_impl : Location.t option ; (** implementation location *)
+    loc_inter : Location.t option ; (** interface location *)
   }
 
 (** A dummy location. *)
index b73796bf8a40bf84a1c2b27f068d64cda0791766..fa50fb04992f67a089b3c5ab0fd3a5b63e125b8f 100644 (file)
@@ -9,4 +9,4 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: odoc_inherit.ml 9547 2010-01-22 12:48:24Z doligez $ *)
index f2bff2172a4646435f9a6a593534c490f014ae75..0c6b75e429ccbb3093901b772b63cc0f91477fd2 100644 (file)
@@ -9,7 +9,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: odoc_latex.ml 12249 2012-03-20 12:00:11Z guesdon $ *)
 
 (** Generation of LaTeX documentation. *)
 
index db0964a71cd292b18044e4a7fb1e66c8adc09d92..d22979cd20f5d54c7f7db3266661b5dc587e8fe3 100644 (file)
@@ -11,7 +11,7 @@
 
 (** The content of the LaTeX style to generate when generating LaTeX code. *)
 
-(* $Id$ *)
+(* $Id: odoc_latex_style.ml 11123 2011-07-20 09:17:07Z doligez $ *)
 
 let content ="\
 \n%% Support macros for LaTeX documentation generated by ocamldoc.\
index 318a839fff18aac2206511a3648c7cb5acc4e916..ac2d00e06bf15c2fbe3a6fce9ae1b4ac4ae7574f 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: odoc_lexer.mll 10652 2010-08-24 09:45:45Z guesdon $ *)
 
 (** The lexer for special comments. *)
 
index dae2ff986abfa8cf860ede2f83967a62c4c7da25..fe855ea430e3b7fd52ae8cbefbc23f40349030e2 100644 (file)
@@ -9,7 +9,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: odoc_man.ml 12249 2012-03-20 12:00:11Z guesdon $ *)
 
 (** The man pages generator. *)
 open Odoc_info
index 4c6b452c7642f1b7f7b8011a50685036c731ea58..b591b9d352e185c66b9be2a5b5431e036246e241 100644 (file)
@@ -9,7 +9,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: odoc_merge.ml 11123 2011-07-20 09:17:07Z doligez $ *)
 
 (** Merge of information from [.ml] and [.mli] for a module.*)
 
index 3133c5e939b8b1facb2f3e87b0571f8ce2033da8..0c2701913513647f9e6f022ad351eee99beab674 100644 (file)
@@ -9,7 +9,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: odoc_merge.mli 12341 2012-04-11 16:46:30Z guesdon $ *)
 
 (** Merge of information from [.ml] and [.mli] for a module.*)
 
index 7dfdff49071b15a53833ca44cd94595bc3b124a3..0f5f31048a045fdfb78934468d459a553f34a2cf 100644 (file)
@@ -9,7 +9,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: odoc_messages.ml 12249 2012-03-20 12:00:11Z guesdon $ *)
 
 (** The messages of the application. *)
 
index c74b287d6f0b43fa2f945060b62bf63c4f060406..46189745107949d46022b6080bc67314e8a8431a 100644 (file)
@@ -9,7 +9,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: odoc_misc.ml 12341 2012-04-11 16:46:30Z guesdon $ *)
 
 let no_blanks s =
   let len = String.length s in
index 4fc83fe89b8712754617cef63068a3aaf118c92d..06b66fc3c5fcad8da5b39cb84a3346f4f5f18bff 100644 (file)
@@ -9,7 +9,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: odoc_misc.mli 7307 2006-01-04 16:55:50Z doligez $ *)
 
 (** Miscelaneous functions *)
 
index cc1fe02ca8083ed739df19c0728ba3e2f4411073..4f9a0fd380c6eb73b19c947fd99d5bf43f88a376 100644 (file)
@@ -9,7 +9,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: odoc_module.ml 12511 2012-05-30 13:29:48Z lefessan $ *)
 
 (** Representation and manipulation of modules and module types. *)
 
@@ -238,7 +238,7 @@ let rec module_elements ?(trans=true) m =
         module_elements ~trans: trans
           { m_name = "" ;
             m_info = None ;
-            m_type = Types.Tmty_signature [] ;
+            m_type = Types.Mty_signature [] ;
             m_is_interface = false ; m_file = "" ; m_kind = k ;
             m_loc = Odoc_types.dummy_loc ;
             m_top_deps = [] ;
index b82cf87458e0faf2e1a66fe6c372a78a5b80f6d3..04a6808a3c35b305c1ce75eb6771295df15bf05f 100644 (file)
@@ -9,7 +9,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: odoc_name.ml 10643 2010-08-02 14:37:22Z doligez $ *)
 
 (** Representation of element names. *)
 
index e3b43a7867a78d86f3fd3205b81996550af43e73..5b968657d2278eb2f291564074ee0c493e4ab41e 100644 (file)
@@ -9,7 +9,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: odoc_name.mli 10643 2010-08-02 14:37:22Z doligez $ *)
 
 (** Representation of element names. *)
 
index 6364a900f6bf005d7b1bcd07f859084331f279e4..4fdc54b5fb8fff6492679fda02eb75a128239df1 100644 (file)
@@ -11,7 +11,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: odoc_ocamlhtml.mll 9547 2010-01-22 12:48:24Z doligez $ *)
 
 (** Generation of html code to display OCaml code. *)
 open Lexing
index 56f175ecd4b2152b919bddb5f55bee34af078f4a..24723a14f494e0d058ba5cb1a1fae032df9b85f1 100644 (file)
@@ -9,7 +9,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: odoc_parameter.ml 9547 2010-01-22 12:48:24Z doligez $ *)
 
 (** Representation and manipulation of method / function / class parameters. *)
 
index e62dcc551523a7809c34053447af17dc6563f247..5a3ab6aef412539d6693d8b89b431b009c773f1a 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: odoc_parser.mly 10480 2010-05-31 11:52:13Z guesdon $ *)
 
 open Odoc_types
 open Odoc_comments_global
index 88e3495754ecc51bbd393608c0ebd4795c6946f7..6e75ce1d71b330804c3a5da51977d4bd51dd6ea5 100644 (file)
@@ -9,7 +9,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: odoc_print.ml 12511 2012-05-30 13:29:48Z lefessan $ *)
 
 open Format
 
@@ -55,15 +55,15 @@ exception Use_code of string
 let simpl_module_type ?code t =
   let rec iter t =
     match t with
-      Types.Tmty_ident p -> t
-    | Types.Tmty_signature _ ->
+      Types.Mty_ident p -> t
+    | Types.Mty_signature _ ->
         (
          match code with
-           None -> Types.Tmty_signature []
+           None -> Types.Mty_signature []
          | Some s -> raise (Use_code s)
         )
-    | Types.Tmty_functor (id, mt1, mt2) ->
-        Types.Tmty_functor (id, iter mt1, iter mt2)
+    | Types.Mty_functor (id, mt1, mt2) ->
+        Types.Mty_functor (id, iter mt1, iter mt2)
   in
   iter t
 
@@ -80,20 +80,20 @@ let string_of_module_type ?code ?(complete=false) t =
 let simpl_class_type t =
   let rec iter t =
     match t with
-      Types.Tcty_constr (p,texp_list,ct) -> t
-    | Types.Tcty_signature cs ->
+      Types.Cty_constr (p,texp_list,ct) -> t
+    | Types.Cty_signature cs ->
         (* on vire les vals et methods pour ne pas qu'elles soient imprimées
            quand on affichera le type *)
         let tnil = { Types.desc = Types.Tnil ; Types.level = 0; Types.id = 0 } in
-        Types.Tcty_signature { Types.cty_self = { cs.Types.cty_self with
+        Types.Cty_signature { Types.cty_self = { cs.Types.cty_self with
                                                   Types.desc = Types.Tobject (tnil, ref None) };
                                Types.cty_vars = Types.Vars.empty ;
                                Types.cty_concr = Types.Concr.empty ;
                                Types.cty_inher = []
                              }
-    | Types.Tcty_fun (l, texp, ct) ->
+    | Types.Cty_fun (l, texp, ct) ->
         let new_ct = iter ct in
-        Types.Tcty_fun (l, texp, new_ct)
+        Types.Cty_fun (l, texp, new_ct)
   in
   iter t
 
index 01b319c35b8ed115deaecac8001ad18e93fd00b0..2575db905ceb0d70cdf10e5f9cdf5828606c84d5 100644 (file)
@@ -9,7 +9,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: odoc_print.mli 9547 2010-01-22 12:48:24Z doligez $ *)
 
 (** Printing functions. *)
 
index 18a8f117c2d6a77d8cd105b0e73278e4c73e979d..32554f919831631f5c913f0aa9905d418d42b1b1 100644 (file)
@@ -9,7 +9,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: odoc_scan.ml 12341 2012-04-11 16:46:30Z guesdon $ *)
 
 (** Scanning of modules and elements.
 
index 91b1d13c899281214475306c8cf32684170c990a..428294fa1c5674ae77c9a253adcd348019b8e6fe 100644 (file)
@@ -9,7 +9,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: odoc_search.ml 12249 2012-03-20 12:00:11Z guesdon $ *)
 
 (** Research of elements through modules. *)
 
@@ -680,4 +680,4 @@ let find_section mods regexp =
     Res_section (_,t) -> t
   | _ -> assert false
 
-(* eof $Id$ *)
+(* eof $Id: odoc_search.ml 12249 2012-03-20 12:00:11Z guesdon $ *)
index 2f882d52461c3d773fdb5e714c8117ded76c696f..373fdd91b78747d9f029abf52ab70465ffd8768d 100644 (file)
@@ -9,7 +9,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: odoc_search.mli 12249 2012-03-20 12:00:11Z guesdon $ *)
 
 (** Research of elements through modules. *)
 
index b0570f783251bb2eb71b965f4d83aa4f8c57a690..9358611dce9a29d88c7f836db374ecb5eb9b9fa2 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: odoc_see_lexer.mll 9547 2010-01-22 12:48:24Z doligez $ *)
 
 let print_DEBUG2 s = print_string s ; print_newline ()
 
index 75845bc67b1dab93b7ca220efd91e7bdc8ab679a..a0eed49e9d7d2e8db83929f3860283535ebf69b4 100644 (file)
@@ -9,7 +9,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: odoc_sig.ml 12511 2012-05-30 13:29:48Z lefessan $ *)
 
 (** Analysis of interface files. *)
 
@@ -47,19 +47,19 @@ module Signature_search =
 
     let add_to_hash table signat =
       match signat with
-        Types.Tsig_value (ident, _) ->
+        Types.Sig_value (ident, _) ->
           Hashtbl.add table (V (Name.from_ident ident)) signat
-      | Types.Tsig_exception (ident, _) ->
+      | Types.Sig_exception (ident, _) ->
           Hashtbl.add table (E (Name.from_ident ident)) signat
-      | Types.Tsig_type (ident, _, _) ->
+      | Types.Sig_type (ident, _, _) ->
           Hashtbl.add table (T (Name.from_ident ident)) signat
-      | Types.Tsig_class (ident, _, _) ->
+      | Types.Sig_class (ident, _, _) ->
           Hashtbl.add table (C (Name.from_ident ident)) signat
-      | Types.Tsig_cltype (ident, _, _) ->
+      | Types.Sig_class_type (ident, _, _) ->
           Hashtbl.add table (CT (Name.from_ident ident)) signat
-      | Types.Tsig_module (ident, _, _) ->
+      | Types.Sig_module (ident, _, _) ->
           Hashtbl.add table (M (Name.from_ident ident)) signat
-      | Types.Tsig_modtype (ident,_) ->
+      | Types.Sig_modtype (ident,_) ->
           Hashtbl.add table (MT (Name.from_ident ident)) signat
 
     let table signat =
@@ -69,40 +69,40 @@ module Signature_search =
 
     let search_value table name =
       match Hashtbl.find table (V name) with
-      | (Types.Tsig_value (_, val_desc)) ->  val_desc.Types.val_type
+      | (Types.Sig_value (_, val_desc)) ->  val_desc.Types.val_type
       | _ -> assert false
 
     let search_exception table name =
       match Hashtbl.find table (E name) with
-      | (Types.Tsig_exception (_, type_expr_list)) ->
+      | (Types.Sig_exception (_, type_expr_list)) ->
           type_expr_list
       | _ -> assert false
 
     let search_type table name =
       match Hashtbl.find table (T name) with
-      | (Types.Tsig_type (_, type_decl, _)) -> type_decl
+      | (Types.Sig_type (_, type_decl, _)) -> type_decl
       | _ -> assert false
 
     let search_class table name =
       match Hashtbl.find table (C name) with
-      | (Types.Tsig_class (_, class_decl, _)) -> class_decl
+      | (Types.Sig_class (_, class_decl, _)) -> class_decl
       | _ -> assert false
 
     let search_class_type table name =
       match Hashtbl.find table (CT name) with
-      | (Types.Tsig_cltype (_, cltype_decl, _)) -> cltype_decl
+      | (Types.Sig_class_type (_, cltype_decl, _)) -> cltype_decl
       | _ -> assert false
 
     let search_module table name =
       match Hashtbl.find table (M name) with
-      | (Types.Tsig_module (ident, module_type, _)) -> module_type
+      | (Types.Sig_module (ident, module_type, _)) -> module_type
       | _ -> assert false
 
     let search_module_type table name =
       match Hashtbl.find table (MT name) with
-      | (Types.Tsig_modtype (_, Types.Tmodtype_manifest module_type)) ->
+      | (Types.Sig_modtype (_, Types.Modtype_manifest module_type)) ->
           Some module_type
-      | (Types.Tsig_modtype (_, Types.Tmodtype_abstract)) ->
+      | (Types.Sig_modtype (_, Types.Modtype_abstract)) ->
           None
       | _ -> assert false
 
@@ -185,14 +185,14 @@ module Analyser =
                     pos_limit
                 in
                 let (len, comment_opt) =  My_ir.just_after_special !file_name s in
-                (len, acc @ [ (name, comment_opt) ])
+                (len, acc @ [ (name.txt, comment_opt) ])
             | (name, _, _, loc) :: (name2, core_type_list2, ret_type2, loc2)
               :: q ->
                 let pos_end_first = loc.Location.loc_end.Lexing.pos_cnum in
                 let pos_start_second = loc2.Location.loc_start.Lexing.pos_cnum in
                 let s = get_string_of_file pos_end_first pos_start_second in
                 let (_,comment_opt) = My_ir.just_after_special !file_name  s in
-                f (acc @ [name, comment_opt])
+                f (acc @ [name.txt, comment_opt])
                   ((name2, core_type_list2, ret_type2, loc2) :: q)
           in
           f [] cons_core_type_list_list
@@ -205,13 +205,13 @@ module Analyser =
                 let pos = ct.Parsetree.ptyp_loc.Location.loc_end.Lexing.pos_cnum in
                 let s = get_string_of_file pos pos_end in
                 let (_,comment_opt) =  My_ir.just_after_special !file_name s in
-                [name, comment_opt]
+                [name.txt, comment_opt]
             | (name,_,ct,xxloc) :: ((name2,_,ct2,xxloc2) as ele2) :: q ->
                 let pos = ct.Parsetree.ptyp_loc.Location.loc_end.Lexing.pos_cnum in
                 let pos2 = ct2.Parsetree.ptyp_loc.Location.loc_start.Lexing.pos_cnum in
                 let s = get_string_of_file pos pos2 in
                 let (_,comment_opt) =  My_ir.just_after_special !file_name s in
-                (name, comment_opt) :: (f (ele2 :: q))
+                (name.txt, comment_opt) :: (f (ele2 :: q))
           in
           (0, f name_mutable_type_list)
 
@@ -221,6 +221,7 @@ module Analyser =
           Odoc_type.Type_abstract
       | Types.Type_variant l ->
           let f (constructor_name, type_expr_list, ret_type) =
+            let constructor_name = Ident.name constructor_name in
             let comment_opt =
               try
                 match List.assoc constructor_name name_comment_list with
@@ -239,6 +240,7 @@ module Analyser =
 
       | Types.Type_record (l, _) ->
           let f (field_name, mutable_flag, type_expr) =
+            let field_name = Ident.name field_name in
             let comment_opt =
               try
                 match List.assoc field_name name_comment_list with
@@ -262,12 +264,13 @@ module Analyser =
       let get_pos_limit2 q =
         match q with
           [] -> pos_limit
-        | ele2 :: _ ->
-            match ele2 with
-              Parsetree.Pctf_val (_, _, _, _, loc)
-            | Parsetree.Pctf_virt (_, _, _, loc)
-            | Parsetree.Pctf_meth (_, _, _, loc)
-            | Parsetree.Pctf_cstr (_, _, loc) -> loc.Location.loc_start.Lexing.pos_cnum
+          | ele2 :: _ ->
+              let loc = ele2.Parsetree.pctf_loc in
+            match ele2.Parsetree.pctf_desc with
+              Parsetree.Pctf_val (_, _, _, _)
+            | Parsetree.Pctf_virt (_, _, _)
+            | Parsetree.Pctf_meth (_, _, _)
+            | Parsetree.Pctf_cstr (_, _) -> loc.Location.loc_start.Lexing.pos_cnum
             | Parsetree.Pctf_inher class_type ->
                 class_type.Parsetree.pcty_loc.Location.loc_start.Lexing.pos_cnum
       in
@@ -289,7 +292,7 @@ module Analyser =
               val_recursive = false ;
               val_parameters = Odoc_value.dummy_parameter_list subst_typ ;
               val_code = None ;
-              val_loc = { loc_impl = None ; loc_inter = Some (!file_name, loc.Location.loc_start.Lexing.pos_cnum) };
+              val_loc = { loc_impl = None ; loc_inter = Some loc };
             } ;
             met_private = private_flag = Asttypes.Private ;
             met_virtual = false ;
@@ -325,7 +328,11 @@ module Analyser =
             in
             ([], ele_comments)
 
-        | Parsetree.Pctf_val (name, mutable_flag, virtual_flag, _, loc) :: q ->
+          | item :: q ->
+              let loc = item.Parsetree.pctf_loc in
+              match item.Parsetree.pctf_desc with
+
+        | Parsetree.Pctf_val (name, mutable_flag, virtual_flag, _) ->
             (* of (string * mutable_flag * core_type option * Location.t)*)
             let (comment_opt, eles_comments) = get_comments_in_class last_pos loc.Location.loc_start.Lexing.pos_cnum in
             let complete_name = Name.concat current_class_name name in
@@ -345,7 +352,7 @@ module Analyser =
                   val_recursive = false ;
                   val_parameters = [] ;
                   val_code = None ;
-                  val_loc = { loc_impl = None ; loc_inter = Some (!file_name, loc.Location.loc_start.Lexing.pos_cnum)} ;
+                  val_loc = { loc_impl = None ; loc_inter = Some loc} ;
                 } ;
                 att_mutable = mutable_flag = Asttypes.Mutable ;
                 att_virtual = virtual_flag = Asttypes.Virtual ;
@@ -362,7 +369,7 @@ module Analyser =
             let (inher_l, eles) = f (pos_end + maybe_more) q in
             (inher_l, eles_comments @ ((Class_attribute att) :: eles))
 
-        | Parsetree.Pctf_virt (name, private_flag, _, loc) :: q ->
+        | Parsetree.Pctf_virt (name, private_flag, _) ->
             (* of (string * private_flag * core_type * Location.t) *)
             let (comment_opt, eles_comments) = get_comments_in_class last_pos loc.Location.loc_start.Lexing.pos_cnum in
             let (met, maybe_more) = get_method name comment_opt private_flag loc q in
@@ -370,21 +377,21 @@ module Analyser =
             let (inher_l, eles) = f (loc.Location.loc_end.Lexing.pos_cnum + maybe_more) q in
             (inher_l, eles_comments @ ((Class_method met2) :: eles))
 
-        | Parsetree.Pctf_meth (name, private_flag, _, loc) :: q ->
+        | Parsetree.Pctf_meth (name, private_flag, _) ->
             (* of (string * private_flag * core_type * Location.t) *)
             let (comment_opt, eles_comments) = get_comments_in_class last_pos loc.Location.loc_start.Lexing.pos_cnum in
             let (met, maybe_more) = get_method name comment_opt private_flag loc q in
             let (inher_l, eles) = f (loc.Location.loc_end.Lexing.pos_cnum + maybe_more) q in
             (inher_l, eles_comments @ ((Class_method met) :: eles))
 
-        | (Parsetree.Pctf_cstr (_, _, loc)) :: q ->
+        | (Parsetree.Pctf_cstr (_, _)) ->
             (* of (core_type * core_type * Location.t) *)
             (* A VOIR : cela correspond aux contraintes, non ? on ne les garde pas pour l'instant *)
             let (comment_opt, eles_comments) = get_comments_in_class last_pos loc.Location.loc_start.Lexing.pos_cnum in
             let (inher_l, eles) = f loc.Location.loc_end.Lexing.pos_cnum q in
             (inher_l, eles_comments @ eles)
 
-        | Parsetree.Pctf_inher class_type :: q ->
+        | Parsetree.Pctf_inher class_type ->
             let loc = class_type.Parsetree.pcty_loc in
             let (comment_opt, eles_comments) =
               get_comments_in_class last_pos loc.Location.loc_start.Lexing.pos_cnum
@@ -402,7 +409,7 @@ module Analyser =
               match class_type.Parsetree.pcty_desc with
                 Parsetree.Pcty_constr (longident, _) ->
                   (*of Longident.t * core_type list*)
-                  let name = Name.from_longident longident in
+                  let name = Name.from_longident longident.txt in
                   let ic =
                     {
                       ic_name = Odoc_env.full_class_or_class_type_name env name ;
@@ -414,7 +421,7 @@ module Analyser =
 
               | Parsetree.Pcty_signature _
               | Parsetree.Pcty_fun _ ->
-                  (* we don't have a name for the class signature, so we call it "object ... end"  *)
+                    (* we don't have a name for the class signature, so we call it "object ... end"  *)
                   {
                     ic_name = Odoc_messages.object_end ;
                     ic_class = None ;
@@ -459,6 +466,7 @@ module Analyser =
                 signat
                 table
                 current_module_name
+                ele.Parsetree.psig_loc
                 ele.Parsetree.psig_loc.Location.loc_start.Lexing.pos_cnum
                 ele.Parsetree.psig_loc.Location.loc_end.Lexing.pos_cnum
                 (match q with
@@ -481,15 +489,15 @@ module Analyser =
     (** Analyse the given signature_item_desc to create the corresponding module element
        (with the given attached comment).*)
     and analyse_signature_item_desc env signat table current_module_name
-        pos_start_ele pos_end_ele pos_limit comment_opt sig_item_desc =
+        sig_item_loc pos_start_ele pos_end_ele pos_limit comment_opt sig_item_desc =
         match sig_item_desc with
           Parsetree.Psig_value (name_pre, value_desc) ->
             let type_expr =
-              try Signature_search.search_value table name_pre
+              try Signature_search.search_value table name_pre.txt
               with Not_found ->
-                raise (Failure (Odoc_messages.value_not_found current_module_name name_pre))
+                raise (Failure (Odoc_messages.value_not_found current_module_name name_pre.txt))
             in
-            let name = Name.parens_if_infix name_pre in
+            let name = Name.parens_if_infix name_pre.txt in
             let subst_typ = Odoc_env.subst_type env type_expr in
             let v =
               {
@@ -499,7 +507,7 @@ module Analyser =
                 val_recursive = false ;
                 val_parameters = Odoc_value.dummy_parameter_list subst_typ ;
                 val_code = None ;
-                val_loc = { loc_impl = None ; loc_inter = Some (!file_name, pos_start_ele)}
+                val_loc = { loc_impl = None ; loc_inter = Some sig_item_loc } ;
               }
             in
             let (maybe_more, info_after_opt) =
@@ -516,17 +524,17 @@ module Analyser =
 
         | Parsetree.Psig_exception (name, exception_decl) ->
             let types_excep_decl =
-              try Signature_search.search_exception table name
+              try Signature_search.search_exception table name.txt
               with Not_found ->
-                raise (Failure (Odoc_messages.exception_not_found current_module_name name))
+                raise (Failure (Odoc_messages.exception_not_found current_module_name name.txt))
             in
             let e =
               {
-                ex_name = Name.concat current_module_name name ;
+                ex_name = Name.concat current_module_name name.txt ;
                 ex_info = comment_opt ;
                 ex_args = List.map (Odoc_env.subst_type env) types_excep_decl.exn_args ;
                 ex_alias = None ;
-                ex_loc = { loc_impl = None ; loc_inter = Some (!file_name, pos_start_ele) } ;
+                ex_loc = { loc_impl = None ; loc_inter = Some sig_item_loc } ;
                 ex_code =
                    (
                     if !Odoc_global.keep_code then
@@ -550,7 +558,7 @@ module Analyser =
             let new_env =
               List.fold_left
                 (fun acc_env -> fun (name, _) ->
-                  let complete_name = Name.concat current_module_name name in
+                  let complete_name = Name.concat current_module_name name.txt in
                   Odoc_env.add_type acc_env complete_name
                 )
                 env
@@ -572,7 +580,7 @@ module Analyser =
                   let pos_limit2 =
                     match q with
                       [] -> pos_limit
-                    | (_, td) :: _ -> td.Parsetree.ptype_loc.Location.loc_start.Lexing.pos_cnum
+                    | ( _, td) :: _ -> td.Parsetree.ptype_loc.Location.loc_start.Lexing.pos_cnum
                   in
                   let (maybe_more, name_comment_list) =
                     name_comment_from_type_kind
@@ -580,14 +588,14 @@ module Analyser =
                       pos_limit2
                       type_decl.Parsetree.ptype_kind
                   in
-                  print_DEBUG ("Type "^name^" : "^(match assoc_com with None -> "sans commentaire" | Some c -> Odoc_misc.string_of_info c));
+                  print_DEBUG ("Type "^name.txt^" : "^(match assoc_com with None -> "sans commentaire" | Some c -> Odoc_misc.string_of_info c));
                   let f_DEBUG (name, c_opt) = print_DEBUG ("constructor/field "^name^": "^(match c_opt with None -> "sans commentaire" | Some c -> Odoc_misc.string_of_info c)) in
                   List.iter f_DEBUG name_comment_list;
                   (* get the information for the type in the signature *)
                   let sig_type_decl =
-                    try Signature_search.search_type table name
+                    try Signature_search.search_type table name.txt
                     with Not_found ->
-                      raise (Failure (Odoc_messages.type_not_found current_module_name name))
+                      raise (Failure (Odoc_messages.type_not_found current_module_name name.txt))
                   in
                   (* get the type kind with the associated comments *)
                   let type_kind = get_type_kind new_env name_comment_list sig_type_decl.Types.type_kind in
@@ -596,7 +604,7 @@ module Analyser =
                   (* associate the comments to each constructor and build the [Type.t_type] *)
                   let new_type =
                     {
-                      ty_name = Name.concat current_module_name name ;
+                      ty_name = Name.concat current_module_name name.txt ;
                       ty_info = assoc_com ;
                       ty_parameters =
                         List.map2 (fun p (co,cn,_) ->
@@ -611,10 +619,7 @@ module Analyser =
                       (match sig_type_decl.Types.type_manifest with
                         None -> None
                       | Some t -> Some (Odoc_env.subst_type new_env t));
-                      ty_loc =
-                      { loc_impl = None ;
-                        loc_inter = Some (!file_name,loc_start) ;
-                      };
+                      ty_loc = { loc_impl = None ;  loc_inter = Some sig_item_loc } ;
                       ty_code =
                         (
                          if !Odoc_global.keep_code then
@@ -651,12 +656,12 @@ module Analyser =
             (0, env, ele_comments)
 
         | Parsetree.Psig_module (name, module_type) ->
-            let complete_name = Name.concat current_module_name name in
+            let complete_name = Name.concat current_module_name name.txt in
             (* get the the module type in the signature by the module name *)
             let sig_module_type =
-              try Signature_search.search_module table name
+              try Signature_search.search_module table name.txt
               with Not_found ->
-                raise (Failure (Odoc_messages.module_not_found current_module_name name))
+                raise (Failure (Odoc_messages.module_not_found current_module_name name.txt))
             in
             let module_kind = analyse_module_kind env complete_name module_type sig_module_type in
             let code_intf =
@@ -676,7 +681,7 @@ module Analyser =
                 m_is_interface = true ;
                 m_file = !file_name ;
                 m_kind = module_kind ;
-                m_loc = { loc_impl = None ; loc_inter = Some (!file_name, pos_start_ele) } ;
+                m_loc = { loc_impl = None ; loc_inter = Some sig_item_loc } ;
                 m_top_deps = [] ;
                 m_code = None ;
                 m_code_intf = code_intf ;
@@ -692,7 +697,7 @@ module Analyser =
             let new_env = Odoc_env.add_module env new_module.m_name in
             let new_env2 =
               match new_module.m_type with (* A VOIR : cela peut-il Ãªtre Tmty_ident ? dans ce cas, on aurait pas la signature *)
-                Types.Tmty_signature s -> Odoc_env.add_signature new_env new_module.m_name ~rel: (Name.simple new_module.m_name) s
+                Types.Mty_signature s -> Odoc_env.add_signature new_env new_module.m_name ~rel: (Name.simple new_module.m_name) s
               | _ -> new_env
             in
             (maybe_more, new_env2, [ Element_module new_module ])
@@ -701,7 +706,7 @@ module Analyser =
             (* we start by extending the environment *)
             let new_env =
               List.fold_left
-                (fun acc_env -> fun (name, _) ->
+                (fun acc_env -> fun ({ txt = name }, _) ->
                   let complete_name = Name.concat current_module_name name in
                   let e = Odoc_env.add_module acc_env complete_name in
                   (* get the information for the module in the signature *)
@@ -712,7 +717,7 @@ module Analyser =
                   in
                   match sig_module_type with
                     (* A VOIR : cela peut-il Ãªtre Tmty_ident ? dans ce cas, on aurait pas la signature *)
-                    Types.Tmty_signature s ->
+                    Types.Mty_signature s ->
                       Odoc_env.add_signature e complete_name ~rel: name s
                   | _ ->
                       print_DEBUG "not a Tmty_signature";
@@ -726,9 +731,10 @@ module Analyser =
                 [] ->
                   (acc_maybe_more, [])
               | (name, modtype) :: q ->
-                  let complete_name = Name.concat current_module_name name in
-                  let loc_start = modtype.Parsetree.pmty_loc.Location.loc_start.Lexing.pos_cnum in
-                  let loc_end = modtype.Parsetree.pmty_loc.Location.loc_end.Lexing.pos_cnum in
+                  let complete_name = Name.concat current_module_name name.txt in
+                  let loc = modtype.Parsetree.pmty_loc in
+                  let loc_start = loc.Location.loc_start.Lexing.pos_cnum in
+                  let loc_end = loc.Location.loc_end.Lexing.pos_cnum in
                   let (assoc_com, ele_comments) =
                     if first then
                       (comment_opt, [])
@@ -740,19 +746,18 @@ module Analyser =
                   let pos_limit2 =
                     match q with
                       [] -> pos_limit
-                    | (_, mty) :: _ -> mty.Parsetree.pmty_loc.Location.loc_start.Lexing.pos_cnum
+                    | (_, mty) :: _ -> loc.Location.loc_start.Lexing.pos_cnum
                   in
                   (* get the information for the module in the signature *)
                   let sig_module_type =
-                    try Signature_search.search_module table name
+                    try Signature_search.search_module table name.txt
                     with Not_found ->
-                      raise (Failure (Odoc_messages.module_not_found current_module_name name))
+                      raise (Failure (Odoc_messages.module_not_found current_module_name name.txt))
                   in
                   (* associate the comments to each constructor and build the [Type.t_type] *)
                   let module_kind = analyse_module_kind new_env complete_name modtype sig_module_type in
                   let code_intf =
                     if !Odoc_global.keep_code then
-                      let loc = modtype.Parsetree.pmty_loc in
                       let st = loc.Location.loc_start.Lexing.pos_cnum in
                       let en = loc.Location.loc_end.Lexing.pos_cnum in
                       Some (get_string_of_file st en)
@@ -767,7 +772,7 @@ module Analyser =
                       m_is_interface = true ;
                       m_file = !file_name ;
                       m_kind = module_kind ;
-                      m_loc = { loc_impl = None ; loc_inter = Some (!file_name, pos_start_ele) } ;
+                      m_loc = { loc_impl = None ; loc_inter = Some loc } ;
                       m_top_deps = [] ;
                       m_code = None ;
                       m_code_intf = code_intf ;
@@ -792,11 +797,11 @@ module Analyser =
             (maybe_more, new_env, mods)
 
         | Parsetree.Psig_modtype (name, pmodtype_decl) ->
-            let complete_name = Name.concat current_module_name name in
+            let complete_name = Name.concat current_module_name name.txt in
             let sig_mtype =
-              try Signature_search.search_module_type table name
+              try Signature_search.search_module_type table name.txt
               with Not_found ->
-                raise (Failure (Odoc_messages.module_type_not_found current_module_name name))
+                raise (Failure (Odoc_messages.module_type_not_found current_module_name name.txt))
             in
             let module_type_kind =
               match pmodtype_decl with
@@ -815,7 +820,7 @@ module Analyser =
                 mt_is_interface = true ;
                 mt_file = !file_name ;
                 mt_kind = module_type_kind ;
-                mt_loc = { loc_impl = None ; loc_inter = Some (!file_name, pos_start_ele) } ;
+                mt_loc = { loc_impl = None ; loc_inter = Some sig_item_loc } ;
               }
             in
             let (maybe_more, info_after_opt) =
@@ -827,7 +832,7 @@ module Analyser =
             let new_env = Odoc_env.add_module_type env mt.mt_name in
             let new_env2 =
               match sig_mtype with (* A VOIR : cela peut-il Ãªtre Tmty_ident ? dans ce cas, on aurait pas la signature *)
-                Some (Types.Tmty_signature s) -> Odoc_env.add_signature new_env mt.mt_name ~rel: (Name.simple mt.mt_name) s
+                Some (Types.Mty_signature s) -> Odoc_env.add_signature new_env mt.mt_name ~rel: (Name.simple mt.mt_name) s
               | _ -> new_env
             in
             (maybe_more, new_env2, [ Element_module_type mt ])
@@ -835,7 +840,7 @@ module Analyser =
         | Parsetree.Psig_include module_type ->
             let rec f = function
                 Parsetree.Pmty_ident longident ->
-                  Name.from_longident longident
+                  Name.from_longident longident.txt
               | Parsetree.Pmty_signature _ ->
                   "??"
               | Parsetree.Pmty_functor _ ->
@@ -844,7 +849,7 @@ module Analyser =
                   f mt.Parsetree.pmty_desc
               | Parsetree.Pmty_typeof mexpr ->
                   match mexpr.Parsetree.pmod_desc with
-                    Parsetree.Pmod_ident longident -> Name.from_longident longident
+                    Parsetree.Pmod_ident longident -> Name.from_longident longident.txt
                   | _ -> "??"
             in
             let name = f module_type.Parsetree.pmty_desc in
@@ -863,7 +868,7 @@ module Analyser =
             let new_env =
               List.fold_left
                 (fun acc_env -> fun class_desc ->
-                  let complete_name = Name.concat current_module_name class_desc.Parsetree.pci_name in
+                  let complete_name = Name.concat current_module_name class_desc.Parsetree.pci_name.txt in
                   Odoc_env.add_class acc_env complete_name
                 )
                 env
@@ -889,11 +894,11 @@ module Analyser =
                     | cd :: _ -> cd.Parsetree.pci_loc.Location.loc_start.Lexing.pos_cnum
                   in
                   let name = class_desc.Parsetree.pci_name in
-                  let complete_name = Name.concat current_module_name name in
+                  let complete_name = Name.concat current_module_name name.txt in
                   let sig_class_decl =
-                    try Signature_search.search_class table name
+                    try Signature_search.search_class table name.txt
                     with Not_found ->
-                      raise (Failure (Odoc_messages.class_not_found current_module_name name))
+                      raise (Failure (Odoc_messages.class_not_found current_module_name name.txt))
                   in
                   let sig_class_type = sig_class_decl.Types.cty_type in
                   let (parameters, class_kind) =
@@ -913,7 +918,7 @@ module Analyser =
                      cl_virtual = class_desc.Parsetree.pci_virt = Asttypes.Virtual ;
                      cl_kind = class_kind ;
                      cl_parameters = parameters ;
-                     cl_loc = { loc_impl = None ; loc_inter = Some (!file_name, pos_start_ele) } ;
+                     cl_loc = { loc_impl = None ; loc_inter = Some class_desc.Parsetree.pci_loc } ;
                    }
                  in
                  let (maybe_more, info_after_opt) =
@@ -939,7 +944,7 @@ module Analyser =
             let new_env =
               List.fold_left
                 (fun acc_env -> fun class_type_decl ->
-                  let complete_name = Name.concat current_module_name class_type_decl.Parsetree.pci_name in
+                  let complete_name = Name.concat current_module_name class_type_decl.Parsetree.pci_name.txt in
                   Odoc_env.add_class_type acc_env complete_name
                 )
                 env
@@ -965,11 +970,11 @@ module Analyser =
                     | ct_decl2 :: _ -> ct_decl2.Parsetree.pci_loc.Location.loc_start.Lexing.pos_cnum
                   in
                   let name = ct_decl.Parsetree.pci_name in
-                  let complete_name = Name.concat current_module_name name in
+                  let complete_name = Name.concat current_module_name name.txt in
                   let sig_cltype_decl =
-                    try Signature_search.search_class_type table name
+                    try Signature_search.search_class_type table name.txt
                     with Not_found ->
-                      raise (Failure (Odoc_messages.class_type_not_found current_module_name name))
+                      raise (Failure (Odoc_messages.class_type_not_found current_module_name name.txt))
                   in
                   let sig_class_type = sig_cltype_decl.Types.clty_type in
                   let kind = analyse_class_type_kind
@@ -987,7 +992,7 @@ module Analyser =
                       clt_type_parameters = sig_cltype_decl.clty_params ;
                       clt_virtual = ct_decl.Parsetree.pci_virt = Asttypes.Virtual ;
                       clt_kind = kind ;
-                      clt_loc = { loc_impl = None ; loc_inter = Some (!file_name, pos_start_ele) } ;
+                      clt_loc = { loc_impl = None ; loc_inter = Some ct_decl.Parsetree.pci_loc } ;
                     }
                   in
                   let (maybe_more, info_after_opt) =
@@ -1013,8 +1018,8 @@ module Analyser =
         Parsetree.Pmty_ident longident ->
           let name =
             match sig_module_type with
-              Types.Tmty_ident path -> Name.from_path path
-            | _ -> Name.from_longident longident
+              Types.Mty_ident path -> Name.from_path path
+            | _ -> Name.from_longident longident.txt
               (* A VOIR cela arrive quand on fait module type F : functor ... -> Toto, Toto n'est pas un ident mais une structure *)
           in
           Module_type_alias { mta_name = Odoc_env.full_module_type_name env name ;
@@ -1024,23 +1029,23 @@ module Analyser =
           (
            (* we must have a signature in the module type *)
            match sig_module_type with
-             Types.Tmty_signature signat ->
+             Types.Mty_signature signat ->
                let pos_start = module_type.Parsetree.pmty_loc.Location.loc_start.Lexing.pos_cnum in
                let pos_end = module_type.Parsetree.pmty_loc.Location.loc_end.Lexing.pos_cnum in
                let elements = analyse_parsetree env signat current_module_name pos_start pos_end ast in
                Module_type_struct elements
            | _ ->
-               raise (Failure "Parsetree.Pmty_signature signature but not Types.Tmty_signature signat")
+               raise (Failure "Parsetree.Pmty_signature signature but not Types.Mty_signature signat")
           )
 
-      | Parsetree.Pmty_functor (_,pmodule_type2, module_type2) ->
+      | Parsetree.Pmty_functor (_, pmodule_type2, module_type2) ->
           (
            let loc_start = pmodule_type2.Parsetree.pmty_loc.Location.loc_start.Lexing.pos_cnum in
            let loc_end = pmodule_type2.Parsetree.pmty_loc.Location.loc_end.Lexing.pos_cnum in
            let mp_type_code = get_string_of_file loc_start loc_end in
            print_DEBUG (Printf.sprintf "mp_type_code=%s" mp_type_code);
            match sig_module_type with
-             Types.Tmty_functor (ident, param_module_type, body_module_type) ->
+             Types.Mty_functor (ident, param_module_type, body_module_type) ->
                let mp_kind = analyse_module_type_kind env
                    current_module_name pmodule_type2 param_module_type
                in
@@ -1061,7 +1066,7 @@ module Analyser =
 
            | _ ->
                (* if we're here something's wrong *)
-               raise (Failure "Parsetree.Pmty_functor _ but not Types.Tmty_functor _")
+               raise (Failure "Parsetree.Pmty_functor _ but not Types.Mty_functor _")
           )
 
       | Parsetree.Pmty_with (module_type2, _) ->
@@ -1090,7 +1095,7 @@ module Analyser =
       | Parsetree.Pmty_signature signature ->
           (
            match sig_module_type with
-             Types.Tmty_signature signat ->
+             Types.Mty_signature signat ->
                Module_struct
                  (analyse_parsetree
                     env
@@ -1102,12 +1107,12 @@ module Analyser =
                  )
            | _ ->
                (* if we're here something's wrong *)
-               raise (Failure "Parsetree.Pmty_signature signature but not Types.Tmty_signature signat")
+               raise (Failure "Parsetree.Pmty_signature signature but not Types.Mty_signature signat")
           )
-      | Parsetree.Pmty_functor (_,pmodule_type2,module_type2) (* of string * module_type * module_type *) ->
+      | Parsetree.Pmty_functor (_, pmodule_type2,module_type2) (* of string * module_type * module_type *) ->
           (
            match sig_module_type with
-             Types.Tmty_functor (ident, param_module_type, body_module_type) ->
+             Types.Mty_functor (ident, param_module_type, body_module_type) ->
                let loc_start = pmodule_type2.Parsetree.pmty_loc.Location.loc_start.Lexing.pos_cnum in
                let loc_end = pmodule_type2.Parsetree.pmty_loc.Location.loc_end.Lexing.pos_cnum in
                let mp_type_code = get_string_of_file loc_start loc_end in
@@ -1132,7 +1137,7 @@ module Analyser =
 
            | _ ->
                (* if we're here something's wrong *)
-               raise (Failure "Parsetree.Pmty_functor _ but not Types.Tmty_functor _")
+               raise (Failure "Parsetree.Pmty_functor _ but not Types.Mty_functor _")
           )
       | Parsetree.Pmty_with (module_type2, _) ->
           (*of module_type * (Longident.t * with_constraint) list*)
@@ -1154,8 +1159,8 @@ module Analyser =
     and analyse_class_kind env current_class_name last_pos parse_class_type sig_class_type =
       match parse_class_type.Parsetree.pcty_desc, sig_class_type with
         (Parsetree.Pcty_constr (_, _) (*of Longident.t * core_type list *),
-         Types.Tcty_constr (p, typ_list, _) (*of Path.t * type_expr list * class_type*)) ->
-          print_DEBUG "Tcty_constr _";
+         Types.Cty_constr (p, typ_list, _) (*of Path.t * type_expr list * class_type*)) ->
+          print_DEBUG "Cty_constr _";
            let path_name = Name.from_path p in
            let name = Odoc_env.full_class_or_class_type_name env path_name in
            let k =
@@ -1168,7 +1173,7 @@ module Analyser =
            in
            ([], k)
 
-      | (Parsetree.Pcty_signature (_, class_type_field_list), Types.Tcty_signature class_signature) ->
+      | (Parsetree.Pcty_signature { Parsetree.pcsig_fields = class_type_field_list }, Types.Cty_signature class_signature) ->
           (* we get the elements of the class in class_type_field_list *)
           let (inher_l, ele) = analyse_class_elements env current_class_name
               last_pos
@@ -1178,7 +1183,7 @@ module Analyser =
           in
           ([], Class_structure (inher_l, ele))
 
-      | (Parsetree.Pcty_fun (parse_label, _, pclass_type), Types.Tcty_fun (label, type_expr, class_type)) ->
+      | (Parsetree.Pcty_fun (parse_label, _, pclass_type), Types.Cty_fun (label, type_expr, class_type)) ->
           (* label = string. Dans les signatures, pas de nom de paramètres Ã  l'intérieur des tuples *)
           (* si label = "", pas de label. ici on a l'information pour savoir si on a un label explicite. *)
           if parse_label = label then
@@ -1205,8 +1210,8 @@ module Analyser =
     and analyse_class_type_kind env current_class_name last_pos parse_class_type sig_class_type =
       match parse_class_type.Parsetree.pcty_desc, sig_class_type with
         (Parsetree.Pcty_constr (_, _) (*of Longident.t * core_type list *),
-         Types.Tcty_constr (p, typ_list, _) (*of Path.t * type_expr list * class_type*)) ->
-          print_DEBUG "Tcty_constr _";
+         Types.Cty_constr (p, typ_list, _) (*of Path.t * type_expr list * class_type*)) ->
+          print_DEBUG "Cty_constr _";
            let k =
              Class_type
                {
@@ -1217,7 +1222,9 @@ module Analyser =
            in
            k
 
-      | (Parsetree.Pcty_signature (_, class_type_field_list), Types.Tcty_signature class_signature) ->
+        | (Parsetree.Pcty_signature {
+              Parsetree.pcsig_fields = class_type_field_list;
+              }, Types.Cty_signature class_signature) ->
           (* we get the elements of the class in class_type_field_list *)
           let (inher_l, ele) = analyse_class_elements env current_class_name
               last_pos
@@ -1227,11 +1234,11 @@ module Analyser =
           in
           Class_signature (inher_l, ele)
 
-      | (Parsetree.Pcty_fun (parse_label, _, pclass_type), Types.Tcty_fun (label, type_expr, class_type)) ->
-          raise (Failure "analyse_class_type_kind : Parsetree.Pcty_fun (...) with Types.Tcty_fun (...)")
+      | (Parsetree.Pcty_fun (parse_label, _, pclass_type), Types.Cty_fun (label, type_expr, class_type)) ->
+          raise (Failure "analyse_class_type_kind : Parsetree.Pcty_fun (...) with Types.Cty_fun (...)")
 (*
       | (Parsetree.Pcty_constr (longident, _) (*of Longident.t * core_type list *),
-         Types.Tcty_signature class_signature) ->
+         Types.Cty_signature class_signature) ->
            (* A VOIR : c'est pour le cas des contraintes de classes :
               class type cons = object
                 method m : int
@@ -1290,12 +1297,12 @@ module Analyser =
       in
       {
         m_name = mod_name ;
-        m_type = Types.Tmty_signature signat ;
+        m_type = Types.Mty_signature signat ;
         m_info = info_opt ;
         m_is_interface = true ;
         m_file = !file_name ;
         m_kind = Module_struct elements ;
-        m_loc = { loc_impl = None ; loc_inter = Some (!file_name, 0) } ;
+        m_loc = { loc_impl = None ; loc_inter = Some (Location.in_file !file_name) } ;
         m_top_deps = [] ;
         m_code = None ;
         m_code_intf = code_intf ;
index 65ee128fc5310a8daa25489dd863cba2c6494c75..cd32997012d791f4251409dc5b6075a349aff0eb 100644 (file)
@@ -9,7 +9,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: odoc_sig.mli 12511 2012-05-30 13:29:48Z lefessan $ *)
 
 (** The module for analysing a signature and source code and creating modules, classes, ..., elements.*)
 
@@ -46,7 +46,7 @@ module Signature_search :
       (** This function returns the Types.cltype_declaration  for the class type whose name is given,
          in the given table.
          @raise Not_found if error.*)
-      val search_class_type : tab -> string -> Types.cltype_declaration
+      val search_class_type : tab -> string -> Types.class_type_declaration
 
       (** This function returns the Types.module_type  for the module whose name is given,
          in the given table.
index d420c059712de08ade56e43ecd79cfafe257b0f7..46707d38b96767cb3ec4c85275f2a2a7938fff83 100644 (file)
@@ -9,7 +9,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: odoc_str.ml 12511 2012-05-30 13:29:48Z lefessan $ *)
 
 (** The functions to get a string from different kinds of elements (types, modules, ...). *)
 
@@ -126,7 +126,7 @@ let string_of_class_type_param_list l =
 let string_of_class_params c =
   let b = Buffer.create 256 in
   let rec iter = function
-      Types.Tcty_fun (label, t, ctype) ->
+      Types.Cty_fun (label, t, ctype) ->
         let parent = is_arrow_type t in
         Printf.bprintf b "%s%s%s%s -> "
           (
@@ -144,8 +144,8 @@ let string_of_class_params c =
           )
           (if parent then ")" else "");
         iter ctype
-    | Types.Tcty_signature _
-    | Types.Tcty_constr _ -> ()
+    | Types.Cty_signature _
+    | Types.Cty_constr _ -> ()
   in
   iter c.Odoc_class.cl_type;
   Buffer.contents b
@@ -284,4 +284,4 @@ let string_of_method m =
     None -> ""
   | Some i -> Odoc_misc.string_of_info i)
 
-(* eof $Id$ *)
+(* eof $Id: odoc_str.ml 12511 2012-05-30 13:29:48Z lefessan $ *)
index 5d68c6d234a80e4a673c0498a48d2e3441805c68..1216b23722d7352ad4e0f9efb161b0fef1f9e219 100644 (file)
@@ -9,7 +9,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: odoc_str.mli 9547 2010-01-22 12:48:24Z doligez $ *)
 
 (** The functions to get a string from different kinds of elements (types, modules, ...). *)
 
index a903b1c151e5d8a44f884c3f780f96493861b2b0..4df2fb9a58ee1693a9f2d9e838fcbb1ed1777eba 100644 (file)
@@ -9,7 +9,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: odoc_test.ml 12221 2012-03-12 17:57:46Z guesdon $ *)
 
 (** Custom generator to perform test on ocamldoc. *)
 
index 5c75b4fdfa9943205bbfef5c11b9530fa8c47fad..e8f80962638aef540b11a243278d02f088afe986 100644 (file)
@@ -9,7 +9,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: odoc_texi.ml 11160 2011-07-29 10:32:43Z garrigue $ *)
 
 (** Generation of Texinfo documentation. *)
 
index e80b680ed4ded62f7f34af022e358f11073285aa..0747721e927845a0ae6b4e2b10535da85ec8f341 100644 (file)
@@ -9,7 +9,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: odoc_text.ml 12249 2012-03-20 12:00:11Z guesdon $ *)
 
 exception Text_syntax of int * int * string (* line, char, string *)
 
index f4f8e911e464e1a9215f1977b5ca8c9d1c7dfdca..f359a2445662727a706ddac3af422468dfe1164d 100644 (file)
@@ -9,7 +9,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: odoc_text.mli 9547 2010-01-22 12:48:24Z doligez $ *)
 
 (** A module with a function to parse strings to obtain a [Odoc_types.text] value. *)
 
index a4888c1a8f0a3484a20c330c3f4283fac45dcd46..fb45d1e2a9929d41307e9351e22a06ee65cc4fb0 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: odoc_text_lexer.mll 12249 2012-03-20 12:00:11Z guesdon $ *)
 
 (** The lexer for string to build text structures. *)
 
index c9d301449fc23ccd3c2939b559453579588dbee4..e9d9e70577719133210df642772bf59b8f29d5d0 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: odoc_text_parser.mly 12511 2012-05-30 13:29:48Z lefessan $ *)
 
 open Odoc_types
 
@@ -82,8 +82,9 @@ let print_DEBUG s = print_string s; print_newline ()
 %token <string> Char
 
 /* Start Symbols */
-%start main
+%start main located_element_list
 %type <Odoc_types.text> main
+%type <(int * int * Odoc_types.text_element) list> located_element_list
 
 %%
 main:
@@ -100,6 +101,16 @@ text_element_list:
 | text_element text_element_list { $1 :: $2 }
 ;
 
+located_element_list:
+  located_element { [ $1 ] }
+| located_element located_element_list { $1 :: $2 }
+;
+
+located_element:
+  text_element { Parsing.symbol_start (), Parsing.symbol_end (), $1}
+;
+
+
 ele_ref_kind:
   ELE_REF { None }
 | VAL_REF { Some RK_value }
index 591f81d613a0ecc6b61c9949065717bbe4eb9943..4e44a9ecaf1d469c44e17877bf557383afcb5207 100644 (file)
@@ -9,7 +9,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: odoc_to_text.ml 10480 2010-05-31 11:52:13Z guesdon $ *)
 
 (** Text generation.
 
index ee973a01d7c0d5db95c92b85b51bc3cc3ad23b70..b4d16810932d95a67b6ce40954175bebe8d233e2 100644 (file)
@@ -9,7 +9,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: odoc_type.ml 11160 2011-07-29 10:32:43Z garrigue $ *)
 
 (** Representation and manipulation of a type, but not class nor module type.*)
 
index 85bac555fd9209bf8387135aa1d6ece05b29e7cb..73b7ad7fa15d68b47025b6acf3739fbe0ce2d77c 100644 (file)
@@ -9,7 +9,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: odoc_types.ml 12435 2012-05-07 10:31:18Z guesdon $ *)
 
 type ref_kind =
     RK_module
@@ -93,8 +93,8 @@ let dummy_info = {
 }
 
 type location = {
-    loc_impl : (string * int) option ;
-    loc_inter : (string * int) option ;
+    loc_impl : Location.t option ;
+    loc_inter : Location.t option ;
   }
 
 let dummy_loc = { loc_impl = None ; loc_inter = None }
index 124beba1b54db77f6b301716a4fcaec51845fcf8..ee380e7a8980e6d587a6ba9e38c7ce5e8dc30e73 100644 (file)
@@ -9,7 +9,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: odoc_types.mli 12435 2012-05-07 10:31:18Z guesdon $ *)
 
 (** Types for the information collected in comments. *)
 
@@ -96,8 +96,8 @@ val dummy_info : info
 
 (** Location of elements in implementation and interface files. *)
 type location = {
-    loc_impl : (string * int) option ; (** implementation file name and position *)
-    loc_inter : (string * int) option ; (** interface file name and position *)
+    loc_impl : Location.t option ; (** implementation location *)
+    loc_inter : Location.t option ; (** interface location *)
   }
 
 (** A dummy location. *)
index c8881ddfd8e767289caf95418777c1f716d805b4..b7487f53a69cbd73d696256dbf4353fd211eb5b3 100644 (file)
@@ -9,7 +9,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: odoc_value.ml 11210 2011-09-22 09:05:42Z garrigue $ *)
 
 (** Representation and manipulation of values, class attributes and class methods. *)
 
index b8550e252e7cb2436a8c5f8b6c5c6315ed4d29b9..691c4899c8fc0d6ad46d49b07fb261c2d4a740d8 100755 (executable)
@@ -11,7 +11,7 @@
 #(*                                                                     *)
 #(***********************************************************************)
 
-# $Id$
+# $Id: remove_DEBUG 11156 2011-07-27 14:17:02Z doligez $
 
 # usage: remove_DEBUG <file>
 # remove from <file> every line that contains the string "DEBUG",
index 3aba71923a14954fd0eccdc3c5c7771aec30e880..6ef1235baad4b7b98ce8e4338794f8aad8b60284 100644 (file)
@@ -12,7 +12,7 @@
 #                                                                     #
 #######################################################################
 
-# $Id$
+# $Id: runocamldoc 11156 2011-07-27 14:17:02Z doligez $
 
 case "$1" in
   true) shift
index fba032df85bc09323e09bb01ae66283352a8a857..014b89defa8cf0debcd4ed81b64fc1508c0edbd7 100644 (file)
@@ -11,7 +11,7 @@
 #                                                                       #
 #########################################################################
 
-# $Id$
+# $Id: Makefile 11156 2011-07-27 14:17:02Z doligez $
 
 # Common Makefile for otherlibs on the Unix ports
 
index ceab7f0c5945604b4dc5c44262d7fc79be3257ae..e0f9546884c9bb81ad28e19aad9c933da6443e42 100644 (file)
@@ -11,7 +11,7 @@
 #                                                                       #
 #########################################################################
 
-# $Id$
+# $Id: Makefile.nt 11156 2011-07-27 14:17:02Z doligez $
 
 # Common Makefile for otherlibs on the Win32/MinGW ports
 
index 08e9abb1d588e0b918c8ae0640b7060aaec5f46c..2c084a02f7aba06cc0b9d26679256d4499c94909 100644 (file)
@@ -11,7 +11,7 @@
 #                                                                       #
 #########################################################################
 
-# $Id$
+# $Id: Makefile.shared 11156 2011-07-27 14:17:02Z doligez $
 
 # Common Makefile for otherlibs
 
index 889328a3336389931baff08cd9fbba36379ca0da..d19e796b38fd3d9084cf1ef0d2330fdfd7495d62 100644 (file)
@@ -1,21 +1,21 @@
 bigarray_stubs.o: bigarray_stubs.c ../../byterun/alloc.h \
 ../../byterun/misc.h ../../byterun/config.h ../../byterun/../config/m.h \
 ../../byterun/../config/s.h ../../byterun/mlvalues.h bigarray.h \
 ../../byterun/config.h ../../byterun/mlvalues.h ../../byterun/custom.h \
 ../../byterun/fail.h ../../byterun/intext.h ../../byterun/io.h \
 ../../byterun/hash.h ../../byterun/memory.h ../../byterun/gc.h \
 ../../byterun/major_gc.h ../../byterun/freelist.h \
 ../../byterun/minor_gc.h
+ ../../byterun/misc.h ../../byterun/config.h ../../byterun/../config/m.h \
+ ../../byterun/../config/s.h ../../byterun/mlvalues.h bigarray.h \
+ ../../byterun/config.h ../../byterun/mlvalues.h ../../byterun/custom.h \
+ ../../byterun/fail.h ../../byterun/intext.h ../../byterun/io.h \
+ ../../byterun/hash.h ../../byterun/memory.h ../../byterun/gc.h \
+ ../../byterun/major_gc.h ../../byterun/freelist.h \
+ ../../byterun/minor_gc.h
 mmap_unix.o: mmap_unix.c bigarray.h ../../byterun/config.h \
 ../../byterun/../config/m.h ../../byterun/../config/s.h \
 ../../byterun/mlvalues.h ../../byterun/config.h ../../byterun/misc.h \
 ../../byterun/custom.h ../../byterun/mlvalues.h ../../byterun/fail.h \
 ../../byterun/io.h ../../byterun/sys.h ../../byterun/signals.h
+ ../../byterun/../config/m.h ../../byterun/../config/s.h \
+ ../../byterun/mlvalues.h ../../byterun/config.h ../../byterun/misc.h \
+ ../../byterun/custom.h ../../byterun/mlvalues.h ../../byterun/fail.h \
+ ../../byterun/io.h ../../byterun/sys.h ../../byterun/signals.h
 mmap_win32.o: mmap_win32.c bigarray.h ../../byterun/config.h \
 ../../byterun/../config/m.h ../../byterun/../config/s.h \
 ../../byterun/mlvalues.h ../../byterun/config.h ../../byterun/misc.h \
 ../../byterun/alloc.h ../../byterun/mlvalues.h ../../byterun/custom.h \
 ../../byterun/fail.h ../../byterun/sys.h ../unix/unixsupport.h
+ ../../byterun/../config/m.h ../../byterun/../config/s.h \
+ ../../byterun/mlvalues.h ../../byterun/config.h ../../byterun/misc.h \
+ ../../byterun/alloc.h ../../byterun/mlvalues.h ../../byterun/custom.h \
+ ../../byterun/fail.h ../../byterun/sys.h ../unix/unixsupport.h
 bigarray.cmi :
 bigarray.cmo : bigarray.cmi
 bigarray.cmx : bigarray.cmi
index 83b31525860b73897ba4a1f63e5a62a1de025c74..d442edb758a1afc49cffcd3752d101745c167562 100644 (file)
@@ -11,7 +11,7 @@
 #                                                                       #
 #########################################################################
 
-# $Id$
+# $Id: Makefile 11156 2011-07-27 14:17:02Z doligez $
 
 LIBNAME=bigarray
 EXTRACFLAGS=-I../unix -DIN_OCAML_BIGARRAY -DCAML_NAME_SPACE
index e845ad62e0d75860e4894bd3753c683966411f69..85e35ea8268e444fab7161656ff496da8ee82e70 100644 (file)
@@ -11,7 +11,7 @@
 #                                                                       #
 #########################################################################
 
-# $Id$
+# $Id: Makefile.nt 11156 2011-07-27 14:17:02Z doligez $
 
 LIBNAME=bigarray
 EXTRACFLAGS=-I../win32unix -DIN_OCAML_BIGARRAY -DCAML_NAME_SPACE
index f6552107a6b2301386d1a51e1aa53a1d6a9dfc04..7cd7052ee3e74477ad58bbcca9477a5f27cf62d7 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: bigarray.h 12311 2012-04-03 13:49:17Z xleroy $ */
 
 #ifndef CAML_BIGARRAY_H
 #define CAML_BIGARRAY_H
index b9f22b18286e762877a4da0be0e58bc9213f9949..2d2cdf1cb945f7870a4bb92133b5b36385f6af9b 100644 (file)
@@ -11,7 +11,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: bigarray.ml 12433 2012-05-06 08:23:37Z xleroy $ *)
 
 (* Module [Bigarray]: large, multi-dimensional, numerical arrays *)
 
@@ -99,8 +99,6 @@ module Genarray = struct
                      = "caml_ba_map_file_bytecode" "caml_ba_map_file"
   let map_file fd ?(pos = 0L) kind layout shared dims =
     map_internal fd kind layout shared dims pos
-  external release: ('a, 'b, 'c) t -> unit
-     = "caml_ba_release"
 end
 
 module Array1 = struct
@@ -124,8 +122,6 @@ module Array1 = struct
     ba
   let map_file fd ?pos kind layout shared dim =
     Genarray.map_file fd ?pos kind layout shared [|dim|]
-  external release: ('a, 'b, 'c) t -> unit
-     = "caml_ba_release"
 end
 
 module Array2 = struct
@@ -165,8 +161,6 @@ module Array2 = struct
     ba
   let map_file fd ?pos kind layout shared dim1 dim2 =
     Genarray.map_file fd ?pos kind layout shared [|dim1;dim2|]
-  external release: ('a, 'b, 'c) t -> unit
-     = "caml_ba_release"
 end
 
 module Array3 = struct
@@ -216,8 +210,6 @@ module Array3 = struct
     ba
   let map_file fd ?pos kind layout shared dim1 dim2 dim3 =
     Genarray.map_file fd ?pos kind layout shared [|dim1;dim2;dim3|]
-  external release: ('a, 'b, 'c) t -> unit
-     = "caml_ba_release"
 end
 
 external genarray_of_array1: ('a, 'b, 'c) Array1.t -> ('a, 'b, 'c) Genarray.t
index 73c27b575043c96707715418b4dd07277b5c6031..88c8cce92c0cc65d1c6ce64e1fb03c5f9b782342 100644 (file)
@@ -11,7 +11,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: bigarray.mli 12433 2012-05-06 08:23:37Z xleroy $ *)
 
 (** Large, multi-dimensional, numerical arrays.
 
@@ -426,27 +426,7 @@ module Genarray :
      or a SIGBUS signal may be raised. This happens, for instance, if the
      file is shrinked. *)
 
-  val release: ('a, 'b, 'c) t -> unit
-  (** Release the resources associated with the given big array,
-     then set all of its dimensions to 0, causing subsequent accesses
-     to the big array to fail.  This releasing of resources is performed
-     automatically by the garbage collector when the big array is no longer
-     referenced by the program.  However, memory behavior of the program
-     can be improved by releasing the resources explicitly via
-     [Genarray.release] as soon as the big array is no longer useful.
-
-     If the big array was created with [Genarray.create], the memory
-     space occupied by its data is freed.  If the big array was
-     created with [Genarray.map_file], updates performed on the array
-     are flushed to the file (if the mapping is shared), then the
-     mapping is removed, freeing the corresponding virtual memory
-     space.  If several views on the big array data were created
-     using [Genarray.sub_*] or [Genarray.slice_*], data release occurs
-     when the last not-yet-released view is released.  Multiple calls
-     to [Genarray.release] on the same big array are safe: the second
-     and subsequent calls have no effect. *)
-
-end
+  end
 
 (** {6 One-dimensional arrays} *)
 
@@ -516,20 +496,16 @@ module Array1 : sig
   (** Memory mapping of a file as a one-dimensional big array.
      See {!Bigarray.Genarray.map_file} for more details. *)
 
-  val release: ('a, 'b, 'c) t -> unit
-  (** Explicit release of the resources associated with the big array.
-     See {!Bigarray.Genarray.release} for more details. *)
-
   external unsafe_get: ('a, 'b, 'c) t -> int -> 'a = "%caml_ba_unsafe_ref_1"
   (** Like {!Bigarray.Array1.get}, but bounds checking is not always performed.
       Use with caution and only when the program logic guarantees that
-      the access is within bounds and the big array has not been released. *)
+      the access is within bounds. *)
 
   external unsafe_set: ('a, 'b, 'c) t -> int -> 'a -> unit
                      = "%caml_ba_unsafe_set_1"
   (** Like {!Bigarray.Array1.set}, but bounds checking is not always performed.
       Use with caution and only when the program logic guarantees that
-      the access is within bounds and the big array has not been released. *)
+      the access is within bounds. *)
 
 end
 
@@ -625,21 +601,15 @@ module Array2 :
   (** Memory mapping of a file as a two-dimensional big array.
      See {!Bigarray.Genarray.map_file} for more details. *)
 
-  val release: ('a, 'b, 'c) t -> unit
-  (** Explicit release of the resources associated with the big array.
-     See {!Bigarray.Genarray.release} for more details. *)
-
   external unsafe_get: ('a, 'b, 'c) t -> int -> int -> 'a
                      = "%caml_ba_unsafe_ref_2"
-  (** Like {!Bigarray.Array2.get}, but bounds checking is not always performed.
-      Use with caution and only when the program logic guarantees that
-      the access is within bounds and the big array has not been released. *)
+  (** Like {!Bigarray.Array2.get}, but bounds checking is not always
+      performed. *)
 
   external unsafe_set: ('a, 'b, 'c) t -> int -> int -> 'a -> unit
                      = "%caml_ba_unsafe_set_2"
-  (** Like {!Bigarray.Array2.set}, but bounds checking is not always performed.
-      Use with caution and only when the program logic guarantees that
-      the access is within bounds and the big array has not been released. *)
+  (** Like {!Bigarray.Array2.set}, but bounds checking is not always
+      performed. *)
 
 end
 
@@ -759,21 +729,15 @@ module Array3 :
   (** Memory mapping of a file as a three-dimensional big array.
      See {!Bigarray.Genarray.map_file} for more details. *)
 
-  val release: ('a, 'b, 'c) t -> unit
-  (** Explicit release of the resources associated with the big array.
-     See {!Bigarray.Genarray.release} for more details. *)
-
   external unsafe_get: ('a, 'b, 'c) t -> int -> int -> int -> 'a
                      = "%caml_ba_unsafe_ref_3"
-  (** Like {!Bigarray.Array3.get}, but bounds checking is not always performed.
-      Use with caution and only when the program logic guarantees that
-      the access is within bounds and the big array has not been released. *)
+  (** Like {!Bigarray.Array3.get}, but bounds checking is not always
+      performed. *)
 
   external unsafe_set: ('a, 'b, 'c) t -> int -> int -> int -> 'a -> unit
                      = "%caml_ba_unsafe_set_3"
-  (** Like {!Bigarray.Array3.set}, but bounds checking is not always performed.
-      Use with caution and only when the program logic guarantees that
-      the access is within bounds and the big array has not been released. *)
+  (** Like {!Bigarray.Array3.set}, but bounds checking is not always
+      performed. *)
 
 end
 
index 4021b74aeed5c003067ccac0b81bd3e16ad2d6b0..7d63a97fb602c58b31aa91b118a192231c7f117d 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: bigarray_stubs.c 12433 2012-05-06 08:23:37Z xleroy $ */
 
 #include <stddef.h>
 #include <stdarg.h>
@@ -496,19 +496,18 @@ CAMLprim value caml_ba_layout(value vb)
   return Val_int(Caml_ba_array_val(vb)->flags & CAML_BA_LAYOUT_MASK);
 }
 
-/* Finalization / release of a big array */
+/* Finalization of a big array */
 
 static void caml_ba_finalize(value v)
 {
   struct caml_ba_array * b = Caml_ba_array_val(v);
-  intnat i;
 
   switch (b->flags & CAML_BA_MANAGED_MASK) {
   case CAML_BA_EXTERNAL:
     break;
   case CAML_BA_MANAGED:
     if (b->proxy == NULL) {
-      free(b->data);            /* no op if b->data = NULL */
+      free(b->data);
     } else {
       if (-- b->proxy->refcount == 0) {
         free(b->proxy->data);
@@ -527,17 +526,6 @@ static void caml_ba_finalize(value v)
     }
     break;
   }
-  /* Make sure that subsequent accesses to the bigarray fail (empty bounds)
-     and that subsequent calls to caml_ba_finalize do nothing. */
-  for (i = 0; i < b->num_dims; i++) b->dim[i] = 0;
-  b->data = NULL;
-  b->proxy = NULL;
-}
-
-CAMLprim value caml_ba_release(value v)
-{
-  caml_ba_finalize(v);
-  return Val_unit;
 }
 
 /* Comparison of two big arrays */
index 30294cc4bbe07d5e54a82b2329924e80808371b3..ec0bfec65eacc8a07eff2c1ded8177d01b26b0ec 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: mmap_unix.c 12326 2012-04-09 10:22:59Z xleroy $ */
 
 #include <stddef.h>
 #include <string.h>
index ded2270ee66c1065c34e0f36636a937288a7622a..00ab152a6916c306ac842f331c98989cd4ce1427 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: mmap_win32.c 12149 2012-02-10 16:15:24Z doligez $ */
 
 #include <stddef.h>
 #include <stdio.h>
index e6a632956b103a8393890b2aa5438573e48da2d2..1a6b450b91f0bd3d90de34bc95bd398abc4ac4d3 100644 (file)
@@ -11,7 +11,7 @@
 #                                                                       #
 #########################################################################
 
-# $Id$
+# $Id: Makefile 12511 2012-05-30 13:29:48Z lefessan $
 
 # Makefile for the dynamic link library
 
@@ -33,7 +33,7 @@ COMPILEROBJS=\
   ../../typing/ident.cmo ../../typing/path.cmo \
   ../../typing/primitive.cmo ../../typing/types.cmo \
   ../../typing/btype.cmo ../../typing/subst.cmo ../../typing/predef.cmo \
-  ../../typing/datarepr.cmo ../../typing/env.cmo \
+  ../../typing/datarepr.cmo ../../typing/cmi_format.cmo ../../typing/env.cmo \
   ../../bytecomp/lambda.cmo ../../bytecomp/instruct.cmo \
   ../../bytecomp/cmo_format.cmi ../../bytecomp/opcodes.cmo \
   ../../bytecomp/runtimedef.cmo ../../bytecomp/bytesections.cmo \
index 31ee136d618a2992748827c51f8612f5ba378988..1ff250a73523d50c043abd0f6029e6ef90e645b2 100644 (file)
@@ -11,7 +11,7 @@
 #                                                                       #
 #########################################################################
 
-# $Id$
+# $Id: Makefile.nt 11156 2011-07-27 14:17:02Z doligez $
 
 # Makefile for the dynamic link library
 
index 7415ae6c2d961eaf2ef92f9d4c649e6c2ca1f018..672a4c4920bdaceb76ea69987f353fd836ee92bd 100644 (file)
@@ -11,7 +11,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: dynlink.ml 12511 2012-05-30 13:29:48Z lefessan $ *)
 
 (* Dynamic loading of .cmo files *)
 
@@ -126,13 +126,13 @@ let digest_interface unit loadpath =
       close_in ic;
       raise(Error(Corrupted_interface filename))
     end;
-    ignore (input_value ic);
+    let cmi = Cmi_format.input_cmi ic in
+    close_in ic;
     let crc =
-      match input_value ic with
+      match cmi.Cmi_format.cmi_crcs with
         (_, crc) :: _ -> crc
       | _             -> raise(Error(Corrupted_interface filename))
     in
-    close_in ic;
     crc
   with End_of_file | Failure _ ->
     close_in ic;
@@ -190,7 +190,7 @@ let load_compunit ic file_name file_digest compunit =
       | _ -> assert false in
     raise(Error(Linking_error (file_name, new_error)))
   end;
-  (* PR#5215: identify this code fragment by 
+  (* PR#5215: identify this code fragment by
      digest of file contents + unit name.
      Unit name is needed for .cma files, which produce several code fragments.*)
   let digest = Digest.string (file_digest ^ compunit.cu_name) in
index 849f1e148e2f93e968317cdd49ab215802646cd4..914231f1b5176fc53bb9b5d0ec2714501aaee1ce 100644 (file)
@@ -11,7 +11,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: dynlink.mli 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (** Dynamic loading of object files. *)
 
index 783e624af91a87fc039445c668a48b00d6da1512..67b9538e838e55412b6c81cff2f33df9699a53ec 100644 (file)
@@ -1,5 +1,5 @@
 Misc Config Clflags Tbl Consistbl
-Terminfo Warnings Asttypes Linenum Location Longident
+Terminfo Warnings Asttypes Location Longident
 Ident Path Primitive Types Btype Subst Predef
-Datarepr Env Lambda Instruct Cmo_format Opcodes
+Datarepr Cmi_format Env Lambda Instruct Cmo_format Opcodes
 Runtimedef Bytesections Dll Meta Symtable
index 672ca6ea97130ff6d1a34c7a50453a14195fd412..1e1fc768c19399e7b3f6aa27e2b6225d6f3d0f9b 100644 (file)
@@ -11,7 +11,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: extract_crc.ml 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (* Print the digests of unit interfaces *)
 
index d980a7b901a637c78c1afb0d79d34107cf388882..2eedc8e91182e8259ae5870a6848b16a8a54a83b 100644 (file)
@@ -11,7 +11,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: natdynlink.ml 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (* Dynamic loading of .cmx files *)
 
index f72f26bd7d1440d69c7a612c7700364f9870dcfd..b4b531d43ae298b054e6a28dfc3bad24e9f45fe7 100644 (file)
-color.o: color.c libgraph.h /opt/local/include/X11/Xlib.h \
-  /opt/local/include/X11/X.h /opt/local/include/X11/Xfuncproto.h \
-  /opt/local/include/X11/Xosdefs.h /opt/local/include/X11/Xutil.h \
-  /opt/local/include/X11/keysym.h /opt/local/include/X11/keysymdef.h \
-  ../../byterun/mlvalues.h ../../byterun/compatibility.h \
-  ../../byterun/config.h ../../byterun/../config/m.h \
-  ../../byterun/../config/s.h ../../byterun/misc.h \
-  /opt/local/include/X11/Xatom.h
-draw.o: draw.c libgraph.h /opt/local/include/X11/Xlib.h \
-  /opt/local/include/X11/X.h /opt/local/include/X11/Xfuncproto.h \
-  /opt/local/include/X11/Xosdefs.h /opt/local/include/X11/Xutil.h \
-  /opt/local/include/X11/keysym.h /opt/local/include/X11/keysymdef.h \
-  ../../byterun/mlvalues.h ../../byterun/compatibility.h \
-  ../../byterun/config.h ../../byterun/../config/m.h \
-  ../../byterun/../config/s.h ../../byterun/misc.h ../../byterun/alloc.h \
-  ../../byterun/mlvalues.h
-dump_img.o: dump_img.c libgraph.h /opt/local/include/X11/Xlib.h \
-  /opt/local/include/X11/X.h /opt/local/include/X11/Xfuncproto.h \
-  /opt/local/include/X11/Xosdefs.h /opt/local/include/X11/Xutil.h \
-  /opt/local/include/X11/keysym.h /opt/local/include/X11/keysymdef.h \
-  ../../byterun/mlvalues.h ../../byterun/compatibility.h \
-  ../../byterun/config.h ../../byterun/../config/m.h \
-  ../../byterun/../config/s.h ../../byterun/misc.h image.h \
-  ../../byterun/alloc.h ../../byterun/mlvalues.h ../../byterun/memory.h \
-  ../../byterun/gc.h ../../byterun/major_gc.h ../../byterun/freelist.h \
-  ../../byterun/minor_gc.h
-events.o: events.c libgraph.h /opt/local/include/X11/Xlib.h \
-  /opt/local/include/X11/X.h /opt/local/include/X11/Xfuncproto.h \
-  /opt/local/include/X11/Xosdefs.h /opt/local/include/X11/Xutil.h \
-  /opt/local/include/X11/keysym.h /opt/local/include/X11/keysymdef.h \
-  ../../byterun/mlvalues.h ../../byterun/compatibility.h \
-  ../../byterun/config.h ../../byterun/../config/m.h \
-  ../../byterun/../config/s.h ../../byterun/misc.h ../../byterun/alloc.h \
-  ../../byterun/mlvalues.h ../../byterun/signals.h
-fill.o: fill.c libgraph.h /opt/local/include/X11/Xlib.h \
-  /opt/local/include/X11/X.h /opt/local/include/X11/Xfuncproto.h \
-  /opt/local/include/X11/Xosdefs.h /opt/local/include/X11/Xutil.h \
-  /opt/local/include/X11/keysym.h /opt/local/include/X11/keysymdef.h \
-  ../../byterun/mlvalues.h ../../byterun/compatibility.h \
-  ../../byterun/config.h ../../byterun/../config/m.h \
-  ../../byterun/../config/s.h ../../byterun/misc.h ../../byterun/memory.h \
-  ../../byterun/gc.h ../../byterun/mlvalues.h ../../byterun/major_gc.h \
-  ../../byterun/freelist.h ../../byterun/minor_gc.h
-image.o: image.c libgraph.h /opt/local/include/X11/Xlib.h \
-  /opt/local/include/X11/X.h /opt/local/include/X11/Xfuncproto.h \
-  /opt/local/include/X11/Xosdefs.h /opt/local/include/X11/Xutil.h \
-  /opt/local/include/X11/keysym.h /opt/local/include/X11/keysymdef.h \
-  ../../byterun/mlvalues.h ../../byterun/compatibility.h \
-  ../../byterun/config.h ../../byterun/../config/m.h \
-  ../../byterun/../config/s.h ../../byterun/misc.h image.h \
-  ../../byterun/alloc.h ../../byterun/mlvalues.h ../../byterun/custom.h
-make_img.o: make_img.c libgraph.h /opt/local/include/X11/Xlib.h \
-  /opt/local/include/X11/X.h /opt/local/include/X11/Xfuncproto.h \
-  /opt/local/include/X11/Xosdefs.h /opt/local/include/X11/Xutil.h \
-  /opt/local/include/X11/keysym.h /opt/local/include/X11/keysymdef.h \
-  ../../byterun/mlvalues.h ../../byterun/compatibility.h \
-  ../../byterun/config.h ../../byterun/../config/m.h \
-  ../../byterun/../config/s.h ../../byterun/misc.h image.h \
-  ../../byterun/memory.h ../../byterun/gc.h ../../byterun/mlvalues.h \
-  ../../byterun/major_gc.h ../../byterun/freelist.h \
-  ../../byterun/minor_gc.h
-open.o: open.c libgraph.h /opt/local/include/X11/Xlib.h \
-  /opt/local/include/X11/X.h /opt/local/include/X11/Xfuncproto.h \
-  /opt/local/include/X11/Xosdefs.h /opt/local/include/X11/Xutil.h \
-  /opt/local/include/X11/keysym.h /opt/local/include/X11/keysymdef.h \
-  ../../byterun/mlvalues.h ../../byterun/compatibility.h \
-  ../../byterun/config.h ../../byterun/../config/m.h \
-  ../../byterun/../config/s.h ../../byterun/misc.h ../../byterun/alloc.h \
-  ../../byterun/mlvalues.h ../../byterun/callback.h ../../byterun/fail.h \
-  ../../byterun/memory.h ../../byterun/gc.h ../../byterun/major_gc.h \
-  ../../byterun/freelist.h ../../byterun/minor_gc.h
-point_col.o: point_col.c libgraph.h /opt/local/include/X11/Xlib.h \
-  /opt/local/include/X11/X.h /opt/local/include/X11/Xfuncproto.h \
-  /opt/local/include/X11/Xosdefs.h /opt/local/include/X11/Xutil.h \
-  /opt/local/include/X11/keysym.h /opt/local/include/X11/keysymdef.h \
-  ../../byterun/mlvalues.h ../../byterun/compatibility.h \
-  ../../byterun/config.h ../../byterun/../config/m.h \
-  ../../byterun/../config/s.h ../../byterun/misc.h
-sound.o: sound.c libgraph.h /opt/local/include/X11/Xlib.h \
-  /opt/local/include/X11/X.h /opt/local/include/X11/Xfuncproto.h \
-  /opt/local/include/X11/Xosdefs.h /opt/local/include/X11/Xutil.h \
-  /opt/local/include/X11/keysym.h /opt/local/include/X11/keysymdef.h \
-  ../../byterun/mlvalues.h ../../byterun/compatibility.h \
-  ../../byterun/config.h ../../byterun/../config/m.h \
-  ../../byterun/../config/s.h ../../byterun/misc.h
-subwindow.o: subwindow.c libgraph.h /opt/local/include/X11/Xlib.h \
-  /opt/local/include/X11/X.h /opt/local/include/X11/Xfuncproto.h \
-  /opt/local/include/X11/Xosdefs.h /opt/local/include/X11/Xutil.h \
-  /opt/local/include/X11/keysym.h /opt/local/include/X11/keysymdef.h \
-  ../../byterun/mlvalues.h ../../byterun/compatibility.h \
-  ../../byterun/config.h ../../byterun/../config/m.h \
-  ../../byterun/../config/s.h ../../byterun/misc.h
-text.o: text.c libgraph.h /opt/local/include/X11/Xlib.h \
-  /opt/local/include/X11/X.h /opt/local/include/X11/Xfuncproto.h \
-  /opt/local/include/X11/Xosdefs.h /opt/local/include/X11/Xutil.h \
-  /opt/local/include/X11/keysym.h /opt/local/include/X11/keysymdef.h \
-  ../../byterun/mlvalues.h ../../byterun/compatibility.h \
-  ../../byterun/config.h ../../byterun/../config/m.h \
-  ../../byterun/../config/s.h ../../byterun/misc.h ../../byterun/alloc.h \
-  ../../byterun/mlvalues.h
+color.o: color.c libgraph.h ../../byterun/mlvalues.h \
+ ../../byterun/compatibility.h ../../byterun/config.h \
+ ../../byterun/../config/m.h ../../byterun/../config/s.h \
+ ../../byterun/misc.h
+draw.o: draw.c libgraph.h ../../byterun/mlvalues.h \
+ ../../byterun/compatibility.h ../../byterun/config.h \
+ ../../byterun/../config/m.h ../../byterun/../config/s.h \
+ ../../byterun/misc.h ../../byterun/alloc.h ../../byterun/mlvalues.h
+dump_img.o: dump_img.c libgraph.h ../../byterun/mlvalues.h \
+ ../../byterun/compatibility.h ../../byterun/config.h \
+ ../../byterun/../config/m.h ../../byterun/../config/s.h \
+ ../../byterun/misc.h image.h ../../byterun/alloc.h \
+ ../../byterun/mlvalues.h ../../byterun/memory.h ../../byterun/gc.h \
+ ../../byterun/major_gc.h ../../byterun/freelist.h \
+ ../../byterun/minor_gc.h
+events.o: events.c libgraph.h ../../byterun/mlvalues.h \
+ ../../byterun/compatibility.h ../../byterun/config.h \
+ ../../byterun/../config/m.h ../../byterun/../config/s.h \
+ ../../byterun/misc.h ../../byterun/alloc.h ../../byterun/mlvalues.h \
+ ../../byterun/signals.h
+fill.o: fill.c libgraph.h ../../byterun/mlvalues.h \
+ ../../byterun/compatibility.h ../../byterun/config.h \
+ ../../byterun/../config/m.h ../../byterun/../config/s.h \
+ ../../byterun/misc.h ../../byterun/memory.h ../../byterun/gc.h \
+ ../../byterun/mlvalues.h ../../byterun/major_gc.h \
+ ../../byterun/freelist.h ../../byterun/minor_gc.h
+image.o: image.c libgraph.h ../../byterun/mlvalues.h \
+ ../../byterun/compatibility.h ../../byterun/config.h \
+ ../../byterun/../config/m.h ../../byterun/../config/s.h \
+ ../../byterun/misc.h image.h ../../byterun/alloc.h \
+ ../../byterun/mlvalues.h ../../byterun/custom.h
+make_img.o: make_img.c libgraph.h ../../byterun/mlvalues.h \
+ ../../byterun/compatibility.h ../../byterun/config.h \
+ ../../byterun/../config/m.h ../../byterun/../config/s.h \
+ ../../byterun/misc.h image.h ../../byterun/memory.h ../../byterun/gc.h \
+ ../../byterun/mlvalues.h ../../byterun/major_gc.h \
+ ../../byterun/freelist.h ../../byterun/minor_gc.h
+open.o: open.c libgraph.h ../../byterun/mlvalues.h \
+ ../../byterun/compatibility.h ../../byterun/config.h \
+ ../../byterun/../config/m.h ../../byterun/../config/s.h \
+ ../../byterun/misc.h ../../byterun/alloc.h ../../byterun/mlvalues.h \
+ ../../byterun/callback.h ../../byterun/fail.h ../../byterun/memory.h \
+ ../../byterun/gc.h ../../byterun/major_gc.h ../../byterun/freelist.h \
+ ../../byterun/minor_gc.h
+point_col.o: point_col.c libgraph.h ../../byterun/mlvalues.h \
+ ../../byterun/compatibility.h ../../byterun/config.h \
+ ../../byterun/../config/m.h ../../byterun/../config/s.h \
+ ../../byterun/misc.h
+sound.o: sound.c libgraph.h ../../byterun/mlvalues.h \
+ ../../byterun/compatibility.h ../../byterun/config.h \
+ ../../byterun/../config/m.h ../../byterun/../config/s.h \
+ ../../byterun/misc.h
+subwindow.o: subwindow.c libgraph.h ../../byterun/mlvalues.h \
+ ../../byterun/compatibility.h ../../byterun/config.h \
+ ../../byterun/../config/m.h ../../byterun/../config/s.h \
+ ../../byterun/misc.h
+text.o: text.c libgraph.h ../../byterun/mlvalues.h \
+ ../../byterun/compatibility.h ../../byterun/config.h \
+ ../../byterun/../config/m.h ../../byterun/../config/s.h \
+ ../../byterun/misc.h ../../byterun/alloc.h ../../byterun/mlvalues.h
 graphics.cmi :
 graphicsX11.cmi :
 graphics.cmo : graphics.cmi
index 19c4612ed7803c02b25c975cc2cb345f824f764f..92c3dfc834dda93aabd010a2124ce29c243f1d76 100644 (file)
@@ -11,7 +11,7 @@
 #                                                                       #
 #########################################################################
 
-# $Id$
+# $Id: Makefile 11156 2011-07-27 14:17:02Z doligez $
 
 # Makefile for the portable graphics library
 
index bdd8b5e2831eb54ea97135e54f799b26eaada7f1..b31d9241f07afa8273bdef0dd371377b6a0586e4 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: color.c 11156 2011-07-27 14:17:02Z doligez $ */
 
 #include "libgraph.h"
 #include <X11/Xatom.h>
index 0419c627031c2cccced4bc734d281fce8e0b86a9..d1e46225480f28b7b8d612929984cd383b18f395 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: draw.c 11156 2011-07-27 14:17:02Z doligez $ */
 
 #include "libgraph.h"
 #include <alloc.h>
index 66185d8750ad1b34afedfa915b9a7c07622e9850..e68db3e8a2de887f2d9f81eb48fe374d841e4684 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: dump_img.c 11156 2011-07-27 14:17:02Z doligez $ */
 
 #include "libgraph.h"
 #include "image.h"
index 508931055c8b2facd10254e150c9f9736bf0fd93..27c5586eeb4aa1458caa655b889a122650d94eab 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: events.c 11156 2011-07-27 14:17:02Z doligez $ */
 
 #include <signal.h>
 #include "libgraph.h"
index bb1a60e78b2df8b90e055e63de4d534fbf80c7c3..a3422acbb1fd095aa13981dd019ec0626c4acf57 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: fill.c 11156 2011-07-27 14:17:02Z doligez $ */
 
 #include "libgraph.h"
 #include <memory.h>
index a9dd511401c1e2eb11c2df1062aab10c2834b2c5..32d89c536e49282da823d8870c46b925447a6a2c 100644 (file)
@@ -11,7 +11,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: graphics.ml 11156 2011-07-27 14:17:02Z doligez $ *)
 
 exception Graphic_failure of string
 
index 10074cb7af4d51dcafc9134f2a2c2ecd646be71f..c169e657047cacdbd22c2f71671d6f1193cfa2a0 100644 (file)
@@ -11,7 +11,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: graphics.mli 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (** Machine-independent graphics primitives. *)
 
index 4b70d29bd3da53f730ac278332ff7fb90cd28a55..26148f301e65c5380f3a9fb8301368993760c5a0 100644 (file)
@@ -11,7 +11,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: graphicsX11.ml 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (* Module [GraphicsX11]: additional graphics primitives for the X Windows system *)
 
index 0210d9676d948da82189d274e397d37d8f522757..b60808513ac9058423f37e88e47cb9511b530887 100644 (file)
@@ -11,7 +11,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: graphicsX11.mli 12149 2012-02-10 16:15:24Z doligez $ *)
 
 (** Additional graphics primitives for the X Windows system. *)
 
index c610d96b6f3687113240d46f822555b629d5a214..522322e3c11b9d3ac0b4c8fabf66a8c3258c0d76 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: image.c 11156 2011-07-27 14:17:02Z doligez $ */
 
 #include "libgraph.h"
 #include "image.h"
@@ -105,4 +105,4 @@ value caml_gr_draw_image(value im, value vx, value vy)
   return Val_unit;
 }
 
-/* eof $Id$ */
+/* eof $Id: image.c 11156 2011-07-27 14:17:02Z doligez $ */
index 76d319e0abdd9a901114422b83a41571e5cc2546..619121b71737c30abbc36c730b9c5f8d3ec84eef 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: image.h 11156 2011-07-27 14:17:02Z doligez $ */
 
 struct grimage {
   int width, height;            /* Dimensions of the image */
index c8192e05b0dbf1f093b65bdb65d80feb79663eff..9b196602e770f86d0b4d5dd0be6c9e492e4f4c52 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: libgraph.h 12149 2012-02-10 16:15:24Z doligez $ */
 
 #include <stdio.h>
 #include <X11/Xlib.h>
index 08628804f5b278f991a72fd218d551f81405449f..37dc3ec4714fcc12a101915d98a0b4df27b09e84 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: make_img.c 11156 2011-07-27 14:17:02Z doligez $ */
 
 #include "libgraph.h"
 #include "image.h"
index 1f7da5ba4f9d5ecc05b9d87d3caf746f03b3e317..09720904d92bd0c36c2b979ffc0271b94962147f 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: open.c 11156 2011-07-27 14:17:02Z doligez $ */
 
 #include <string.h>
 #include <fcntl.h>
index 2149aa8eb1ca7f4fef4820cb6d3c15ea5ef732a7..c53ab55fb4c0d88c20e00c2f09ced1566c9309f3 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: point_col.c 11156 2011-07-27 14:17:02Z doligez $ */
 
 #include "libgraph.h"
 
index cba7a909ba674c1cdcfae4af84f56ecb56ce2995..8c61f5228a4b28371fa866326469adf49f113687 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: sound.c 11156 2011-07-27 14:17:02Z doligez $ */
 
 #include "libgraph.h"
 
index 08882569e1e2920e0d0cfb89eda70a3bff5a264d..6b305d0739b36785b82e558579db49e5da0505f5 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: subwindow.c 11156 2011-07-27 14:17:02Z doligez $ */
 
 #include "libgraph.h"
 
index 6743e8640f8c7b3e56b809a96df9c9c4ee305943..02f5f66f6dcc58f0a3c6750300dcd14360ebae83 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: text.c 11156 2011-07-27 14:17:02Z doligez $ */
 
 #include "libgraph.h"
 #include <alloc.h>
index 4a0040b3b92eafcc7407734ce63a2d54db3674e8..9903879dbf4a749a0d986319fb8412943662864c 100644 (file)
-editor.cmo : viewer.cmi typecheck.cmi shell.cmi setpath.cmi searchpos.cmi \
-    searchid.cmi mytypes.cmi lexical.cmi jg_toplevel.cmo jg_tk.cmo \
-    jg_text.cmi jg_message.cmi jg_menu.cmo jg_button.cmo jg_bind.cmi \
-    fileselect.cmi editor.cmi
-editor.cmx : viewer.cmx typecheck.cmx shell.cmx setpath.cmx searchpos.cmx \
-    searchid.cmx mytypes.cmi lexical.cmx jg_toplevel.cmx jg_tk.cmx \
-    jg_text.cmx jg_message.cmx jg_menu.cmx jg_button.cmx jg_bind.cmx \
-    fileselect.cmx editor.cmi
-fileselect.cmo : useunix.cmi setpath.cmi list2.cmo jg_toplevel.cmo \
-    jg_memo.cmi jg_entry.cmo jg_box.cmo fileselect.cmi
-fileselect.cmx : useunix.cmx setpath.cmx list2.cmx jg_toplevel.cmx \
-    jg_memo.cmx jg_entry.cmx jg_box.cmx fileselect.cmi
+editor.cmo : ../labltk/wm.cmi ../labltk/winfo.cmi ../support/widget.cmi \
+    viewer.cmi ../../../typing/types.cmi typecheck.cmi ../labltk/toplevel.cmi \
+    ../labltk/tk.cmo ../support/timer.cmi ../support/textvariable.cmi \
+    ../labltk/text.cmi shell.cmi setpath.cmi ../labltk/selection.cmi \
+    searchpos.cmi searchid.cmi ../support/protocol.cmi \
+    ../../../parsing/parsetree.cmi ../../../parsing/parser.cmi \
+    ../labltk/pack.cmi mytypes.cmi ../labltk/menu.cmi \
+    ../../../parsing/longident.cmi ../../../parsing/location.cmi \
+    ../labltk/listbox.cmi lexical.cmi ../../../parsing/lexer.cmi \
+    ../labltk/label.cmi jg_toplevel.cmo jg_tk.cmo jg_text.cmi jg_message.cmi \
+    jg_menu.cmo jg_button.cmo jg_bind.cmi ../../../typing/ident.cmi \
+    ../labltk/frame.cmi ../labltk/focus.cmi fileselect.cmi \
+    ../../../typing/env.cmi ../labltk/entry.cmi ../labltk/clipboard.cmi \
+    ../../../utils/clflags.cmi ../labltk/checkbutton.cmi ../labltk/button.cmi \
+    editor.cmi
+editor.cmx : ../labltk/wm.cmx ../labltk/winfo.cmx ../support/widget.cmx \
+    viewer.cmx ../../../typing/types.cmx typecheck.cmx ../labltk/toplevel.cmx \
+    ../labltk/tk.cmx ../support/timer.cmx ../support/textvariable.cmx \
+    ../labltk/text.cmx shell.cmx setpath.cmx ../labltk/selection.cmx \
+    searchpos.cmx searchid.cmx ../support/protocol.cmx \
+    ../../../parsing/parsetree.cmi ../../../parsing/parser.cmx \
+    ../labltk/pack.cmx mytypes.cmi ../labltk/menu.cmx \
+    ../../../parsing/longident.cmx ../../../parsing/location.cmx \
+    ../labltk/listbox.cmx lexical.cmx ../../../parsing/lexer.cmx \
+    ../labltk/label.cmx jg_toplevel.cmx jg_tk.cmx jg_text.cmx jg_message.cmx \
+    jg_menu.cmx jg_button.cmx jg_bind.cmx ../../../typing/ident.cmx \
+    ../labltk/frame.cmx ../labltk/focus.cmx fileselect.cmx \
+    ../../../typing/env.cmx ../labltk/entry.cmx ../labltk/clipboard.cmx \
+    ../../../utils/clflags.cmx ../labltk/checkbutton.cmx ../labltk/button.cmx \
+    editor.cmi
+fileselect.cmo : useunix.cmi ../labltk/tkwait.cmi ../labltk/tk.cmo \
+    ../support/textvariable.cmi setpath.cmi ../labltk/pack.cmi \
+    ../../../utils/misc.cmi ../labltk/listbox.cmi list2.cmo \
+    ../labltk/label.cmi jg_toplevel.cmo jg_memo.cmi jg_entry.cmo jg_box.cmo \
+    ../labltk/grab.cmi ../labltk/frame.cmi ../labltk/focus.cmi \
+    ../../../utils/config.cmi ../labltk/checkbutton.cmi ../labltk/button.cmi \
+    fileselect.cmi
+fileselect.cmx : useunix.cmx ../labltk/tkwait.cmx ../labltk/tk.cmx \
+    ../support/textvariable.cmx setpath.cmx ../labltk/pack.cmx \
+    ../../../utils/misc.cmx ../labltk/listbox.cmx list2.cmx \
+    ../labltk/label.cmx jg_toplevel.cmx jg_memo.cmx jg_entry.cmx jg_box.cmx \
+    ../labltk/grab.cmx ../labltk/frame.cmx ../labltk/focus.cmx \
+    ../../../utils/config.cmx ../labltk/checkbutton.cmx ../labltk/button.cmx \
+    fileselect.cmi
 help.cmo :
 help.cmx :
-jg_bind.cmo : jg_bind.cmi
-jg_bind.cmx : jg_bind.cmi
-jg_box.cmo : jg_completion.cmi jg_bind.cmi
-jg_box.cmx : jg_completion.cmx jg_bind.cmx
-jg_button.cmo :
-jg_button.cmx :
-jg_completion.cmo : jg_completion.cmi
-jg_completion.cmx : jg_completion.cmi
-jg_config.cmo : jg_tk.cmo jg_config.cmi
-jg_config.cmx : jg_tk.cmx jg_config.cmi
-jg_entry.cmo : jg_bind.cmi
-jg_entry.cmx : jg_bind.cmx
+jg_bind.cmo : ../labltk/tk.cmo ../labltk/focus.cmi ../labltk/button.cmi \
+    jg_bind.cmi
+jg_bind.cmx : ../labltk/tk.cmx ../labltk/focus.cmx ../labltk/button.cmx \
+    jg_bind.cmi
+jg_box.cmo : ../labltk/winfo.cmi ../labltk/tk.cmo ../labltk/scrollbar.cmi \
+    ../labltk/listbox.cmi jg_completion.cmi jg_bind.cmi ../labltk/frame.cmi
+jg_box.cmx : ../labltk/winfo.cmx ../labltk/tk.cmx ../labltk/scrollbar.cmx \
+    ../labltk/listbox.cmx jg_completion.cmx jg_bind.cmx ../labltk/frame.cmx
+jg_button.cmo : ../labltk/tk.cmo ../labltk/button.cmi
+jg_button.cmx : ../labltk/tk.cmx ../labltk/button.cmx
+jg_completion.cmo : ../support/timer.cmi jg_completion.cmi
+jg_completion.cmx : ../support/timer.cmx jg_completion.cmi
+jg_config.cmo : ../support/widget.cmi ../labltk/option.cmi jg_tk.cmo \
+    jg_config.cmi
+jg_config.cmx : ../support/widget.cmx ../labltk/option.cmx jg_tk.cmx \
+    jg_config.cmi
+jg_entry.cmo : ../labltk/tk.cmo jg_bind.cmi ../labltk/entry.cmi
+jg_entry.cmx : ../labltk/tk.cmx jg_bind.cmx ../labltk/entry.cmx
 jg_memo.cmo : jg_memo.cmi
 jg_memo.cmx : jg_memo.cmi
-jg_menu.cmo :
-jg_menu.cmx :
-jg_message.cmo : jg_toplevel.cmo jg_tk.cmo jg_text.cmi jg_bind.cmi \
-    jg_message.cmi
-jg_message.cmx : jg_toplevel.cmx jg_tk.cmx jg_text.cmx jg_bind.cmx \
-    jg_message.cmi
-jg_multibox.cmo : jg_completion.cmi jg_bind.cmi jg_multibox.cmi
-jg_multibox.cmx : jg_completion.cmx jg_bind.cmx jg_multibox.cmi
-jg_text.cmo : jg_toplevel.cmo jg_tk.cmo jg_button.cmo jg_bind.cmi \
-    jg_text.cmi
-jg_text.cmx : jg_toplevel.cmx jg_tk.cmx jg_button.cmx jg_bind.cmx \
-    jg_text.cmi
-jg_tk.cmo :
-jg_tk.cmx :
-jg_toplevel.cmo :
-jg_toplevel.cmx :
-lexical.cmo : jg_tk.cmo lexical.cmi
-lexical.cmx : jg_tk.cmx lexical.cmi
+jg_menu.cmo : ../labltk/toplevel.cmi ../labltk/tk.cmo ../labltk/menu.cmi
+jg_menu.cmx : ../labltk/toplevel.cmx ../labltk/tk.cmx ../labltk/menu.cmx
+jg_message.cmo : ../labltk/wm.cmi ../labltk/tkwait.cmi ../labltk/tk.cmo \
+    ../support/textvariable.cmi ../labltk/text.cmi ../labltk/message.cmi \
+    jg_toplevel.cmo jg_tk.cmo jg_text.cmi jg_bind.cmi ../labltk/grab.cmi \
+    ../labltk/frame.cmi ../labltk/button.cmi jg_message.cmi
+jg_message.cmx : ../labltk/wm.cmx ../labltk/tkwait.cmx ../labltk/tk.cmx \
+    ../support/textvariable.cmx ../labltk/text.cmx ../labltk/message.cmx \
+    jg_toplevel.cmx jg_tk.cmx jg_text.cmx jg_bind.cmx ../labltk/grab.cmx \
+    ../labltk/frame.cmx ../labltk/button.cmx jg_message.cmi
+jg_multibox.cmo : ../labltk/tk.cmo ../labltk/scrollbar.cmi \
+    ../labltk/listbox.cmi jg_completion.cmi jg_bind.cmi ../labltk/focus.cmi \
+    jg_multibox.cmi
+jg_multibox.cmx : ../labltk/tk.cmx ../labltk/scrollbar.cmx \
+    ../labltk/listbox.cmx jg_completion.cmx jg_bind.cmx ../labltk/focus.cmx \
+    jg_multibox.cmi
+jg_text.cmo : ../labltk/wm.cmi ../labltk/winfo.cmi ../labltk/tk.cmo \
+    ../support/textvariable.cmi ../labltk/text.cmi ../labltk/scrollbar.cmi \
+    ../labltk/radiobutton.cmi ../support/protocol.cmi ../labltk/label.cmi \
+    jg_toplevel.cmo jg_tk.cmo jg_button.cmo jg_bind.cmi ../labltk/frame.cmi \
+    ../labltk/focus.cmi ../labltk/entry.cmi ../labltk/button.cmi jg_text.cmi
+jg_text.cmx : ../labltk/wm.cmx ../labltk/winfo.cmx ../labltk/tk.cmx \
+    ../support/textvariable.cmx ../labltk/text.cmx ../labltk/scrollbar.cmx \
+    ../labltk/radiobutton.cmx ../support/protocol.cmx ../labltk/label.cmx \
+    jg_toplevel.cmx jg_tk.cmx jg_button.cmx jg_bind.cmx ../labltk/frame.cmx \
+    ../labltk/focus.cmx ../labltk/entry.cmx ../labltk/button.cmx jg_text.cmi
+jg_tk.cmo : ../labltk/tk.cmo
+jg_tk.cmx : ../labltk/tk.cmx
+jg_toplevel.cmo : ../labltk/wm.cmi ../support/widget.cmi \
+    ../labltk/toplevel.cmi ../labltk/tk.cmo
+jg_toplevel.cmx : ../labltk/wm.cmx ../support/widget.cmx \
+    ../labltk/toplevel.cmx ../labltk/tk.cmx
+lexical.cmo : ../labltk/tk.cmo ../labltk/text.cmi \
+    ../../../parsing/parser.cmi ../../../parsing/location.cmi \
+    ../../../parsing/lexer.cmi jg_tk.cmo lexical.cmi
+lexical.cmx : ../labltk/tk.cmx ../labltk/text.cmx \
+    ../../../parsing/parser.cmx ../../../parsing/location.cmx \
+    ../../../parsing/lexer.cmx jg_tk.cmx lexical.cmi
 list2.cmo :
 list2.cmx :
-main.cmo : viewer.cmi shell.cmi searchpos.cmi searchid.cmi jg_config.cmi \
-    editor.cmi
-main.cmx : viewer.cmx shell.cmx searchpos.cmx searchid.cmx jg_config.cmx \
-    editor.cmx
-searchid.cmo : list2.cmo searchid.cmi
-searchid.cmx : list2.cmx searchid.cmi
-searchpos.cmo : searchid.cmi lexical.cmi jg_tk.cmo jg_text.cmi \
-    jg_message.cmi jg_memo.cmi jg_bind.cmi searchpos.cmi
-searchpos.cmx : searchid.cmx lexical.cmx jg_tk.cmx jg_text.cmx \
-    jg_message.cmx jg_memo.cmx jg_bind.cmx searchpos.cmi
-setpath.cmo : useunix.cmi list2.cmo jg_toplevel.cmo jg_button.cmo jg_box.cmo \
-    jg_bind.cmi setpath.cmi
-setpath.cmx : useunix.cmx list2.cmx jg_toplevel.cmx jg_button.cmx jg_box.cmx \
-    jg_bind.cmx setpath.cmi
-shell.cmo : list2.cmo lexical.cmi jg_toplevel.cmo jg_tk.cmo jg_text.cmi \
-    jg_message.cmi jg_menu.cmo jg_memo.cmi fileselect.cmi dummy.cmi shell.cmi
-shell.cmx : list2.cmx lexical.cmx jg_toplevel.cmx jg_tk.cmx jg_text.cmx \
-    jg_message.cmx jg_menu.cmx jg_memo.cmx fileselect.cmx dummy.cmi shell.cmi
-typecheck.cmo : mytypes.cmi jg_tk.cmo jg_text.cmi jg_message.cmi \
-    typecheck.cmi
-typecheck.cmx : mytypes.cmi jg_tk.cmx jg_text.cmx jg_message.cmx \
-    typecheck.cmi
+main.cmo : ../../../utils/warnings.cmi viewer.cmi ../labltk/tk.cmo shell.cmi \
+    searchpos.cmi searchid.cmi ../support/protocol.cmi \
+    ../../../utils/misc.cmi ../labltk/message.cmi jg_config.cmi \
+    ../../../typing/env.cmi editor.cmi ../../../utils/config.cmi \
+    ../../../utils/clflags.cmi ../labltk/button.cmi
+main.cmx : ../../../utils/warnings.cmx viewer.cmx ../labltk/tk.cmx shell.cmx \
+    searchpos.cmx searchid.cmx ../support/protocol.cmx \
+    ../../../utils/misc.cmx ../labltk/message.cmx jg_config.cmx \
+    ../../../typing/env.cmx editor.cmx ../../../utils/config.cmx \
+    ../../../utils/clflags.cmx ../labltk/button.cmx
+searchid.cmo : ../../../typing/typetexp.cmi ../../../typing/types.cmi \
+    ../../../typing/typemod.cmi ../../../typing/typedtree.cmi \
+    ../../../parsing/syntaxerr.cmi ../../../typing/path.cmi \
+    ../../../parsing/parsetree.cmi ../../../parsing/parse.cmi \
+    ../../../parsing/longident.cmi ../../../parsing/location.cmi list2.cmo \
+    ../../../parsing/lexer.cmi ../../../typing/ident.cmi \
+    ../../../typing/env.cmi ../../../typing/ctype.cmi \
+    ../../../typing/btype.cmi ../../../parsing/asttypes.cmi searchid.cmi
+searchid.cmx : ../../../typing/typetexp.cmx ../../../typing/types.cmx \
+    ../../../typing/typemod.cmx ../../../typing/typedtree.cmx \
+    ../../../parsing/syntaxerr.cmx ../../../typing/path.cmx \
+    ../../../parsing/parsetree.cmi ../../../parsing/parse.cmx \
+    ../../../parsing/longident.cmx ../../../parsing/location.cmx list2.cmx \
+    ../../../parsing/lexer.cmx ../../../typing/ident.cmx \
+    ../../../typing/env.cmx ../../../typing/ctype.cmx \
+    ../../../typing/btype.cmx ../../../parsing/asttypes.cmi searchid.cmi
+searchpos.cmo : ../labltk/wm.cmi ../labltk/winfo.cmi ../support/widget.cmi \
+    ../../../typing/typetexp.cmi ../../../typing/types.cmi \
+    ../../../typing/typemod.cmi ../../../typing/typedtree.cmi \
+    ../../../typing/typedecl.cmi ../../../typing/typeclass.cmi \
+    ../labltk/tk.cmo ../labltk/text.cmi ../../../parsing/syntaxerr.cmi \
+    ../support/support.cmi ../../../typing/stypes.cmi searchid.cmi \
+    ../../../typing/printtyp.cmi ../../../typing/path.cmi \
+    ../../../parsing/parsetree.cmi ../../../parsing/parse.cmi \
+    ../labltk/pack.cmi ../labltk/option.cmi ../../../utils/misc.cmi \
+    ../labltk/menu.cmi ../../../parsing/longident.cmi \
+    ../../../parsing/location.cmi lexical.cmi ../../../parsing/lexer.cmi \
+    ../labltk/label.cmi jg_tk.cmo jg_text.cmi jg_message.cmi jg_memo.cmi \
+    jg_bind.cmi ../../../typing/ident.cmi ../../../typing/env.cmi \
+    ../../../typing/ctype.cmi ../../../utils/config.cmi ../labltk/button.cmi \
+    ../../../parsing/asttypes.cmi searchpos.cmi
+searchpos.cmx : ../labltk/wm.cmx ../labltk/winfo.cmx ../support/widget.cmx \
+    ../../../typing/typetexp.cmx ../../../typing/types.cmx \
+    ../../../typing/typemod.cmx ../../../typing/typedtree.cmx \
+    ../../../typing/typedecl.cmx ../../../typing/typeclass.cmx \
+    ../labltk/tk.cmx ../labltk/text.cmx ../../../parsing/syntaxerr.cmx \
+    ../support/support.cmx ../../../typing/stypes.cmx searchid.cmx \
+    ../../../typing/printtyp.cmx ../../../typing/path.cmx \
+    ../../../parsing/parsetree.cmi ../../../parsing/parse.cmx \
+    ../labltk/pack.cmx ../labltk/option.cmx ../../../utils/misc.cmx \
+    ../labltk/menu.cmx ../../../parsing/longident.cmx \
+    ../../../parsing/location.cmx lexical.cmx ../../../parsing/lexer.cmx \
+    ../labltk/label.cmx jg_tk.cmx jg_text.cmx jg_message.cmx jg_memo.cmx \
+    jg_bind.cmx ../../../typing/ident.cmx ../../../typing/env.cmx \
+    ../../../typing/ctype.cmx ../../../utils/config.cmx ../labltk/button.cmx \
+    ../../../parsing/asttypes.cmi searchpos.cmi
+setpath.cmo : useunix.cmi ../labltk/tk.cmo ../support/textvariable.cmi \
+    ../support/protocol.cmi ../labltk/listbox.cmi list2.cmo \
+    ../labltk/label.cmi jg_toplevel.cmo jg_button.cmo jg_box.cmo jg_bind.cmi \
+    ../labltk/frame.cmi ../labltk/entry.cmi ../../../utils/config.cmi \
+    ../labltk/button.cmi setpath.cmi
+setpath.cmx : useunix.cmx ../labltk/tk.cmx ../support/textvariable.cmx \
+    ../support/protocol.cmx ../labltk/listbox.cmx list2.cmx \
+    ../labltk/label.cmx jg_toplevel.cmx jg_button.cmx jg_box.cmx jg_bind.cmx \
+    ../labltk/frame.cmx ../labltk/entry.cmx ../../../utils/config.cmx \
+    ../labltk/button.cmx setpath.cmi
+shell.cmo : ../labltk/winfo.cmi ../../../utils/warnings.cmi \
+    ../labltk/toplevel.cmi ../labltk/tk.cmo ../support/timer.cmi \
+    ../labltk/text.cmi ../labltk/menu.cmi list2.cmo lexical.cmi \
+    jg_toplevel.cmo jg_tk.cmo jg_text.cmi jg_message.cmi jg_menu.cmo \
+    jg_memo.cmi fileselect.cmi ../support/fileevent.cmi dummy.cmi \
+    ../../../utils/config.cmi ../../../utils/clflags.cmi shell.cmi
+shell.cmx : ../labltk/winfo.cmx ../../../utils/warnings.cmx \
+    ../labltk/toplevel.cmx ../labltk/tk.cmx ../support/timer.cmx \
+    ../labltk/text.cmx ../labltk/menu.cmx list2.cmx lexical.cmx \
+    jg_toplevel.cmx jg_tk.cmx jg_text.cmx jg_message.cmx jg_menu.cmx \
+    jg_memo.cmx fileselect.cmx ../support/fileevent.cmx dummy.cmi \
+    ../../../utils/config.cmx ../../../utils/clflags.cmx shell.cmi
+typecheck.cmo : ../../../typing/typetexp.cmi ../../../typing/typemod.cmi \
+    ../../../typing/typedtree.cmi ../../../typing/typedecl.cmi \
+    ../../../typing/typecore.cmi ../../../typing/typeclass.cmi \
+    ../labltk/tk.cmo ../labltk/text.cmi ../../../parsing/syntaxerr.cmi \
+    ../../../typing/stypes.cmi ../../../parsing/parsetree.cmi \
+    ../../../parsing/parse.cmi mytypes.cmi ../../../utils/misc.cmi \
+    ../../../parsing/location.cmi ../../../parsing/lexer.cmi jg_tk.cmo \
+    jg_text.cmi jg_message.cmi ../../../typing/includemod.cmi \
+    ../../../typing/env.cmi ../../../typing/ctype.cmi \
+    ../../../utils/config.cmi ../../../typing/cmi_format.cmi \
+    ../../../utils/clflags.cmi ../../../utils/ccomp.cmi typecheck.cmi
+typecheck.cmx : ../../../typing/typetexp.cmx ../../../typing/typemod.cmx \
+    ../../../typing/typedtree.cmx ../../../typing/typedecl.cmx \
+    ../../../typing/typecore.cmx ../../../typing/typeclass.cmx \
+    ../labltk/tk.cmx ../labltk/text.cmx ../../../parsing/syntaxerr.cmx \
+    ../../../typing/stypes.cmx ../../../parsing/parsetree.cmi \
+    ../../../parsing/parse.cmx mytypes.cmi ../../../utils/misc.cmx \
+    ../../../parsing/location.cmx ../../../parsing/lexer.cmx jg_tk.cmx \
+    jg_text.cmx jg_message.cmx ../../../typing/includemod.cmx \
+    ../../../typing/env.cmx ../../../typing/ctype.cmx \
+    ../../../utils/config.cmx ../../../typing/cmi_format.cmx \
+    ../../../utils/clflags.cmx ../../../utils/ccomp.cmx typecheck.cmi
 useunix.cmo : useunix.cmi
 useunix.cmx : useunix.cmi
-viewer.cmo : useunix.cmi shell.cmi setpath.cmi searchpos.cmi searchid.cmi \
-    mytypes.cmi jg_toplevel.cmo jg_tk.cmo jg_text.cmi jg_multibox.cmi \
-    jg_message.cmi jg_menu.cmo jg_entry.cmo jg_completion.cmi jg_button.cmo \
-    jg_box.cmo jg_bind.cmi help.cmo viewer.cmi
-viewer.cmx : useunix.cmx shell.cmx setpath.cmx searchpos.cmx searchid.cmx \
-    mytypes.cmi jg_toplevel.cmx jg_tk.cmx jg_text.cmx jg_multibox.cmx \
-    jg_message.cmx jg_menu.cmx jg_entry.cmx jg_completion.cmx jg_button.cmx \
-    jg_box.cmx jg_bind.cmx help.cmx viewer.cmi
+viewer.cmo : ../labltk/wm.cmi useunix.cmi ../../../typing/types.cmi \
+    ../../../typing/typedtree.cmi ../labltk/toplevel.cmi ../labltk/tk.cmo \
+    ../support/textvariable.cmi ../labltk/text.cmi shell.cmi setpath.cmi \
+    searchpos.cmi searchid.cmi ../labltk/radiobutton.cmi \
+    ../support/protocol.cmi ../../../typing/predef.cmi \
+    ../../../typing/path.cmi ../labltk/pack.cmi mytypes.cmi \
+    ../labltk/menu.cmi ../../../parsing/longident.cmi \
+    ../../../parsing/location.cmi ../labltk/listbox.cmi ../labltk/label.cmi \
+    jg_toplevel.cmo jg_tk.cmo jg_text.cmi jg_multibox.cmi jg_message.cmi \
+    jg_menu.cmo jg_entry.cmo jg_completion.cmi jg_button.cmo jg_box.cmo \
+    jg_bind.cmi ../../../typing/ident.cmi help.cmo ../labltk/frame.cmi \
+    ../labltk/focus.cmi ../../../typing/env.cmi ../labltk/entry.cmi \
+    ../../../utils/config.cmi ../../../typing/cmi_format.cmi \
+    ../labltk/button.cmi viewer.cmi
+viewer.cmx : ../labltk/wm.cmx useunix.cmx ../../../typing/types.cmx \
+    ../../../typing/typedtree.cmx ../labltk/toplevel.cmx ../labltk/tk.cmx \
+    ../support/textvariable.cmx ../labltk/text.cmx shell.cmx setpath.cmx \
+    searchpos.cmx searchid.cmx ../labltk/radiobutton.cmx \
+    ../support/protocol.cmx ../../../typing/predef.cmx \
+    ../../../typing/path.cmx ../labltk/pack.cmx mytypes.cmi \
+    ../labltk/menu.cmx ../../../parsing/longident.cmx \
+    ../../../parsing/location.cmx ../labltk/listbox.cmx ../labltk/label.cmx \
+    jg_toplevel.cmx jg_tk.cmx jg_text.cmx jg_multibox.cmx jg_message.cmx \
+    jg_menu.cmx jg_entry.cmx jg_completion.cmx jg_button.cmx jg_box.cmx \
+    jg_bind.cmx ../../../typing/ident.cmx help.cmx ../labltk/frame.cmx \
+    ../labltk/focus.cmx ../../../typing/env.cmx ../labltk/entry.cmx \
+    ../../../utils/config.cmx ../../../typing/cmi_format.cmx \
+    ../labltk/button.cmx viewer.cmi
 dummy.cmi :
 dummyUnix.cmi :
 dummyWin.cmi :
-editor.cmi :
+editor.cmi : ../support/widget.cmi
 fileselect.cmi :
-jg_bind.cmi :
+jg_bind.cmi : ../support/widget.cmi
 jg_completion.cmi :
 jg_config.cmi :
 jg_memo.cmi :
-jg_message.cmi :
-jg_multibox.cmi :
-jg_text.cmi :
-lexical.cmi :
-mytypes.cmi : shell.cmi
-searchid.cmi :
-searchpos.cmi :
-setpath.cmi :
-shell.cmi :
-typecheck.cmi : mytypes.cmi
+jg_message.cmi : ../support/widget.cmi
+jg_multibox.cmi : ../support/widget.cmi ../labltk/tk.cmo
+jg_text.cmi : ../support/widget.cmi ../labltk/tk.cmo
+lexical.cmi : ../support/widget.cmi ../labltk/tk.cmo
+mytypes.cmi : ../support/widget.cmi ../../../typing/types.cmi \
+    ../../../typing/typedtree.cmi ../support/textvariable.cmi \
+    ../../../typing/stypes.cmi shell.cmi ../../../parsing/parsetree.cmi
+searchid.cmi : ../../../typing/path.cmi ../../../parsing/parsetree.cmi \
+    ../../../parsing/longident.cmi ../../../typing/env.cmi
+searchpos.cmi : ../support/widget.cmi ../../../typing/types.cmi \
+    ../../../typing/typedtree.cmi ../../../typing/stypes.cmi \
+    ../../../typing/path.cmi ../../../parsing/parsetree.cmi \
+    ../../../parsing/longident.cmi ../../../parsing/location.cmi \
+    ../../../typing/env.cmi
+setpath.cmi : ../support/widget.cmi
+shell.cmi : ../support/widget.cmi
+typecheck.cmi : ../support/widget.cmi mytypes.cmi
 useunix.cmi :
-viewer.cmi :
+viewer.cmi : ../support/widget.cmi ../../../parsing/longident.cmi \
+    ../../../typing/env.cmi
index a21973e7c54fded857d76224cc5f971035fc63e1..e7964bdf31e4b0f515b8dcfdc13469fd636a57d1 100644 (file)
@@ -12,7 +12,7 @@
 #                                                                       #
 #########################################################################
 
-# $Id$
+# $Id: Makefile 11156 2011-07-27 14:17:02Z doligez $
 
 OTHERSLIB=-I $(OTHERS)/unix -I $(OTHERS)/str
 
index 289b0924c3beaf6f8a3f122d15882087b42ccd3c..40beb5ae2cb5a2f5e30c90507ecd47d5fe5891fc 100644 (file)
@@ -12,7 +12,7 @@
 #                                                                       #
 #########################################################################
 
-# $Id$
+# $Id: Makefile.nt 11156 2011-07-27 14:17:02Z doligez $
 
 OTHERSLIB=-I $(OTHERS)/win32unix -I $(OTHERS)/str -I $(OTHERS)/systhreads
 
index 35b8edf7f1c01c7dea613c018fd669e2ab99a3fc..53a4f0bb06345fe2cf62eb10ed070de69b90241a 100644 (file)
@@ -43,10 +43,10 @@ JG =        jg_tk.cmo       jg_config.cmo   jg_bind.cmo     jg_completion.cmo \
 
 all: ocamlbrowser$(EXE)
 
-ocamlbrowser$(EXE): $(TOPDIR)/toplevel/toplevellib.cma jglib.cma $(OBJ) \
+ocamlbrowser$(EXE): $(TOPDIR)/compilerlibs/ocamlcommon.cma jglib.cma $(OBJ) \
                        ../support/lib$(LIBNAME).$(A) $(XTRAOBJ)
        $(CAMLC) -o ocamlbrowser$(EXE) $(INCLUDES) \
-               $(TOPDIR)/toplevel/toplevellib.cma \
+               $(TOPDIR)/compilerlibs/ocamlcommon.cma \
                unix.cma str.cma $(XTRALIBS) $(LIBNAME).cma jglib.cma \
                $(OBJ) $(XTRAOBJ)
 
@@ -69,10 +69,10 @@ clean:
        rm -f *.cm? ocamlbrowser$(EXE) dummy.mli *~ *.orig *.$(O) help.ml
 
 depend: help.ml
-       $(CAMLDEP) *.ml *.mli > .depend
+       $(CAMLDEP) $(LABLTKLIB) $(OCAMLTOPLIB) *.ml *.mli > .depend
 
 shell.cmo: dummy.cmi
-setpath.cmo fileselect.cmo lexical.cmi searchid.cmi typecheck.cmi: $(TOPDIR)/toplevel/toplevellib.cma
+setpath.cmo fileselect.cmo lexical.cmi searchid.cmi typecheck.cmi: $(TOPDIR)/compilerlibs/ocamlcommon.cma
 mytypes.cmi searchpos.cmi searchpos.cmo typecheck.cmo: $(TOPDIR)/typing/stypes.cmi
 
 include        .depend
index 137368118814576c51f1838a9046e5654793e6e0..3ab188fafe49b867e2a66874f5dcbf7c42b9c140 100644 (file)
@@ -12,7 +12,7 @@
 (*                                                                       *)
 (*************************************************************************)
 
-(* $Id$ *)
+(* $Id: dummyUnix.mli 11156 2011-07-27 14:17:02Z doligez $ *)
 
 module Mutex : sig
   type t
index 3f8c26e63c26b9415e70fa62de881c50fbdb5dc7..dc0271b9cf9f3c3ae53fdee5ae9bd44ce5494709 100644 (file)
@@ -12,4 +12,4 @@
 (*                                                                       *)
 (*************************************************************************)
 
-(* $Id$ *)
+(* $Id: dummyWin.mli 11156 2011-07-27 14:17:02Z doligez $ *)
index a9f7e6eaced683a85ace5371748c545d09d98775..1ef43123cdee2a2422ecb71357cd688354ed1cee 100644 (file)
@@ -12,7 +12,7 @@
 (*                                                                       *)
 (*************************************************************************)
 
-(* $Id$ *)
+(* $Id: editor.ml 12511 2012-05-30 13:29:48Z lefessan $ *)
 
 open StdLabels
 open Tk
@@ -618,7 +618,7 @@ class editor ~top ~menus = object (self)
               (try Filename.chop_extension basename with _ -> basename) in
           let env =
             Env.add_module (Ident.create modname)
-              (Types.Tmty_signature txt.signature)
+              (Types.Mty_signature txt.signature)
               Env.initial
           in Viewer.view_defined (Longident.Lident modname) ~env ~show_all:true
       end;
index 2d5e90492a73c027024c163a110a7b74bfe7cdd9..0fc4c03d4cbb3fd9d22aa915f465e4d804ebab1d 100644 (file)
@@ -12,7 +12,7 @@
 (*                                                                       *)
 (*************************************************************************)
 
-(* $Id$ *)
+(* $Id: editor.mli 11156 2011-07-27 14:17:02Z doligez $ *)
 
 open Widget
 
index d62b8ba3cdf5dd283d7b8751c8b4da8c9de3d320..e13000bf695ba3091c15b718db1aaabfd73e073c 100644 (file)
@@ -12,7 +12,7 @@
 (*                                                                       *)
 (*************************************************************************)
 
-(* $Id$ *)
+(* $Id: fileselect.ml 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (* file selection box *)
 
index ed10eaf68fb716364c0ab110fc7642403e3e2104..8260eb7b873bdbbe084f20053fbfb9f55da64c4e 100644 (file)
@@ -12,7 +12,7 @@
 (*                                                                       *)
 (*************************************************************************)
 
-(* $Id$ *)
+(* $Id: fileselect.mli 11156 2011-07-27 14:17:02Z doligez $ *)
 
 val f :
   title:string ->
index 3fb854b096447b0141e01a482db7bb0b90493ed0..a81c02e03502ed012ca0371d8652b0c72e5ac6e2 100644 (file)
@@ -12,7 +12,7 @@
 (*                                                                       *)
 (*************************************************************************)
 
-(* $Id$ *)
+(* $Id: jg_bind.ml 11156 2011-07-27 14:17:02Z doligez $ *)
 
 open Tk
 
index 70e323bee8a2bba9e21eaa56e6bd11f98e8acbd6..100eedef43b8d6c58e6fd0469de5c1e1a7b80b70 100644 (file)
@@ -12,7 +12,7 @@
 (*                                                                       *)
 (*************************************************************************)
 
-(* $Id$ *)
+(* $Id: jg_bind.mli 11156 2011-07-27 14:17:02Z doligez $ *)
 
 open Widget
 
index bc865f6d5b1f5fb8304947b79740a925033e63a3..e5398d20857fc07b1ce2f1a6d51e0283830ca64f 100644 (file)
@@ -12,7 +12,7 @@
 (*                                                                       *)
 (*************************************************************************)
 
-(* $Id$ *)
+(* $Id: jg_box.ml 11156 2011-07-27 14:17:02Z doligez $ *)
 
 open Tk
 
index de8d3582b9be308a47972821274002836db34b98..38e64ca2dc9a2c4b705fd6ff1aefb2dfd4e4f36c 100644 (file)
@@ -12,7 +12,7 @@
 (*                                                                       *)
 (*************************************************************************)
 
-(* $Id$ *)
+(* $Id: jg_button.ml 11156 2011-07-27 14:17:02Z doligez $ *)
 
 open Tk
 
index a5457a65b718d67ae8f6555e482021d5de15e4f7..a4273625888fde11a9bcc841d1ff9c1e4bffb04a 100644 (file)
@@ -12,7 +12,7 @@
 (*                                                                       *)
 (*************************************************************************)
 
-(* $Id$ *)
+(* $Id: jg_completion.ml 11156 2011-07-27 14:17:02Z doligez $ *)
 
 let lt_string ?(nocase=false) s1 s2 =
   if nocase then String.lowercase s1 < String.lowercase s2 else s1 < s2
index 40c2db3ceecb4245240cca0b5800cdf13d355106..165de5137ececc9c8007abba4bb94d3dfd83faa4 100644 (file)
@@ -12,7 +12,7 @@
 (*                                                                       *)
 (*************************************************************************)
 
-(* $Id$ *)
+(* $Id: jg_completion.mli 11156 2011-07-27 14:17:02Z doligez $ *)
 
 val lt_string : ?nocase:bool -> string -> string -> bool
 
index fbbd2ef1bb7565950c94820005ccc0d5ccc409a8..d8d3da325dcb592e923e06515874f0b1d6e9e719 100644 (file)
@@ -12,7 +12,7 @@
 (*                                                                       *)
 (*************************************************************************)
 
-(* $Id$ *)
+(* $Id: jg_config.ml 11156 2011-07-27 14:17:02Z doligez $ *)
 
 open StdLabels
 open Jg_tk
index fdaab3fe1d3f69f200dfa53d303cf2a9e90d5519..19db0e0cd8f6904fbcb2437d54bc3e2b9f76b878 100644 (file)
@@ -12,6 +12,6 @@
 (*                                                                       *)
 (*************************************************************************)
 
-(* $Id$ *)
+(* $Id: jg_config.mli 11156 2011-07-27 14:17:02Z doligez $ *)
 
 val init: unit -> unit
index 1f7aab751af235dd97904edc4829ba8ee0fe69fe..073f3b84b959955e696232dd374d84ae9466b761 100644 (file)
@@ -12,7 +12,7 @@
 (*                                                                       *)
 (*************************************************************************)
 
-(* $Id$ *)
+(* $Id: jg_entry.ml 11156 2011-07-27 14:17:02Z doligez $ *)
 
 open Tk
 
index fb1c05efaf676c7955d55d4ae012f3488a4d8119..f180e37d614ea7f6d26aefe1c13ab6ca4227e3c5 100644 (file)
@@ -12,7 +12,7 @@
 (*                                                                       *)
 (*************************************************************************)
 
-(* $Id$ *)
+(* $Id: jg_memo.ml 11156 2011-07-27 14:17:02Z doligez $ *)
 
 type ('a, 'b) assoc_list =
     Nil
index 14443ad16a1e14da502d62842bd854d4fa54fe8a..34484c16be5d6dce19ab094cb367b7deabc4838c 100644 (file)
@@ -12,7 +12,7 @@
 (*                                                                       *)
 (*************************************************************************)
 
-(* $Id$ *)
+(* $Id: jg_memo.mli 11156 2011-07-27 14:17:02Z doligez $ *)
 
 val fast : f:('a -> 'b) -> 'a -> 'b
 (* "fast" memoizer: uses a List.assq like function      *)
index 880ca775e7b51a35950e5d9992bf1c805bb31339..6bc8b1892699e022b9da1bbfad59f6069afb6c7c 100644 (file)
@@ -12,7 +12,7 @@
 (*                                                                       *)
 (*************************************************************************)
 
-(* $Id$ *)
+(* $Id: jg_menu.ml 11156 2011-07-27 14:17:02Z doligez $ *)
 
 open Tk
 
index d4d3ebbd264481968af2cd0455389e1881db4b8a..891f24c93d87a2121072ed6c6a0f31449128e9c6 100644 (file)
@@ -12,7 +12,7 @@
 (*                                                                       *)
 (*************************************************************************)
 
-(* $Id$ *)
+(* $Id: jg_message.ml 11156 2011-07-27 14:17:02Z doligez $ *)
 
 open StdLabels
 open Tk
index 0e123ac2c72bb4f9c7bb5db1d937096a3a1543a1..b4af0552713861ba2051543817d12c4827d5d48f 100644 (file)
@@ -12,7 +12,7 @@
 (*                                                                       *)
 (*************************************************************************)
 
-(* $Id$ *)
+(* $Id: jg_message.mli 11156 2011-07-27 14:17:02Z doligez $ *)
 
 open Widget
 
index 39082e329d61ead0fba7821c138675e92a09a8f6..3e9c5eeab3c9d8425ab3d12a28c35100e6cb1810 100644 (file)
@@ -12,7 +12,7 @@
 (*                                                                       *)
 (*************************************************************************)
 
-(* $Id$ *)
+(* $Id: jg_multibox.ml 11156 2011-07-27 14:17:02Z doligez $ *)
 
 open StdLabels
 
index bccca506257c42811507f7affd98dd433ce6c36b..4c280347ce589f6b6a222e53fbe4406a033a0a7a 100644 (file)
@@ -12,7 +12,7 @@
 (*                                                                       *)
 (*************************************************************************)
 
-(* $Id$ *)
+(* $Id: jg_multibox.mli 11156 2011-07-27 14:17:02Z doligez $ *)
 
 class c :
   cols:int -> texts:string list ->
index 76eeb92a74cacc03137d6e5d2c45d6551d9a68e1..d2baea0446e1a6b236c0029975eaf64127a4509f 100644 (file)
@@ -12,7 +12,7 @@
 (*                                                                       *)
 (*************************************************************************)
 
-(* $Id$ *)
+(* $Id: jg_text.ml 11156 2011-07-27 14:17:02Z doligez $ *)
 
 open StdLabels
 open Tk
index 44cba0232a97f7b0d9b87923db0e562a960b918e..33cd858d2a196386482698ef2cdb036f64ba7278 100644 (file)
@@ -12,7 +12,7 @@
 (*                                                                       *)
 (*************************************************************************)
 
-(* $Id$ *)
+(* $Id: jg_text.mli 11156 2011-07-27 14:17:02Z doligez $ *)
 
 open Widget
 
index 16106eebff0da0c79e635ffa62c4e7402273a1fb..25d704a686e4eb7c090f88ef328570e798b2d710 100644 (file)
@@ -12,7 +12,7 @@
 (*                                                                       *)
 (*************************************************************************)
 
-(* $Id$ *)
+(* $Id: jg_tk.ml 11156 2011-07-27 14:17:02Z doligez $ *)
 
 open Tk
 
index d77845df58f377fe87e8b7c9f165874bd0106eda..1e273ac00bc7fcadbb1e2ccbbc66307994b26921 100644 (file)
@@ -12,7 +12,7 @@
 (*                                                                       *)
 (*************************************************************************)
 
-(* $Id$ *)
+(* $Id: jg_toplevel.ml 11156 2011-07-27 14:17:02Z doligez $ *)
 
 open Tk
 
index a700f7286924e63fbbf7831135ee78b404967d55..740f169e062f0cc8a117c1dcd0229c1c5b88aba2 100644 (file)
@@ -12,7 +12,7 @@
 (*                                                                       *)
 (*************************************************************************)
 
-(* $Id$ *)
+(* $Id: lexical.ml 11156 2011-07-27 14:17:02Z doligez $ *)
 
 open StdLabels
 open Tk
index 52d09e35f57bc407cb908308aa9b8a5a29be919d..5ed79aeca89224721f5bed464d89c529f616e2cd 100644 (file)
@@ -12,7 +12,7 @@
 (*                                                                       *)
 (*************************************************************************)
 
-(* $Id$ *)
+(* $Id: lexical.mli 11156 2011-07-27 14:17:02Z doligez $ *)
 
 open Widget
 
index 4439e7410ea1006e6dd033505e3e98e1c4b42419..7a72fa1d234347661dbff6b926367b9f89bb9cec 100644 (file)
@@ -12,7 +12,7 @@
 (*                                                                       *)
 (*************************************************************************)
 
-(* $Id$ *)
+(* $Id: list2.ml 11156 2011-07-27 14:17:02Z doligez $ *)
 
 open StdLabels
 
index 1d79daa5474c85b72da085053abee6b0f37c3574..3ad5ff433e21eb35832539e28dec8e89ef485f5a 100644 (file)
@@ -12,7 +12,7 @@
 (*                                                                       *)
 (*************************************************************************)
 
-(* $Id$ *)
+(* $Id: main.ml 11156 2011-07-27 14:17:02Z doligez $ *)
 
 open StdLabels
 module Unix = UnixLabels
index b4deead236364a5991ae96f50c610cfc7f78d02d..b7af747c49c14ea697f98abc46940d5f2930fb2e 100644 (file)
@@ -12,7 +12,7 @@
 (*                                                                       *)
 (*************************************************************************)
 
-(* $Id$ *)
+(* $Id: mytypes.mli 12511 2012-05-30 13:29:48Z lefessan $ *)
 
 open Widget
 
@@ -22,7 +22,7 @@ type edit_window =
     frame: frame widget;
     modified: Textvariable.textVariable;
     mutable shell: (string * Shell.shell) option;
-    mutable structure: Typedtree.structure;
+    mutable structure: Typedtree.structure_item list;
     mutable type_info: Stypes.annotation list;
     mutable signature: Types.signature;
     mutable psignature: Parsetree.signature;
index e624eca982c0838493762e95da641e4e060a9dbc..834029bd0e0f167e25bd5065dc321dfa2dfa5919 100644 (file)
@@ -12,8 +12,9 @@
 (*                                                                       *)
 (*************************************************************************)
 
-(* $Id$ *)
+(* $Id: searchid.ml 12511 2012-05-30 13:29:48Z lefessan $ *)
 
+open Asttypes
 open StdLabels
 open Location
 open Longident
@@ -218,9 +219,9 @@ let rec search_type_in_signature t ~sign ~prefix ~mode =
   and lid_of_id id = mklid (prefix @ [Ident.name id]) in
   List2.flat_map sign ~f:
   begin fun item -> match item with
-        Tsig_value (id, vd) ->
+        Sig_value (id, vd) ->
           if matches vd.val_type then [lid_of_id id, Pvalue] else []
-      | Tsig_type (id, td, _) ->
+      | Sig_type (id, td, _) ->
           if
           matches (newconstr (Pident id) td.type_params) ||
           begin match td.type_manifest with
@@ -239,23 +240,23 @@ let rec search_type_in_signature t ~sign ~prefix ~mode =
             List.exists l ~f:(fun (_, _, t) -> matches t)
           end
           then [lid_of_id id, Ptype] else []
-      | Tsig_exception (id, l) ->
+      | Sig_exception (id, l) ->
           if List.exists l.exn_args ~f:matches
           then [lid_of_id id, Pconstructor]
           else []
-      | Tsig_module (id, Tmty_signature sign, _) ->
+      | Sig_module (id, Mty_signature sign, _) ->
           search_type_in_signature t ~sign ~mode
             ~prefix:(prefix @ [Ident.name id])
-      | Tsig_module _ -> []
-      | Tsig_modtype _ -> []
-      | Tsig_class (id, cl, _) ->
+      | Sig_module _ -> []
+      | Sig_modtype _ -> []
+      | Sig_class (id, cl, _) ->
           let self = self_type cl.cty_type in
           if matches self
           || (match cl.cty_new with None -> false | Some ty -> matches ty)
           (* || List.exists (get_fields ~prefix ~sign self)
               ~f:(fun (_,_,ty_field) -> matches ty_field) *)
           then [lid_of_id id, Pclass] else []
-      | Tsig_cltype (id, cl, _) ->
+      | Sig_class_type (id, cl, _) ->
           let self = self_type cl.clty_type in
           if matches self
           (* || List.exists (get_fields ~prefix ~sign self)
@@ -273,7 +274,7 @@ let search_all_types t ~mode =
     begin fun modname ->
     let mlid = Lident modname in
     try match lookup_module mlid initial with
-      _, Tmty_signature sign ->
+      _, Mty_signature sign ->
         List2.flat_map tl
           ~f:(search_type_in_signature ~sign ~prefix:[modname] ~mode)
     | _ -> []
@@ -286,12 +287,12 @@ let search_string_type text ~mode =
   try
     let sexp = Parse.interface (Lexing.from_string ("val z : " ^ text)) in
     let sign =
-      try Typemod.transl_signature !start_env sexp with _ ->
+      try (Typemod.transl_signature !start_env sexp).sig_type with _ ->
       let env = List.fold_left !module_list ~init:initial ~f:
         begin fun acc m ->
           try open_pers_signature m acc with Env.Error _ -> acc
         end in
-      try Typemod.transl_signature env sexp
+      try (Typemod.transl_signature env sexp).sig_type
       with Env.Error err -> []
       | Typemod.Error (l,_) ->
           let start_c = l.loc_start.Lexing.pos_cnum in
@@ -302,7 +303,7 @@ let search_string_type text ~mode =
           let end_c = l.loc_end.Lexing.pos_cnum in
           raise (Error (start_c - 8, end_c - 8))
     in match sign with
-        [Tsig_value (_, vd)] ->
+        [ Sig_value (_, vd) ] ->
           search_all_types vd.val_type ~mode
       | _ -> []
   with
@@ -355,20 +356,20 @@ let search_pattern_symbol text =
   let l = List.map !module_list ~f:
     begin fun modname -> Lident modname,
     try match lookup_module (Lident modname) initial with
-      _, Tmty_signature sign ->
+      _, Mty_signature sign ->
         List2.flat_map sign ~f:
           begin function
-            Tsig_value (i, _) when check i -> [i, Pvalue]
-          | Tsig_type (i, _, _) when check i -> [i, Ptype]
-          | Tsig_exception (i, _) when check i -> [i, Pconstructor]
-          | Tsig_module (i, _, _) when check i -> [i, Pmodule]
-          | Tsig_modtype (i, _) when check i -> [i, Pmodtype]
-          | Tsig_class (i, cl, _) when check i
+            Sig_value (i, _) when check i -> [i, Pvalue]
+          | Sig_type (i, _, _) when check i -> [i, Ptype]
+          | Sig_exception (i, _) when check i -> [i, Pconstructor]
+          | Sig_module (i, _, _) when check i -> [i, Pmodule]
+          | Sig_modtype (i, _) when check i -> [i, Pmodtype]
+          | Sig_class (i, cl, _) when check i
             || List.exists
                 (get_fields ~prefix:[modname] ~sign (self_type cl.cty_type))
                 ~f:(fun (name,_,_) -> check_match ~pattern (explode name))
             -> [i, Pclass]
-          | Tsig_cltype (i, cl, _) when check i
+          | Sig_class_type (i, cl, _) when check i
             || List.exists
                 (get_fields ~prefix:[modname] ~sign (self_type cl.clty_type))
                 ~f:(fun (name,_,_) -> check_match ~pattern (explode name))
@@ -412,8 +413,8 @@ open Parsetree
 let rec bound_variables pat =
   match pat.ppat_desc with
     Ppat_any | Ppat_constant _ | Ppat_type _ | Ppat_unpack _ -> []
-  | Ppat_var s -> [s]
-  | Ppat_alias (pat,s) -> s :: bound_variables pat
+  | Ppat_var s -> [s.txt]
+  | Ppat_alias (pat,s) -> s.txt :: bound_variables pat
   | Ppat_tuple l -> List2.flat_map l ~f:bound_variables
   | Ppat_construct (_,None,_) -> []
   | Ppat_construct (_,Some pat,_) -> bound_variables pat
@@ -437,7 +438,7 @@ let search_structure str ~name ~kind ~prefix =
           List.fold_left ~init:[] str ~f:
             begin fun acc item ->
               match item.pstr_desc with
-                Pstr_module (s, mexp) when s = modu ->
+                Pstr_module (s, mexp) when s.txt = modu ->
                   loc := mexp.pmod_loc.loc_start.Lexing.pos_cnum;
                   begin match mexp.pmod_desc with
                     Pmod_structure str -> str
@@ -457,27 +458,27 @@ let search_structure str ~name ~kind ~prefix =
               then loc := pat.ppat_loc.loc_start.Lexing.pos_cnum
             end;
           false
-      | Pstr_primitive (s, _) when kind = Pvalue -> name = s
+      | Pstr_primitive (s, _) when kind = Pvalue -> name = s.txt
       | Pstr_type l when kind = Ptype ->
           List.iter l ~f:
             begin fun (s, td) ->
-              if s = name then loc := td.ptype_loc.loc_start.Lexing.pos_cnum
+              if s.txt = name then loc := td.ptype_loc.loc_start.Lexing.pos_cnum
             end;
           false
-      | Pstr_exception (s, _) when kind = Pconstructor -> name = s
-      | Pstr_module (s, _) when kind = Pmodule -> name = s
-      | Pstr_modtype (s, _) when kind = Pmodtype -> name = s
+      | Pstr_exception (s, _) when kind = Pconstructor -> name = s.txt
+      | Pstr_module (s, _) when kind = Pmodule -> name = s.txt
+      | Pstr_modtype (s, _) when kind = Pmodtype -> name = s.txt
       | Pstr_class l when kind = Pclass || kind = Ptype || kind = Pcltype ->
           List.iter l ~f:
             begin fun c ->
-              if c.pci_name = name
+              if c.pci_name.txt = name
               then loc := c.pci_loc.loc_start.Lexing.pos_cnum
             end;
           false
       | Pstr_class_type l when kind = Pcltype || kind = Ptype ->
           List.iter l ~f:
             begin fun c ->
-              if c.pci_name = name
+              if c.pci_name.txt = name
               then loc := c.pci_loc.loc_start.Lexing.pos_cnum
             end;
           false
@@ -487,6 +488,8 @@ let search_structure str ~name ~kind ~prefix =
   !loc
 
 let search_signature sign ~name ~kind ~prefix =
+  ignore (name = "");
+  ignore (prefix = [""]);
   let loc = ref 0 in
   let rec search_module_type  sign ~prefix =
     match prefix with [] -> sign
@@ -495,7 +498,7 @@ let search_signature sign ~name ~kind ~prefix =
           List.fold_left ~init:[] sign ~f:
             begin fun acc item ->
               match item.psig_desc with
-                Psig_module (s, mtyp) when s = modu ->
+                Psig_module (s, mtyp) when s.txt = modu ->
                   loc := mtyp.pmty_loc.loc_start.Lexing.pos_cnum;
                   begin match mtyp.pmty_desc with
                     Pmty_signature sign -> sign
@@ -508,27 +511,27 @@ let search_signature sign ~name ~kind ~prefix =
   List.iter (search_module_type sign ~prefix) ~f:
     begin fun item ->
       if match item.psig_desc with
-        Psig_value (s, _) when kind = Pvalue -> name = s
+        Psig_value (s, _) when kind = Pvalue -> name = s.txt
       | Psig_type l when kind = Ptype ->
           List.iter l ~f:
             begin fun (s, td) ->
-              if s = name then loc := td.ptype_loc.loc_start.Lexing.pos_cnum
+              if s.txt = name then loc := td.ptype_loc.loc_start.Lexing.pos_cnum
             end;
           false
-      | Psig_exception (s, _) when kind = Pconstructor -> name = s
-      | Psig_module (s, _) when kind = Pmodule -> name = s
-      | Psig_modtype (s, _) when kind = Pmodtype -> name = s
+      | Psig_exception (s, _) when kind = Pconstructor -> name = s.txt
+      | Psig_module (s, _) when kind = Pmodule -> name = s.txt
+      | Psig_modtype (s, _) when kind = Pmodtype -> name = s.txt
       | Psig_class l when kind = Pclass || kind = Ptype || kind = Pcltype ->
           List.iter l ~f:
             begin fun c ->
-              if c.pci_name = name
+              if c.pci_name.txt = name
               then loc := c.pci_loc.loc_start.Lexing.pos_cnum
             end;
           false
       | Psig_class_type l when kind = Ptype || kind = Pcltype ->
           List.iter l ~f:
             begin fun c ->
-              if c.pci_name = name
+              if c.pci_name.txt = name
               then loc := c.pci_loc.loc_start.Lexing.pos_cnum
             end;
           false
index 9e0c8ad98981cd4625c96da2d5d1b8020ab6ea3f..04b98db47264f6f4167c7eb85c2fbbd2371853d8 100644 (file)
@@ -12,7 +12,7 @@
 (*                                                                       *)
 (*************************************************************************)
 
-(* $Id$ *)
+(* $Id: searchid.mli 11156 2011-07-27 14:17:02Z doligez $ *)
 
 val start_env : Env.t ref
 val module_list : string list ref
index 2d4b689477b2a1d8c04e43019c91aa32104f8507..0e5ab0331ebade981f04834f3e4b3532108b7bad 100644 (file)
@@ -12,8 +12,9 @@
 (*                                                                       *)
 (*************************************************************************)
 
-(* $Id$ *)
+(* $Id: searchpos.ml 12511 2012-05-30 13:29:48Z lefessan $ *)
 
+open Asttypes
 open StdLabels
 open Support
 open Tk
@@ -118,7 +119,7 @@ let rec search_pos_type t ~pos ~env =
       List.iter tl ~f:(search_pos_type ~pos ~env)
   | Ptyp_constr (lid, tl) ->
       List.iter tl ~f:(search_pos_type ~pos ~env);
-      add_found_sig (`Type, lid) ~env ~loc:t.ptyp_loc
+      add_found_sig (`Type, lid.txt) ~env ~loc:t.ptyp_loc
   | Ptyp_object fl ->
       List.iter fl ~f:
         begin function
@@ -127,7 +128,7 @@ let rec search_pos_type t ~pos ~env =
         end
   | Ptyp_class (lid, tl, _) ->
       List.iter tl ~f:(search_pos_type ~pos ~env);
-      add_found_sig (`Type, lid) ~env ~loc:t.ptyp_loc
+      add_found_sig (`Type, lid.txt) ~env ~loc:t.ptyp_loc
   | Ptyp_alias (t, _)
   | Ptyp_poly (_, t) -> search_pos_type ~pos ~env t
   | Ptyp_package (_, stl) ->
@@ -138,23 +139,23 @@ let rec search_pos_class_type cl ~pos ~env =
   if in_loc cl.pcty_loc ~pos then
     begin match cl.pcty_desc with
       Pcty_constr (lid, _) ->
-        add_found_sig (`Class, lid) ~env ~loc:cl.pcty_loc
-    | Pcty_signature (_, cfl) ->
-        List.iter cfl ~f:
-          begin function
+        add_found_sig (`Class, lid.txt) ~env ~loc:cl.pcty_loc
+    | Pcty_signature  cl ->
+        List.iter cl.pcsig_fields ~f: (fun fl ->
+          begin match fl.pctf_desc with
               Pctf_inher cty -> search_pos_class_type cty ~pos ~env
-            | Pctf_val (_, _, _, ty, loc) ->
-                if in_loc loc ~pos then search_pos_type ty ~pos ~env
-            | Pctf_virt (_, _, ty, loc) ->
-                if in_loc loc ~pos then search_pos_type ty ~pos ~env
-            | Pctf_meth (_, _, ty, loc) ->
-                if in_loc loc ~pos then search_pos_type ty ~pos ~env
-            | Pctf_cstr (ty1, ty2, loc) ->
-                if in_loc loc ~pos then begin
+            | Pctf_val (_, _, _, ty) ->
+                if in_loc fl.pctf_loc ~pos then search_pos_type ty ~pos ~env
+            | Pctf_virt (_, _, ty) ->
+                if in_loc fl.pctf_loc ~pos then search_pos_type ty ~pos ~env
+            | Pctf_meth (_, _, ty) ->
+                if in_loc fl.pctf_loc ~pos then search_pos_type ty ~pos ~env
+            | Pctf_cstr (ty1, ty2) ->
+                if in_loc fl.pctf_loc ~pos then begin
                   search_pos_type ty1 ~pos ~env;
                   search_pos_type ty2 ~pos ~env
                 end
-          end
+          end)
     | Pcty_fun (_, ty, cty) ->
         search_pos_type ty ~pos ~env;
         search_pos_class_type cty ~pos ~env
@@ -187,13 +188,13 @@ let rec search_pos_signature l ~pos ~env =
   begin fun env pt ->
     let env = match pt.psig_desc with
       Psig_open id ->
-        let path, mt = lookup_module id env in
+        let path, mt = lookup_module id.txt env in
         begin match mt with
-          Tmty_signature sign -> open_signature path sign env
+          Mty_signature sign -> open_signature path sign env
         | _ -> env
         end
     | sign_item ->
-        try add_signature (Typemod.transl_signature env [pt]) env
+        try add_signature (Typemod.transl_signature env [pt]).sig_type env
         with Typemod.Error _ | Typeclass.Error _
         | Typetexp.Error _  | Typedecl.Error _ -> env
     in
@@ -219,7 +220,7 @@ let rec search_pos_signature l ~pos ~env =
           List.iter l
             ~f:(fun ci -> search_pos_class_type ci.pci_expr ~pos ~env)
       (* The last cases should not happen in generated interfaces *)
-      | Psig_open lid -> add_found_sig (`Module, lid) ~env ~loc:pt.psig_loc
+      | Psig_open lid -> add_found_sig (`Module, lid.txt) ~env ~loc:pt.psig_loc
       | Psig_include t -> search_pos_module t ~pos ~env
       end;
     env
@@ -228,7 +229,7 @@ let rec search_pos_signature l ~pos ~env =
 and search_pos_module m ~pos ~env =
   if in_loc m.pmty_loc ~pos then begin
     begin match m.pmty_desc with
-      Pmty_ident lid -> add_found_sig (`Modtype, lid) ~env ~loc:m.pmty_loc
+      Pmty_ident lid -> add_found_sig (`Modtype, lid.txt) ~env ~loc:m.pmty_loc
     | Pmty_signature sg -> search_pos_signature sg ~pos ~env
     | Pmty_functor (_ , m1, m2) ->
         search_pos_module m1 ~pos ~env;
@@ -240,7 +241,7 @@ and search_pos_module m ~pos ~env =
               _, Pwith_type t -> search_pos_type_decl t ~pos ~env
             | _ -> ()
           end
-    | Pmty_typeof md -> 
+    | Pmty_typeof md ->
         ()   (* TODO? *)
     end
   end
@@ -292,13 +293,13 @@ let edit_source ~file ~path ~sign =
     [item] ->
       let id, kind =
         match item with
-          Tsig_value (id, _) -> id, Pvalue
-        | Tsig_type (id, _, _) -> id, Ptype
-        | Tsig_exception (id, _) -> id, Pconstructor
-        | Tsig_module (id, _, _) -> id, Pmodule
-        | Tsig_modtype (id, _) -> id, Pmodtype
-        | Tsig_class (id, _, _) -> id, Pclass
-        | Tsig_cltype (id, _, _) -> id, Pcltype
+          Sig_value (id, _) -> id, Pvalue
+        | Sig_type (id, _, _) -> id, Ptype
+        | Sig_exception (id, _) -> id, Pconstructor
+        | Sig_module (id, _, _) -> id, Pmodule
+        | Sig_modtype (id, _) -> id, Pmodtype
+        | Sig_class (id, _, _) -> id, Pclass
+        | Sig_class_type (id, _, _) -> id, Pcltype
       in
       let prefix = List.tl (list_of_path path) and name = Ident.name id in
       let pos =
@@ -319,7 +320,7 @@ let edit_source ~file ~path ~sign =
 (* List of windows to destroy by Close All *)
 let top_widgets = ref []
 
-let dummy_item = Tsig_modtype (Ident.create "dummy", Tmodtype_abstract)
+let dummy_item = Sig_modtype (Ident.create "dummy", Modtype_abstract)
 
 let rec view_signature ?title ?path ?(env = !start_env) ?(detach=false) sign =
   let env =
@@ -441,11 +442,11 @@ and view_signature_item sign ~path ~env =
 
 and view_module path ~env =
   match find_module path env with
-    Tmty_signature sign ->
+    Mty_signature sign ->
       !view_defined_ref (Searchid.longident_of_path path) ~env
   | modtype ->
       let id = ident_of_path path ~default:"M" in
-      view_signature_item [Tsig_module (id, modtype, Trec_not)] ~path ~env
+      view_signature_item [Sig_module (id, modtype, Trec_not)] ~path ~env
 
 and view_module_id id ~env =
   let path, _ = lookup_module id env in
@@ -458,12 +459,12 @@ and view_type_decl path ~env =
         {desc = Tobject _} ->
           let clt = find_cltype path env in
           view_signature_item ~path ~env
-            [Tsig_cltype(ident_of_path path ~default:"ct", clt, Trec_first);
+            [Sig_class_type(ident_of_path path ~default:"ct", clt, Trec_first);
              dummy_item; dummy_item]
       | _ -> raise Not_found
   with Not_found ->
     view_signature_item ~path ~env
-      [Tsig_type(ident_of_path path ~default:"t", td, Trec_first)]
+      [Sig_type(ident_of_path path ~default:"t", td, Trec_first)]
 
 and view_type_id li ~env =
   let path, decl = lookup_type li env in
@@ -472,19 +473,19 @@ and view_type_id li ~env =
 and view_class_id li ~env =
   let path, cl = lookup_class li env in
   view_signature_item ~path ~env
-     [Tsig_class(ident_of_path path ~default:"c", cl, Trec_first);
+     [Sig_class(ident_of_path path ~default:"c", cl, Trec_first);
       dummy_item; dummy_item; dummy_item]
 
 and view_cltype_id li ~env =
   let path, clt = lookup_cltype li env in
   view_signature_item ~path ~env
-     [Tsig_cltype(ident_of_path path ~default:"ct", clt, Trec_first);
+     [Sig_class_type(ident_of_path path ~default:"ct", clt, Trec_first);
       dummy_item; dummy_item]
 
 and view_modtype_id li ~env =
   let path, td = lookup_modtype li env in
   view_signature_item ~path ~env
-    [Tsig_modtype(ident_of_path path ~default:"S", td)]
+    [Sig_modtype(ident_of_path path ~default:"S", td)]
 
 and view_expr_type ?title ?path ?env ?(name="noname") t =
   let title =
@@ -496,8 +497,8 @@ and view_expr_type ?title ?path ?env ?(name="noname") t =
     | Some path -> parent_path path, ident_of_path path ~default:name
   in
   view_signature ~title ?path ?env
-    [Tsig_value (id, {val_type = t; val_kind = Val_reg;
-                      val_loc = Location.none})]
+    [Sig_value (id, {val_type = t; val_kind = Val_reg;
+           Types.val_loc = Location.none})]
 
 and view_decl lid ~kind ~env =
   match kind with
@@ -577,7 +578,7 @@ let view_type kind ~env =
           begin try
             let vd = find_value path env in
             view_signature_item ~path ~env
-              [Tsig_value(ident_of_path path ~default:"v", vd)]
+              [Sig_value(ident_of_path path ~default:"v", vd)]
           with Not_found ->
             view_expr_type ty ~path ~env
           end
@@ -587,19 +588,19 @@ let view_type kind ~env =
       | `New path ->
           let cl = find_class path env in
           view_signature_item ~path ~env
-            [Tsig_class(ident_of_path path ~default:"c", cl, Trec_first)]
+            [Sig_class(ident_of_path path ~default:"c", cl, Trec_first)]
       end
   | `Class (path, cty) ->
       let cld = { cty_params = []; cty_variance = []; cty_type = cty;
                   cty_path = path; cty_new = None } in
       view_signature_item ~path ~env
-        [Tsig_class(ident_of_path path ~default:"c", cld, Trec_first)]
+        [Sig_class(ident_of_path path ~default:"c", cld, Trec_first)]
   | `Module (path, mty) ->
       match mty with
-        Tmty_signature sign -> view_signature sign ~path ~env
+        Mty_signature sign -> view_signature sign ~path ~env
       | modtype ->
           view_signature_item ~path ~env
-            [Tsig_module(ident_of_path path ~default:"M", mty, Trec_not)]
+            [Sig_module(ident_of_path path ~default:"M", mty, Trec_not)]
 
 let view_type_menu kind ~env ~parent =
   let title =
@@ -661,7 +662,7 @@ let add_found_str = add_found ~found:found_str
 
 let rec search_pos_structure ~pos str =
   List.iter str ~f:
-  begin function
+  begin function str -> match str.str_desc with
     Tstr_eval exp -> search_pos_expr exp ~pos
   | Tstr_value (rec_flag, l) ->
       List.iter l ~f:
@@ -671,56 +672,59 @@ let rec search_pos_structure ~pos str =
         search_pos_pat pat ~pos ~env;
         search_pos_expr exp ~pos
       end
-  | Tstr_primitive (_, vd) ->()
+  | Tstr_primitive (_, _, vd) ->()
   | Tstr_type _ -> ()
   | Tstr_exception _ -> ()
-  | Tstr_exn_rebind(_, _) -> ()
-  | Tstr_module (_, m) -> search_pos_module_expr m ~pos
+  | Tstr_exn_rebind(_, _, _, _) -> ()
+  | Tstr_module (_, _, m) -> search_pos_module_expr m ~pos
   | Tstr_recmodule bindings ->
-      List.iter bindings ~f:(fun (_, m) -> search_pos_module_expr m ~pos)
+      List.iter bindings ~f:(fun (_, _, _, m) -> search_pos_module_expr m ~pos)
   | Tstr_modtype _ -> ()
   | Tstr_open _ -> ()
   | Tstr_class l ->
-      List.iter l ~f:(fun (id, _, _, cl, _) -> search_pos_class_expr cl ~pos)
-  | Tstr_cltype _ -> ()
+      List.iter l ~f:(fun (cl, _, _) -> search_pos_class_expr cl.ci_expr ~pos)
+  | Tstr_class_type _ -> ()
   | Tstr_include (m, _) -> search_pos_module_expr m ~pos
   end
 
 and search_pos_class_structure ~pos cls =
-  List.iter cls.cl_field ~f:
-    begin function
-        Cf_inher (cl, _, _) ->
+  List.iter cls.cstr_fields ~f:
+    begin function cf -> match cf.cf_desc with
+        Tcf_inher (_, cl, _, _, _) ->
           search_pos_class_expr cl ~pos
-      | Cf_val (_, _, Some exp, _) -> search_pos_expr exp ~pos
-      | Cf_val _ -> ()
-      | Cf_meth (_, exp) -> search_pos_expr exp ~pos
-      | Cf_init exp -> search_pos_expr exp ~pos
+      | Tcf_val (_, _, _, _, Tcfk_concrete exp, _) -> search_pos_expr exp ~pos
+      | Tcf_val _ -> ()
+      | Tcf_meth (_, _, _, Tcfk_concrete exp, _) -> search_pos_expr exp ~pos
+      | Tcf_init exp -> search_pos_expr exp ~pos
+      | Tcf_constr _
+      | Tcf_meth _
+        -> assert false (* TODO !!!!!!!!!!!!!!!!! *)
     end
 
 and search_pos_class_expr ~pos cl =
   if in_loc cl.cl_loc ~pos then begin
     begin match cl.cl_desc with
-      Tclass_ident path ->
+      Tcl_ident (path, _, _) ->
         add_found_str (`Class (path, cl.cl_type))
           ~env:!start_env ~loc:cl.cl_loc
-    | Tclass_structure cls ->
+    | Tcl_structure cls ->
         search_pos_class_structure ~pos cls
-    | Tclass_fun (pat, iel, cl, _) ->
+    | Tcl_fun (_, pat, iel, cl, _) ->
         search_pos_pat pat ~pos ~env:pat.pat_env;
-        List.iter iel ~f:(fun (_,exp) -> search_pos_expr exp ~pos);
+        List.iter iel ~f:(fun (_,_, exp) -> search_pos_expr exp ~pos);
         search_pos_class_expr cl ~pos
-    | Tclass_apply (cl, el) ->
+    | Tcl_apply (cl, el) ->
         search_pos_class_expr cl ~pos;
-        List.iter el ~f:(fun (x,_) -> Misc.may (search_pos_expr ~pos) x)
-    | Tclass_let (_, pel, iel, cl) ->
+        List.iter el ~f:(fun (_, x,_) -> Misc.may (search_pos_expr ~pos) x)
+    | Tcl_let (_, pel, iel, cl) ->
         List.iter pel ~f:
           begin fun (pat, exp) ->
             search_pos_pat pat ~pos ~env:exp.exp_env;
             search_pos_expr exp ~pos
           end;
-        List.iter iel ~f:(fun (_,exp) -> search_pos_expr exp ~pos);
+        List.iter iel ~f:(fun (_,_, exp) -> search_pos_expr exp ~pos);
         search_pos_class_expr cl ~pos
-    | Tclass_constraint (cl, _, _, _) ->
+    | Tcl_constraint (cl, _, _, _, _) ->
         search_pos_class_expr cl ~pos
     end;
     add_found_str (`Class (Pident (Ident.create "c"), cl.cl_type))
@@ -730,7 +734,7 @@ and search_pos_class_expr ~pos cl =
 and search_pos_expr ~pos exp =
   if in_loc exp.exp_loc ~pos then begin
   begin match exp.exp_desc with
-    Texp_ident (path, _) ->
+    Texp_ident (path, _, _) ->
       add_found_str (`Exp(`Val path, exp.exp_type))
         ~env:exp.exp_env ~loc:exp.exp_loc
   | Texp_constant v ->
@@ -743,14 +747,14 @@ and search_pos_expr ~pos exp =
         search_pos_expr exp' ~pos
       end;
       search_pos_expr exp ~pos
-  | Texp_function (l, _) ->
+  | Texp_function (_, l, _) ->
       List.iter l ~f:
       begin fun (pat, exp) ->
         search_pos_pat pat ~pos ~env:exp.exp_env;
         search_pos_expr exp ~pos
       end
   | Texp_apply (exp, l) ->
-      List.iter l ~f:(fun (x,_) -> Misc.may (search_pos_expr ~pos) x);
+      List.iter l ~f:(fun (_, x,_) -> Misc.may (search_pos_expr ~pos) x);
       search_pos_expr exp ~pos
   | Texp_match (exp, l, _) ->
       search_pos_expr exp ~pos;
@@ -767,14 +771,14 @@ and search_pos_expr ~pos exp =
         search_pos_expr exp ~pos
       end
   | Texp_tuple l -> List.iter l ~f:(search_pos_expr ~pos)
-  | Texp_construct (_, l) -> List.iter l ~f:(search_pos_expr ~pos)
+  | Texp_construct (_, _, _, l,_) -> List.iter l ~f:(search_pos_expr ~pos)
   | Texp_variant (_, None) -> ()
   | Texp_variant (_, Some exp) -> search_pos_expr exp ~pos
   | Texp_record (l, opt) ->
-      List.iter l ~f:(fun (_, exp) -> search_pos_expr exp ~pos);
+      List.iter l ~f:(fun (_, _, _, exp) -> search_pos_expr exp ~pos);
       (match opt with None -> () | Some exp -> search_pos_expr exp ~pos)
-  | Texp_field (exp, _) -> search_pos_expr exp ~pos
-  | Texp_setfield (a, _, b) ->
+  | Texp_field (exp, _, _, _) -> search_pos_expr exp ~pos
+  | Texp_setfield (a, _, _, _, b) ->
       search_pos_expr a ~pos; search_pos_expr b ~pos
   | Texp_array l -> List.iter l ~f:(search_pos_expr ~pos)
   | Texp_ifthenelse (a, b, c) ->
@@ -786,24 +790,24 @@ and search_pos_expr ~pos exp =
       search_pos_expr a ~pos; search_pos_expr b ~pos
   | Texp_while (a,b) ->
       search_pos_expr a ~pos; search_pos_expr b ~pos
-  | Texp_for (_, a, b, _, c) ->
+  | Texp_for (_, _, a, b, _, c) ->
       List.iter [a;b;c] ~f:(search_pos_expr ~pos)
   | Texp_when (a, b) ->
       search_pos_expr a ~pos; search_pos_expr b ~pos
-  | Texp_send (exp, _) -> search_pos_expr exp ~pos
-  | Texp_new (path, _) ->
+  | Texp_send (exp, _, _) -> search_pos_expr exp ~pos
+  | Texp_new (path, _, _) ->
       add_found_str (`Exp(`New path, exp.exp_type))
         ~env:exp.exp_env ~loc:exp.exp_loc
-  | Texp_instvar (_,path) ->
+  | Texp_instvar (_, path, _) ->
       add_found_str (`Exp(`Var path, exp.exp_type))
         ~env:exp.exp_env ~loc:exp.exp_loc
-  | Texp_setinstvar (_, path, exp) ->
+  | Texp_setinstvar (_, path, _, exp) ->
       search_pos_expr exp ~pos;
       add_found_str (`Exp(`Var path, exp.exp_type))
         ~env:exp.exp_env ~loc:exp.exp_loc
   | Texp_override (_, l) ->
-      List.iter l ~f:(fun (_, exp) -> search_pos_expr exp ~pos)
-  | Texp_letmodule (id, modexp, exp) ->
+      List.iter l ~f:(fun (_, _, exp) -> search_pos_expr exp ~pos)
+  | Texp_letmodule (id, _, modexp, exp) ->
       search_pos_module_expr modexp ~pos;
       search_pos_expr exp ~pos
   | Texp_assertfalse -> ()
@@ -811,10 +815,11 @@ and search_pos_expr ~pos exp =
       search_pos_expr exp ~pos
   | Texp_lazy exp ->
       search_pos_expr exp ~pos
-  | Texp_object (cls, _, _) ->
+  | Texp_object (cls, _) ->
       search_pos_class_structure ~pos cls
   | Texp_pack modexp ->
       search_pos_module_expr modexp ~pos
+  | _ -> assert false (* TODO ................................... *)
   end;
   add_found_str (`Exp(`Expr, exp.exp_type)) ~env:exp.exp_env ~loc:exp.exp_loc
   end
@@ -823,21 +828,21 @@ and search_pos_pat ~pos ~env pat =
   if in_loc pat.pat_loc ~pos then begin
   begin match pat.pat_desc with
     Tpat_any -> ()
-  | Tpat_var id ->
+  | Tpat_var (id, _) ->
       add_found_str (`Exp(`Val (Pident id), pat.pat_type))
         ~env ~loc:pat.pat_loc
-  | Tpat_alias (pat, _) -> search_pos_pat pat ~pos ~env
+  | Tpat_alias (pat, _, _) -> search_pos_pat pat ~pos ~env
   | Tpat_lazy pat -> search_pos_pat pat ~pos ~env
   | Tpat_constant _ ->
       add_found_str (`Exp(`Const, pat.pat_type)) ~env ~loc:pat.pat_loc
   | Tpat_tuple l ->
       List.iter l ~f:(search_pos_pat ~pos ~env)
-  | Tpat_construct (_, l) ->
+  | Tpat_construct (_, _, _, l, _) ->
       List.iter l ~f:(search_pos_pat ~pos ~env)
   | Tpat_variant (_, None, _) -> ()
   | Tpat_variant (_, Some pat, _) -> search_pos_pat pat ~pos ~env
-  | Tpat_record l ->
-      List.iter l ~f:(fun (_, pat) -> search_pos_pat pat ~pos ~env)
+  | Tpat_record (l, _) ->
+      List.iter l ~f:(fun (_, _, _, pat) -> search_pos_pat pat ~pos ~env)
   | Tpat_array l ->
       List.iter l ~f:(search_pos_pat ~pos ~env)
   | Tpat_or (a, b, None) ->
@@ -848,17 +853,17 @@ and search_pos_pat ~pos ~env pat =
   add_found_str (`Exp(`Pat, pat.pat_type)) ~env ~loc:pat.pat_loc
   end
 
-and search_pos_module_expr ~pos m =
+and search_pos_module_expr ~pos (m :module_expr) =
   if in_loc m.mod_loc ~pos then begin
     begin match m.mod_desc with
-      Tmod_ident path ->
+      Tmod_ident (path, _) ->
         add_found_str (`Module (path, m.mod_type))
           ~env:m.mod_env ~loc:m.mod_loc
-    | Tmod_structure str -> search_pos_structure str ~pos
-    | Tmod_functor (_, _, m) -> search_pos_module_expr m ~pos
+    | Tmod_structure str -> search_pos_structure str.str_items ~pos
+    | Tmod_functor (_, _, _, m) -> search_pos_module_expr m ~pos
     | Tmod_apply (a, b, _) ->
         search_pos_module_expr a ~pos; search_pos_module_expr b ~pos
-    | Tmod_constraint (m, _, _) -> search_pos_module_expr m ~pos
+    | Tmod_constraint (m, _, _, _) -> search_pos_module_expr m ~pos
     | Tmod_unpack (e, _) -> search_pos_expr e ~pos
     end;
     add_found_str (`Module (Pident (Ident.create "M"), m.mod_type))
index a2d5dfd9578f13746b509b0e6257b1532ee02641..d4a8ed8fd36a906b901009b5e0f92f283ab16ee2 100644 (file)
@@ -12,7 +12,7 @@
 (*                                                                       *)
 (*************************************************************************)
 
-(* $Id$ *)
+(* $Id: searchpos.mli 11156 2011-07-27 14:17:02Z doligez $ *)
 
 open Widget
 
index 018657610b5d8f87fc5abd87c9ea89a91a0d44b4..beb2fc1a167c9ed9a1c8de3e7c0e1044e081b090 100644 (file)
@@ -12,7 +12,7 @@
 (*                                                                       *)
 (*************************************************************************)
 
-(* $Id$ *)
+(* $Id: setpath.ml 11156 2011-07-27 14:17:02Z doligez $ *)
 
 open StdLabels
 open Tk
index 6191b70c60e2d2bd749f6d48d19ca005f47047c7..875916f07b7bbb52cffbc881d9337e0d1cc1a737 100644 (file)
@@ -12,7 +12,7 @@
 (*                                                                       *)
 (*************************************************************************)
 
-(* $Id$ *)
+(* $Id: setpath.mli 11156 2011-07-27 14:17:02Z doligez $ *)
 
 open Widget
 
index 93525f8814c1428b5b24887ab3afe492ad779e43..00e5a856bfe5ee05e69249ab48271a6b6492fcb3 100644 (file)
@@ -12,7 +12,7 @@
 (*                                                                       *)
 (*************************************************************************)
 
-(* $Id$ *)
+(* $Id: shell.ml 11156 2011-07-27 14:17:02Z doligez $ *)
 
 open StdLabels
 module Unix = UnixLabels
index 5bb1ff5a3d97b2191c65a555ce7902b78a2ac976..d55954f3fb095df9385e2ed0bb102e826a659a5b 100644 (file)
@@ -12,7 +12,7 @@
 (*                                                                       *)
 (*************************************************************************)
 
-(* $Id$ *)
+(* $Id: shell.mli 11156 2011-07-27 14:17:02Z doligez $ *)
 
 class ['a] history :
   unit ->
index ac861a6f2c5cd2e869c0eb82b575c7d8264af123..6da938d0d8d0c28807763bcf37bddd5abaed85d8 100644 (file)
 (*                                                                       *)
 (*************************************************************************)
 
-(* $Id$ *)
+(* $Id: typecheck.ml 12511 2012-05-30 13:29:48Z lefessan $ *)
 
 open StdLabels
 open Tk
 open Parsetree
+open Typedtree
 open Location
 open Jg_tk
 open Mytypes
@@ -105,7 +106,7 @@ let f txt =
     let psign = parse_pp text ~ext:".mli"
         ~parse:Parse.interface ~wrap:(fun x -> x) in
     txt.psignature <- psign;
-    txt.signature <- Typemod.transl_signature !env psign
+    txt.signature <- (Typemod.transl_signature !env psign).sig_type;
 
     else (* others are interpreted as .ml *)
 
@@ -115,7 +116,7 @@ let f txt =
     begin function
       Ptop_def pstr ->
         let str, sign, env' = Typemod.type_structure !env pstr Location.none in
-        txt.structure <- txt.structure @ str;
+        txt.structure <- txt.structure @ str.str_items;
         txt.signature <- txt.signature @ sign;
         env := env'
     | Ptop_dir _ -> ()
@@ -156,6 +157,8 @@ let f txt =
           Includemod.report_error Format.std_formatter errl; Location.none
       | Env.Error err ->
           Env.report_error Format.std_formatter err; Location.none
+      | Cmi_format.Error err ->
+          Cmi_format.report_error Format.std_formatter err; Location.none
       | Ctype.Tags(l, l') ->
           Format.printf "In this program,@ variant constructors@ `%s and `%s@ have same hash value.@." l l';
           Location.none
index 08a16dd20c48a22e91a229d96187c6f808899bb8..b1dbb9d7f7750e4ace3454236e0a3c037d9762a7 100644 (file)
@@ -12,7 +12,7 @@
 (*                                                                       *)
 (*************************************************************************)
 
-(* $Id$ *)
+(* $Id: typecheck.mli 11156 2011-07-27 14:17:02Z doligez $ *)
 
 open Widget
 open Mytypes
index 86554d48844e493538fb7ecdf6d1d3b7b27fdd21..02ba237ae8fadd9743aa1e6ba4040f86535cd49d 100644 (file)
@@ -12,7 +12,7 @@
 (*                                                                       *)
 (*************************************************************************)
 
-(* $Id$ *)
+(* $Id: useunix.ml 11156 2011-07-27 14:17:02Z doligez $ *)
 
 open StdLabels
 open UnixLabels
index 47d7a26aa55c1337d34052fa5937669eeecfbf80..0f35ce04fa2fd0aca9d40f348779d7eff80bbb7a 100644 (file)
@@ -12,7 +12,7 @@
 (*                                                                       *)
 (*************************************************************************)
 
-(* $Id$ *)
+(* $Id: useunix.mli 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (* Unix utilities *)
 
index 72b9c1d66ae2cba4050586d8ad1f908d495624a2..2c67f7651733e0af44cf580ae1fa0850ee203a53 100644 (file)
@@ -12,7 +12,7 @@
 (*                                                                       *)
 (*************************************************************************)
 
-(* $Id$ *)
+(* $Id: viewer.ml 12511 2012-05-30 13:29:48Z lefessan $ *)
 
 open StdLabels
 open Tk
@@ -61,20 +61,20 @@ let view_symbol ~kind ~env ?path id =
   match kind with
     Pvalue ->
       let path, vd = lookup_value id env in
-      view_signature_item ~path ~env [Tsig_value (Ident.create name, vd)]
+      view_signature_item ~path ~env [Sig_value (Ident.create name, vd)]
   | Ptype -> view_type_id id ~env
-  | Plabel -> let ld = lookup_label id env in
+  | Plabel -> let _,ld = lookup_label id env in
       begin match ld.lbl_res.desc with
         Tconstr (path, _, _) -> view_type_decl path ~env
       | _ -> ()
       end
   | Pconstructor ->
-      let cd = lookup_constructor id env in
+      let _,cd = lookup_constructor id env in
       begin match cd.cstr_res.desc with
         Tconstr (cpath, _, _) ->
         if Path.same cpath Predef.path_exn then
           view_signature ~title:(string_of_longident id) ~env ?path
-            [Tsig_exception (Ident.create name, {exn_loc = Location.none; exn_args = cd.cstr_args})]
+            [Sig_exception (Ident.create name, {Types.exn_loc = Location.none; exn_args = cd.cstr_args})]
         else
           view_type_decl cpath ~env
       | _ -> ()
@@ -217,23 +217,23 @@ let search_symbol () =
 (* Display the contents of a module *)
 
 let ident_of_decl ~modlid = function
-    Tsig_value (id, _) -> Lident (Ident.name id), Pvalue
-  | Tsig_type (id, _, _) -> Lident (Ident.name id), Ptype
-  | Tsig_exception (id, _) -> Ldot (modlid, Ident.name id), Pconstructor
-  | Tsig_module (id, _, _) -> Lident (Ident.name id), Pmodule
-  | Tsig_modtype (id, _) -> Lident (Ident.name id), Pmodtype
-  | Tsig_class (id, _, _) -> Lident (Ident.name id), Pclass
-  | Tsig_cltype (id, _, _) -> Lident (Ident.name id), Pcltype
+    Sig_value (id, _) -> Lident (Ident.name id), Pvalue
+  | Sig_type (id, _, _) -> Lident (Ident.name id), Ptype
+  | Sig_exception (id, _) -> Ldot (modlid, Ident.name id), Pconstructor
+  | Sig_module (id, _, _) -> Lident (Ident.name id), Pmodule
+  | Sig_modtype (id, _) -> Lident (Ident.name id), Pmodtype
+  | Sig_class (id, _, _) -> Lident (Ident.name id), Pclass
+  | Sig_class_type (id, _, _) -> Lident (Ident.name id), Pcltype
 
 let view_defined ~env ?(show_all=false) modlid =
-  try match lookup_module modlid env with path, Tmty_signature sign ->
+  try match lookup_module modlid env with path, Mty_signature sign ->
     let rec iter_sign sign idents =
       match sign with
         [] -> List.rev idents
       | decl :: rem ->
           let rem = match decl, rem with
-            Tsig_class _, cty :: ty1 :: ty2 :: rem -> rem
-          | Tsig_cltype _, ty1 :: ty2 :: rem -> rem
+            Sig_class _, cty :: ty1 :: ty2 :: rem -> rem
+          | Sig_class_type _, ty1 :: ty2 :: rem -> rem
           | _, rem -> rem
           in iter_sign rem (ident_of_decl ~modlid decl :: idents)
     in
@@ -248,6 +248,10 @@ let view_defined ~env ?(show_all=false) modlid =
       let tl, tw, finish = Jg_message.formatted ~title:"Error!" () in
       Env.report_error Format.std_formatter err;
       finish ()
+  | Cmi_format.Error err ->
+      let tl, tw, finish = Jg_message.formatted ~title:"Error!" () in
+      Cmi_format.report_error Format.std_formatter err;
+      finish ()
 
 
 (* Manage toplevel windows *)
index c56c5e415e053d4c51c5b8313a952c3fa8e36663..cc188433d874c980f84ad5aa65e151f1ff2befc8 100644 (file)
@@ -12,7 +12,7 @@
 (*                                                                       *)
 (*************************************************************************)
 
-(* $Id$ *)
+(* $Id: viewer.mli 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (* Module viewer *)
 open Widget
index 4dd0644168620ab3d7db4ec5045e9544d0dd9d1d..8b1691a00342672cb7feabd1b27598da84f17e14 100644 (file)
@@ -12,7 +12,7 @@
 /*                                                                       */
 /*************************************************************************/
 
-/* $Id$ */
+/* $Id: winmain.c 11156 2011-07-27 14:17:02Z doligez $ */
 
 #include <windows.h>
 #include <mlvalues.h>
index dbad5f1c066e536c9bba90b80ea330b256c98d99..ab546d1255da8e5fdd97e47f6863020ccfa30d12 100644 (file)
@@ -14,6 +14,6 @@
 (*                                                                       *)
 (*************************************************************************)
 
-(* $Id$ *)
+(* $Id: LICENSE 11156 2011-07-27 14:17:02Z doligez $ *)
 
 All the files in this directory are subject to the above copyright notice.
index 029cce70fb92efd836fef2df239bb3943b35c3cb..9103a859eb5ce3c6b86d64580607445e411e9586 100644 (file)
@@ -14,7 +14,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: compile.ml 12149 2012-02-10 16:15:24Z doligez $ *)
 
 open StdLabels
 open Tables
index 42ad1b38da4ffe3d8dabfe0ed79d49ccf8137b41..1a8ca90a502ca7ba7a9a1eb51dadc9a04fe1fba9 100644 (file)
@@ -14,7 +14,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: intf.ml 11156 2011-07-27 14:17:02Z doligez $ *)
 
 open StdLabels
 
index 2fc2376e27078fcb0b4e7cd4ca1cf445a6e2bc2e..ec47b6a50c7b476a6b4d95669bc43fb5de99a136 100644 (file)
@@ -14,7 +14,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: lexer.mll 11156 2011-07-27 14:17:02Z doligez $ *)
 
 {
 open StdLabels
index 91b6bcdffb69e7928cfd537de55ef473231022e5..7589fa287760017f205cb47e7358f6af7ba7ca83 100644 (file)
@@ -14,7 +14,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: maincompile.ml 11156 2011-07-27 14:17:02Z doligez $ *)
 
 open StdLabels
 open Support
index 6dc7aff329071f487ca5a25a1c3ae683071cd617..e535e91c67ee56cab229b6f74c3863193022ac5a 100644 (file)
@@ -14,7 +14,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: parser.mly 11156 2011-07-27 14:17:02Z doligez $ */
 
 %{
 
index a86b4af508f56a7fb5c4556ed965f9026a91b028..ea8e2181fe3b2c7fb31896e8b82f2fef98da507f 100644 (file)
@@ -14,7 +14,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: tables.ml 11156 2011-07-27 14:17:02Z doligez $ *)
 
 open StdLabels
 open Support
index 6768d0d7fc1682e154597a09b01d5cd2a9fc152e..6084a4d4ac4d6d9b44aeba51b60019bb0781993a 100644 (file)
@@ -14,7 +14,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: tsort.ml 11156 2011-07-27 14:17:02Z doligez $ *)
 
 open StdLabels
 
index ec0f20de608a2dadaecffccc6b9530c5ff4376d9..88eaccdaf940409d4cbc020389248a306a19e493 100644 (file)
@@ -1,4 +1,4 @@
-$Id$
+$Id: README 4745 2002-04-26 12:16:26Z furuse $
 
 Some examples for LablTk.
 They are written in classic mode, except testris.ml which uses label
index 17a410c8d7b21664e4532b48621bb31f000a0ca5..ea973f298d77b7949f624b557f6059af22addd2f 100644 (file)
@@ -14,7 +14,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: calc.ml 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (* A simple calculator demonstrating OO programming with O'Labl
    and LablTk.
index 6903acb21a8ce69c8189c2b02171f6e465890b53..7f2164b224e3e54fdd798e05b030a12dff20e695 100644 (file)
@@ -14,7 +14,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: clock.ml 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (* Clock/V, a simple clock.
    Reverts every time you push the right button.
index 9524c1c7e09c7ad80e8c13fac2b6ee13b76eeaed..dcdd2cac186291a12661b3c7bbca2938675f82cc 100644 (file)
@@ -14,7 +14,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: demo.ml 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (* Some CamlTk4 Demonstration by JPF *)
 
index a96e08260a3ed251fe2163519d1730b2cfc9497c..138f74be182264fee1e6f22eb8bc87c28c584989 100644 (file)
@@ -14,7 +14,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: eyes.ml 11156 2011-07-27 14:17:02Z doligez $ *)
 
 open Tk
 
index 838b50ffc381299e6556e9f9d51aceb98dadcbea..2718c01dcd605b0212916e1bee6aaa4fc575800c 100644 (file)
@@ -14,7 +14,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: hello.ml 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (* LablTk4 Demonstration by JPF *)
 
index 616f38cb46aa3b48528cde99eef6757b34521630..93b0849f2f395f5d26f2528d2d2d41271f16ab2c 100644 (file)
@@ -14,7 +14,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: taquin.ml 11156 2011-07-27 14:17:02Z doligez $ *)
 
 open Tk;;
 
index 8260fc20595061458f42fb2b052b87994d51dadf..98752e602de18305d3990a8783bebc49c84f1c67 100644 (file)
@@ -14,7 +14,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: tetris.ml 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (* A Tetris game for LablTk *)
 (* written by Jun P. Furuse *)
index 0b7c339a0229ec665721f98f8a5e3f3eb8a39346..733299943e4d8927084bba0650a5dd67209b4e2e 100644 (file)
@@ -15,7 +15,7 @@
 (***********************************************************************)
 open Camltk
 
-let version = "$Id$"
+let version = "$Id: frx_entry.ml 11156 2011-07-27 14:17:02Z doligez $"
 
 (*
  * Tk 4.0 has emacs bindings for entry widgets
index dfba7a0f82d96bcad5ec6887e6489f765ffc33cb..f416b3988483277cb424757fa4b36e1ee7ee5b8e 100644 (file)
@@ -15,7 +15,7 @@
 (***********************************************************************)
 open Camltk
 
-let version = "$Id$"
+let version = "$Id: frx_fileinput.ml 11156 2011-07-27 14:17:02Z doligez $"
 
 (*
  * Simple spooling for fileinput callbacks
index 4acb59979ea654e17b425393239b54445dc4d5b8..d35553afe5a55b493a2689dda67805683195ddca 100644 (file)
@@ -16,7 +16,7 @@
 open Camltk
 open Widget
 
-let version = "$Id$"
+let version = "$Id: frx_font.ml 11156 2011-07-27 14:17:02Z doligez $"
 
 (*
  * Finding fonts. Inspired by code in Ical by Sanjay Ghemawat.
index 82ea8a8cc90df6e3f6ba2750aa668f6dcea9fdec..a9e8bcac19bc1ef42820173f5e602510b7873bb5 100644 (file)
@@ -18,7 +18,7 @@ open Camltk
 open Widget
 
 
-let version = "$Id$"
+let version = "$Id: frx_lbutton.ml 11156 2011-07-27 14:17:02Z doligez $"
 
 (*
  * Simulate a button with a bitmap AND a label
index 6d04262b698f412919280b0a343fba604b0cc492..30353d90d7c55fd63d5159d1f6629cb8dbf696b4 100644 (file)
@@ -15,7 +15,7 @@
 (***********************************************************************)
 open Camltk
 
-let version = "$Id$"
+let version = "$Id: frx_listbox.ml 11156 2011-07-27 14:17:02Z doligez $"
 
 (*
  * Link a scrollbar and a listbox
index 41590c14515d972bfbe7c1e9ccca0825bb2f9c8a..0f5d59375422dbb56758af494ca530536f744583 100644 (file)
@@ -20,7 +20,7 @@ open Camltk
  * jargon).
 *)
 
-let version = "$Id$"
+let version = "$Id: frx_req.ml 11156 2011-07-27 14:17:02Z doligez $"
 
 (*
  * Simple requester
index a9ca17a3722a13feadf3026182f6724688a42ac7..1a2b287e3ee138e987a42c6951b5ff183ac4baad 100644 (file)
@@ -15,7 +15,7 @@
 (***********************************************************************)
 open Camltk
 
-let version = "$Id$"
+let version = "$Id: frx_text.ml 11156 2011-07-27 14:17:02Z doligez $"
 
 (*
  * convert an integer to an absolute index
index 9045134361cc6af1e0ff22446364b3035387ef64..760829ccb7f2babfbade3303c9f78bd85c707c43 100644 (file)
@@ -16,7 +16,7 @@
 open Camltk
 open Widget
 
-let version = "$Id$"
+let version = "$Id: frx_widget.ml 11156 2011-07-27 14:17:02Z doligez $"
 (* Make a window (toplevel widget) resizeable *)
 let resizeable t =
   update_idletasks(); (* wait until layout is computed *)
index e880f27774513cde4c2e786915af8e784fefa14b..cea783c6803225927933ce799c0aaa96f3f36c9d 100644 (file)
@@ -14,7 +14,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: balloon.ml 11156 2011-07-27 14:17:02Z doligez $ *)
 
 open StdLabels
 
index f3e65269da953796f6eb300ff0304d94718d6981..dfba3e5a30303a260ea2d744b0557afbc0f0e623 100644 (file)
@@ -14,7 +14,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: balloon.mli 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (* easy balloon help facility *)
 open Widget
index 236f6174bffe6f1a21f2a637e137a6c9b54b3f48..83d04b7112ecd5c87ce6628d51da14af7f0c07d5 100644 (file)
@@ -14,7 +14,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: balloontest.ml 11156 2011-07-27 14:17:02Z doligez $ *)
 
 open Tk
 open Widget
index 23aaeb6d293c6135ac4d0e79021d3e55807fe312..7efad7208e1d5025f789c7a8cc935b8084ef5e51 100644 (file)
@@ -14,7 +14,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: fileselect.ml 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (* file selection box *)
 
index 42f7d34fa3b70bf8f4d80db92f0c85d65861ab90..7ce515d33a883dcc839a72aa8f96b5a384322890 100644 (file)
@@ -14,7 +14,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: fileselect.mli 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (* This file selecter works only under the OS with the full unix support.
    For the portability, Tk.getOpenFile and Tk.getSaveFile are recommended. *)
index 35ba8ff680513750378d605f44b5a6bd143b4e84..cae3f225c8fa41ca743ae153e8ebe7dbacc4674e 100644 (file)
@@ -42,7 +42,13 @@ SUPPORT=../support/support.cmo ../support/rawwidget.cmo \
 
 TKOBJS=$(SUPPORT) $(LABLTKOBJS) $(CAMLTKOBJS)
 
-TOPDEPS = $(TOPDIR)/toplevel/toplevellib.cma $(TOPDIR)/toplevel/topmain.cmo
+TOPLEVELLIBS=$(TOPDIR)/compilerlibs/ocamlcommon.cma \
+             $(TOPDIR)/compilerlibs/ocamlbytecomp.cma \
+             $(TOPDIR)/compilerlibs/ocamltoplevel.cma
+
+TOPLEVELSTART=$(TOPDIR)/toplevel/topstart.cmo
+
+TOPDEPS = $(TOPLEVELLIBS) $(TOPLEVELSTART)
 
 $(LIBNAME).cma: $(SUPPORT) ../Widgets.src
        $(MAKE) superclean
@@ -62,11 +68,11 @@ $(LIBNAME).cmxa: $(SUPPORT:.cmo=.cmx) ../Widgets.src
 
 $(LIBNAME)top$(EXE) : $(TOPDEPS) $(LIBNAME).cma ../support/lib$(LIBNAME).$(A)
        $(CAMLC) -verbose -linkall -o $(LIBNAME)top$(EXE) -I ../support \
-              -I $(TOPDIR)/toplevel toplevellib.cma \
+              $(TOPLEVELLIBS) \
               -I $(OTHERS)/unix -I $(OTHERS)/win32unix unix.cma \
               -I ../labltk -I ../camltk $(LIBNAME).cma \
               -I $(OTHERS)/str str.cma \
-              topstart.cmo
+              $(TOPLEVELSTART)
 
 $(LIBNAME): Makefile $(TOPDIR)/config/Makefile
        @echo Generate $@
index 29452aaccec00f432885f9533cdf9d66c4ff6af7..dbd7101d12cff62e65a285661b9b46c782ebf2dc 100644 (file)
@@ -14,7 +14,7 @@
 /*                                                                       */
 /*************************************************************************/
 
-/* $Id$ */
+/* $Id: camltk.h 12149 2012-02-10 16:15:24Z doligez $ */
 
 #if defined(_WIN32) && defined(CAML_DLL) && defined(IN_CAMLTKSUPPORT)
 #define CAMLTKextern CAMLexport
index 9a3d38a5505bd701a4485a336a3120dd3785e69c..b53efbb587b23f93cac68338773a6802ccb7905c 100644 (file)
@@ -14,7 +14,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: cltkCaml.c 12149 2012-02-10 16:15:24Z doligez $ */
 
 #include <tcl.h>
 #include <tk.h>
index 04af209de37fe50aa16f108a1982bbd714abaab8..ce435c12ec9a176215b0136d9571e2f5c535bab4 100644 (file)
@@ -14,7 +14,7 @@
 /*                                                                       */
 /*************************************************************************/
 
-/* $Id$ */
+/* $Id: cltkDMain.c 12149 2012-02-10 16:15:24Z doligez $ */
 
 #include <unistd.h>
 #include <fcntl.h>
index 69ba6d8a176bfa41201e7cebe4a7ff119ca452db..e751fff6c730e648f846769dbdca43dde0caa67d 100644 (file)
@@ -14,7 +14,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: cltkEval.c 12149 2012-02-10 16:15:24Z doligez $ */
 
 #include <stdlib.h>
 #include <string.h>
index 4507cf6943e726d7b647ad301dbada68d76e5012..f474d0300adc4dcd8335361e11cd255502f69408 100644 (file)
@@ -14,7 +14,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: cltkEvent.c 11156 2011-07-27 14:17:02Z doligez $ */
 
 #include <tcl.h>
 #include <tk.h>
index b4ebca61444183563ca7bae21baffb657714ae99..812e3cc3c599630007fc69bc28262bff71a3b95d 100644 (file)
@@ -14,7 +14,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: cltkFile.c 11156 2011-07-27 14:17:02Z doligez $ */
 
 #ifdef __CYGWIN__
 #define _WIN32
index 8751334c515c782ad1ae0650d829a920d1c3462c..ca97c3789cb9d49c137b028d30e5e96efa8081ff 100644 (file)
@@ -14,7 +14,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: cltkMain.c 12149 2012-02-10 16:15:24Z doligez $ */
 
 #include <string.h>
 #include <tcl.h>
index a89ea341f195e9811fa1dfba32787a89073950b3..c9dd59ede49fc54cf20350beef58cb58779070d9 100644 (file)
@@ -14,7 +14,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: cltkMisc.c 12149 2012-02-10 16:15:24Z doligez $ */
 
 #include <string.h>
 #include <tcl.h>
index afebef8e1d821a891301109063d87334aa8db98d..dd34e7dd7f63ab6b657e37756ea8ce7234e25e4d 100644 (file)
@@ -14,7 +14,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: cltkTimer.c 12126 2012-02-05 09:20:46Z bmeurer $ */
 
 #include <tcl.h>
 #include <tk.h>
index 448e06a1cfe5e2cddf4eed7d2104a19e8aabfd14..d12d6b46d0b89a8295f843978ae0ce6408dbddf0 100644 (file)
@@ -14,7 +14,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: cltkUtf.c 11156 2011-07-27 14:17:02Z doligez $ */
 
 #include <stdlib.h>
 #include <string.h>
index dcda8a77c15af320cf6fdedab27dfd78beb774e4..9e35921f09b33d5030751a00ca64e9f4076cfde2 100644 (file)
@@ -14,7 +14,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: cltkVar.c 12149 2012-02-10 16:15:24Z doligez $ */
 
 /* Alternative to tkwait variable */
 #include <string.h>
index a46860b85ce18050e88028f7dd72194c693bb8b9..bbdecb558da4fd61b239860dfb088a14dac9d3b3 100644 (file)
@@ -14,7 +14,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: cltkWait.c 11156 2011-07-27 14:17:02Z doligez $ */
 
 #include <tcl.h>
 #include <tk.h>
index ae1cc261a339a3ad4d32480d448c16208a66f59b..ced725af22eac05cd735b4f5dc2280d237f8524e 100644 (file)
@@ -14,7 +14,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: fileevent.ml 11156 2011-07-27 14:17:02Z doligez $ *)
 
 open Unix
 open Support
index f5468ca599c524d9ac3903bc8b1d39d5364612c5..2c4e54086d8e8e9d04e0211390bc16c139dce779 100644 (file)
@@ -14,7 +14,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: fileevent.mli 11156 2011-07-27 14:17:02Z doligez $ *)
 
 open Unix
 
index 28cb4737d9f73670974e8949991c9375b4c1d7e4..41c7ac73c1f94860bac3228ff6d73caa79010541 100644 (file)
@@ -14,7 +14,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: protocol.ml 11156 2011-07-27 14:17:02Z doligez $ *)
 
 open Support
 open Widget
index 1ce6718a854c30514fc63b4a599a196699707be9..60d979afeac12f0432f15f9f70cdae10aaeffb14 100644 (file)
@@ -14,7 +14,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: protocol.mli 11156 2011-07-27 14:17:02Z doligez $ *)
 
 open Widget
 
index f216df726a5a1e999dd1c78f5fdb343cdb8934ec..1a171e7401be635626ddb7cb52de5bbd6f96ecba 100644 (file)
@@ -14,7 +14,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: rawwidget.ml 11156 2011-07-27 14:17:02Z doligez $ *)
 
 open Support
 
index e9f82ef2cc1c18bbf25d683ec7cde9633b67a660..b61082d055d397be4f8459e7b5dc41a339cd897c 100644 (file)
@@ -14,7 +14,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: rawwidget.mli 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (* Support for widget manipulations *)
 
index 44349c05cfa4c5db9a4a07fc02da1fd5a46e2e0f..cb9064cadc95671b71ed7342e23bd2dde1ba553a 100644 (file)
@@ -14,7 +14,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: slave.ml 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (* The code run on initialisation, in addition to normal Tk code
  * NOTE: camltk has not fully been initialised yet
index 7d019967c02fd2ac4e911c66aec1e56e491c58b5..ada3ce67c42a088a0b03a714cd807b4188dd800b 100644 (file)
@@ -14,7 +14,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: support.ml 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (* Parsing results of Tcl *)
 (* List.split a string according to char_sep predicate *)
index fe30208ac20baad0c725f9ab4356dd13d4ed8221..8cc211448ec6476fa3a5ec768858eadb823a9408 100644 (file)
@@ -14,7 +14,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: support.mli 11156 2011-07-27 14:17:02Z doligez $ *)
 
 val split_str : pred:(char -> bool) -> string -> string list
 val may : ('a -> 'b) -> 'a option -> 'b option
index 4e17a008adc6b2836d6d3aca75930882a322e470..a1dbb279f1316ac85e363745d40e9ef28f140f79 100644 (file)
@@ -14,7 +14,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: textvariable.ml 11156 2011-07-27 14:17:02Z doligez $ *)
 
 open Support
 open Protocol
index f18f6cc86c958df0938baaa7eb514f400f2c6eca..9f1f98e6ab4397d8672899b3280ac591464fd76c 100644 (file)
@@ -14,7 +14,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: textvariable.mli 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (* Support for Tk -textvariable option *)
 open Widget
index d5bd176aa79166297ccde3732fe31174e3271cea..97db97db48820aff72596fda52879dcbfe73cbd7 100644 (file)
@@ -14,7 +14,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: timer.ml 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (* Timers *)
 open Support
index 4b31668c9cd5928a2beb4f7c61b9eb20c8644dec..23d4ede9556a8c12e5adb5c0bcf9f9de83ce833b 100644 (file)
@@ -14,7 +14,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: timer.mli 11156 2011-07-27 14:17:02Z doligez $ *)
 
 type t
 
index 4ae36685c9676661f72c197a687af4045856b84a..bfe425736dfe377af045060393372fb76c21941c 100644 (file)
@@ -12,7 +12,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: tkthread.ml 11156 2011-07-27 14:17:02Z doligez $ *)
 
 let jobs : (unit -> unit) Queue.t = Queue.create ()
 let m = Mutex.create ()
index 2bc104da2ef9d32820bc00dfe85cdcca501c2933..6c2143a4f35dbe5cef1fb4e2aede337869b3d46c 100644 (file)
@@ -12,7 +12,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: tkthread.mli 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (* Helper functions for using LablTk with threads.
    To use, add tkthread.cmo or tkthread.cmx to your command line *)
index 34f6908deb9460cca87e29427667591c8228f44b..af2cc3c3cc43c182e934a4a4d5ca2068285e75c1 100644 (file)
@@ -14,7 +14,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: tkwait.ml 11156 2011-07-27 14:17:02Z doligez $ *)
 
 external internal_tracevis : string -> Protocol.cbid -> unit
         = "camltk_wait_vis"
index 083e4b96c33852765058da2ef750c4b8b9d9c91a..a82ec2841dc4bd7c79072c6f8abc92bde88bc790 100644 (file)
@@ -14,7 +14,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: widget.ml 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (* Hack to permit having the different data type with the same name
    [widget] for CamlTk and LablTk. *)
index 7761f2f2c821eca266248d1c584ebb4cf0ac36e8..715d2e26df8e66c7fb32c8d9ddf7af0e20eda407 100644 (file)
@@ -14,7 +14,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: widget.mli 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (* Support for widget manipulations *)
 
index 2013ac35b837e99981ceb6113bcf54d5246e2701..5a2b80f5659bf05fa6e14513a59cfef1fc994560 100644 (file)
@@ -1,20 +1,20 @@
 bng.o: bng.c bng.h ../../byterun/config.h ../../byterun/../config/m.h \
 ../../byterun/../config/s.h ../../byterun/compatibility.h bng_amd64.c \
 bng_digit.c
../../byterun/../config/s.h ../../byterun/compatibility.h bng_ia32.c \
+ bng_digit.c
 bng_amd64.o: bng_amd64.c
 bng_digit.o: bng_digit.c
 bng_ia32.o: bng_ia32.c
 bng_ppc.o: bng_ppc.c
 bng_sparc.o: bng_sparc.c
 nat_stubs.o: nat_stubs.c ../../byterun/alloc.h \
 ../../byterun/compatibility.h ../../byterun/misc.h \
 ../../byterun/config.h ../../byterun/../config/m.h \
 ../../byterun/../config/s.h ../../byterun/mlvalues.h \
 ../../byterun/config.h ../../byterun/custom.h ../../byterun/intext.h \
 ../../byterun/io.h ../../byterun/fail.h ../../byterun/hash.h \
 ../../byterun/memory.h ../../byterun/gc.h ../../byterun/major_gc.h \
 ../../byterun/freelist.h ../../byterun/minor_gc.h \
 ../../byterun/mlvalues.h bng.h nat.h
+ ../../byterun/compatibility.h ../../byterun/misc.h \
+ ../../byterun/config.h ../../byterun/../config/m.h \
+ ../../byterun/../config/s.h ../../byterun/mlvalues.h \
+ ../../byterun/config.h ../../byterun/custom.h ../../byterun/intext.h \
+ ../../byterun/io.h ../../byterun/fail.h ../../byterun/hash.h \
+ ../../byterun/memory.h ../../byterun/gc.h ../../byterun/major_gc.h \
+ ../../byterun/freelist.h ../../byterun/minor_gc.h \
+ ../../byterun/mlvalues.h bng.h nat.h
 arith_flags.cmi :
 arith_status.cmi :
 big_int.cmi : nat.cmi
index e5bcb97cadb9aff9d76d6ae5f362ba56fbfcbe0d..1ae0c7cc03dc3972a56505388ef8bcf1af9c2055 100644 (file)
@@ -11,7 +11,7 @@
 #                                                                       #
 #########################################################################
 
-# $Id$
+# $Id: Makefile 11886 2011-12-18 09:52:52Z xleroy $
 
 # Makefile for the "num" (exact rational arithmetic) library
 
index 4ac69c7cad40db81d384fcf3b3b672a2f8769a3c..6d961d04d26fe6fdb20a1021be35690a3206c993 100644 (file)
@@ -11,7 +11,7 @@
 #                                                                       #
 #########################################################################
 
-# $Id$
+# $Id: Makefile.nt 11927 2011-12-21 16:31:01Z xleroy $
 
 # Makefile for the "num" (exact rational arithmetic) library
 
index 048d4f8dba713af9f2bb1607e3d22919ad5f6d42..3f63a01d4e2ef8a01e5c2b459eab64c4c9b64a22 100644 (file)
@@ -11,7 +11,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: arith_flags.ml 11156 2011-07-27 14:17:02Z doligez $ *)
 
 let error_when_null_denominator_flag = ref true;;
 
index 6539424311e04714f5660fd623825e7ea998ce56..58c9ff546719abd48ac3f2d0a9c19e68c12e7891 100644 (file)
@@ -11,7 +11,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: arith_flags.mli 11156 2011-07-27 14:17:02Z doligez $ *)
 
 val error_when_null_denominator_flag : bool ref
 val normalize_ratio_flag : bool ref
index 0f9deb363b145ae62e36076811b6c5f1d611caa4..8b393847a5c7b6f730282f33c5ec30020a1b43bb 100644 (file)
@@ -11,7 +11,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: arith_status.ml 11156 2011-07-27 14:17:02Z doligez $ *)
 
 open Arith_flags;;
 
index 170e8cd4c2bc566ae3a91baea16756fadf8d6d77..25f8a5e7113d213dfaf66baf0c4a40e61ae51de3 100644 (file)
@@ -11,7 +11,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: arith_status.mli 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (** Flags that control rational arithmetic. *)
 
index 34de4b1272ef5d083ad3bc17752616abb3bca3bc..29f45449dad918c09d205f29253fc9a689c4c44d 100644 (file)
@@ -11,7 +11,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: big_int.ml 11156 2011-07-27 14:17:02Z doligez $ *)
 
 open Int_misc
 open Nat
index 46621f9414e81f2eea13266b62138ae7646b025b..1482b922ce85fb9f668a3226236e0587cde358a7 100644 (file)
@@ -11,7 +11,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: big_int.mli 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (** Operations on arbitrary-precision integers.
 
index 5bbedb0b465c05278cf25d34b275d3b7759152b6..b0428e6171d5c66b3700c7f4e997462e2d5a94e3 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: bng.c 11156 2011-07-27 14:17:02Z doligez $ */
 
 #include "bng.h"
 #include "config.h"
index 19f2e2b9cf0997e2222c57f88c28e3af3fb4b93c..387090ee0ca35b0732161c774edd4840032a97a2 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: bng.h 11156 2011-07-27 14:17:02Z doligez $ */
 
 #include <string.h>
 #include "config.h"
index ecf9f2535dbc22cb4937d9cea1a47fce5c877870..25fc01004c35b670e7fd029505b4b07cc1596ef5 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: bng_amd64.c 11156 2011-07-27 14:17:02Z doligez $ */
 
 /* Code specific to the AMD x86_64 architecture. */
 
index e429197c223228c0d1f5e7670e6c2ca5c51dbef3..f9ce2210d3e9154f5c5d6210ef09d16084a02ae8 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: bng_digit.c 11156 2011-07-27 14:17:02Z doligez $ */
 
 /**** Generic operations on digits ****/
 
index b4981cd48851935d5dd26fd28a4273801669b719..aac3b1da98c65a3cc91071f19813040e54ed3ed0 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: bng_ia32.c 11156 2011-07-27 14:17:02Z doligez $ */
 
 /* Code specific to the Intel IA32 (x86) architecture. */
 
index 6bbf108e9c8d61f91a06ac026a8a24b689d55f4c..d16b3f2d0dd43ba3920d5c4b9da465a24da918a3 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: bng_ppc.c 11156 2011-07-27 14:17:02Z doligez $ */
 
 /* Code specific to the PowerPC architecture. */
 
index 4e46a316ae710afab80af8cb2ed34fcc68dd0fc3..95e45bb703e5530fb9ecb8385393c71da6bc4541 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: bng_sparc.c 11156 2011-07-27 14:17:02Z doligez $ */
 
 /* Code specific to the SPARC (V8 and above) architecture. */
 
index 99713b916e804ddff212b167df25b53bc826cc48..b2950df15a379a14cd25d861000bafef5c54ed7b 100644 (file)
@@ -11,7 +11,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: int_misc.ml 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (* Some extra operations on integers *)
 
index 7f465c5ad718e785e9788dfdc48b32c6de5597a7..f2413332105eb792aa783d215f0cc9a6891bd67e 100644 (file)
@@ -11,7 +11,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: int_misc.mli 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (* Some extra operations on integers *)
 
index 62c7ac9885a83df350d252016c31a6cc346daff3..912ec1c6620e39d86336bd29fdf12a8ccb2a5fa6 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: nat.h 11156 2011-07-27 14:17:02Z doligez $ */
 
 /* Nats are represented as unstructured blocks with tag Custom_tag. */
 
index 44742a213bec0a91d29c6cdda82940d4826f86eb..99e3f7de5e82f77b19aa7a616d9df9de5fae8e42 100644 (file)
@@ -11,7 +11,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: nat.ml 11156 2011-07-27 14:17:02Z doligez $ *)
 
 open Int_misc
 
index 39f1c5908c1c0c1cb3de743e9f9e107ede1259b2..cb5c7b0a38fd0827ba3f1f1be3b4aa9fd3de8938 100644 (file)
@@ -11,7 +11,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: nat.mli 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (* Module [Nat]: operations on natural numbers *)
 
index 521585165991ace632a202fd4e41bad81b1736f6..703939670e674092835d9cc8514e6a4abd255332 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: nat_stubs.c 11156 2011-07-27 14:17:02Z doligez $ */
 
 #include "alloc.h"
 #include "config.h"
index 4ede5ee49cda9069ae205e56b90069ca399c6e7b..eaa74a8078920815b9f6298a8b71d5e3e3b15905 100644 (file)
@@ -11,7 +11,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: num.ml 11156 2011-07-27 14:17:02Z doligez $ *)
 
 open Int_misc
 open Nat
index 17733384703b17865a63700a4db0881c78ae0114..891109b5fb9e0f44bd9691518613ce44c83a0503 100644 (file)
@@ -11,7 +11,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: num.mli 12031 2012-01-17 20:32:33Z lefessan $ *)
 
 (** Operation on arbitrary-precision numbers.
 
index 408aea9b48d991aceac556ef9c01c649139ec478..640b7bf2767e7a60627a8690cf56199bf0828983 100644 (file)
@@ -11,7 +11,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: ratio.mli 12301 2012-03-31 22:10:34Z doligez $ *)
 
 (** Operation on rational numbers.
 
index 5be8377c2d0debc2916a90c3f3e11c7902959bcf..b0ff35895b3ec3a2b7f6d21541c0f3c6e28b35ee 100644 (file)
@@ -1,9 +1,9 @@
 strstubs.o: strstubs.c ../../byterun/mlvalues.h \
 ../../byterun/compatibility.h ../../byterun/config.h \
 ../../byterun/../config/m.h ../../byterun/../config/s.h \
 ../../byterun/misc.h ../../byterun/alloc.h ../../byterun/mlvalues.h \
 ../../byterun/memory.h ../../byterun/gc.h ../../byterun/major_gc.h \
 ../../byterun/freelist.h ../../byterun/minor_gc.h ../../byterun/fail.h
+ ../../byterun/compatibility.h ../../byterun/config.h \
+ ../../byterun/../config/m.h ../../byterun/../config/s.h \
+ ../../byterun/misc.h ../../byterun/alloc.h ../../byterun/mlvalues.h \
+ ../../byterun/memory.h ../../byterun/gc.h ../../byterun/major_gc.h \
+ ../../byterun/freelist.h ../../byterun/minor_gc.h ../../byterun/fail.h
 str.cmi :
 str.cmo : str.cmi
 str.cmx : str.cmi
index e36000e4acf8222ab00c81381ceab400cec3fbcb..196d86927e90f213e5e8ae3d234516a5f3395567 100644 (file)
@@ -11,7 +11,7 @@
 #                                                                       #
 #########################################################################
 
-# $Id$
+# $Id: Makefile 11156 2011-07-27 14:17:02Z doligez $
 
 # Makefile for the str library
 
index b0420b39b87607230d98de3eec3259fa29c5db42..5c80980826aa470b061aa4aa39d636faee03e333 100644 (file)
@@ -11,7 +11,7 @@
 #                                                                       #
 #########################################################################
 
-# $Id$
+# $Id: Makefile.nt 11156 2011-07-27 14:17:02Z doligez $
 
 # Makefile for the str library
 
index 5d53168fd84666165a2ea9331cbe650bd6bb5125..5fb06070e63cba7a605b43fb37ae6d1b424062ff 100644 (file)
@@ -11,7 +11,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: str.ml 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (** String utilities *)
 
index a4d65b6aed40c377c6b52b3282d163e4048b1c3e..f5c992ae3a9c20fdd6fdacf7a498c0ea97a39e3d 100644 (file)
@@ -11,7 +11,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: str.mli 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (** Regular expressions and high-level string processing *)
 
index fc2f46f8e829ba7996fb3636652fee3148a8e047..97c670576f44d510b5a68da2d72d5afdf576445f 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: strstubs.c 11156 2011-07-27 14:17:02Z doligez $ */
 
 #include <string.h>
 #include <ctype.h>
index 85add2e5928e330f5fc6615b8733df54a67e4740..93b01d68767eef2ef41bba03da12cdc0133d1378 100644 (file)
@@ -1,14 +1,14 @@
 st_stubs.o: st_stubs.c ../../byterun/alloc.h \
 ../../byterun/compatibility.h ../../byterun/misc.h \
 ../../byterun/config.h ../../byterun/../config/m.h \
 ../../byterun/../config/s.h ../../byterun/mlvalues.h \
 ../../byterun/backtrace.h ../../byterun/callback.h \
 ../../byterun/custom.h ../../byterun/fail.h ../../byterun/io.h \
 ../../byterun/memory.h ../../byterun/gc.h ../../byterun/major_gc.h \
 ../../byterun/freelist.h ../../byterun/minor_gc.h ../../byterun/misc.h \
 ../../byterun/mlvalues.h ../../byterun/printexc.h ../../byterun/roots.h \
 ../../byterun/memory.h ../../byterun/signals.h ../../byterun/stacks.h \
 ../../byterun/sys.h threads.h st_posix.h
+ ../../byterun/compatibility.h ../../byterun/misc.h \
+ ../../byterun/config.h ../../byterun/../config/m.h \
+ ../../byterun/../config/s.h ../../byterun/mlvalues.h \
+ ../../byterun/backtrace.h ../../byterun/callback.h \
+ ../../byterun/custom.h ../../byterun/fail.h ../../byterun/io.h \
+ ../../byterun/memory.h ../../byterun/gc.h ../../byterun/major_gc.h \
+ ../../byterun/freelist.h ../../byterun/minor_gc.h ../../byterun/misc.h \
+ ../../byterun/mlvalues.h ../../byterun/printexc.h ../../byterun/roots.h \
+ ../../byterun/memory.h ../../byterun/signals.h ../../byterun/stacks.h \
+ ../../byterun/sys.h threads.h st_posix.h
 condition.cmi : mutex.cmi
 event.cmi :
 mutex.cmi :
index fbdd899466e9979314a91b1c94edb238615fac40..3d3f8fb654ba05998abd728bba45578c2ff33848 100644 (file)
@@ -11,7 +11,7 @@
 #                                                                       #
 #########################################################################
 
-# $Id$
+# $Id: Makefile 11156 2011-07-27 14:17:02Z doligez $
 
 include ../../config/Makefile
 
index 8cc9dd2649cb5a33c895836d7a8387ee3605516a..dc118b71bdf1fc66641684a64294763c5ded50af 100644 (file)
@@ -11,7 +11,7 @@
 #                                                                       #
 #########################################################################
 
-# $Id$
+# $Id: Makefile.nt 11156 2011-07-27 14:17:02Z doligez $
 
 include ../../config/Makefile
 
index 6bdac6a3697ed25ab46134370f20cfdf4daffd13..fed1b3facd4246fcc08ffc96f369e3d5f1eb2292 100644 (file)
@@ -11,7 +11,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: condition.ml 11156 2011-07-27 14:17:02Z doligez $ *)
 
 type t
 external create: unit -> t = "caml_condition_new"
index d13b30d866a65f0d96baf5e40c49f9c13ec20f22..ec8b8b2414fa750643a2a739d8e47eb8c081c782 100644 (file)
@@ -11,7 +11,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: condition.mli 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (** Condition variables to synchronize between threads.
 
index ff137e981d0adcacf49014909dbc303e514b2ed0..66adc439f757c395bd54f3b4819404e07048c11f 100644 (file)
@@ -11,7 +11,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: event.ml 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (* Events *)
 type 'a basic_event =
index 11842e5ad038da93ac88c95a1cb28b8b172c347b..ca8138ec1a73114d367e3fc532b5f47a7620f345 100644 (file)
@@ -11,7 +11,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: event.mli 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (** First-class synchronous communication.
 
index 5e9cc886c555a82cb51e625102c898f9f7ca7561..78a0116ef4c5654c9158c2f4ade885b7e9b189cb 100644 (file)
@@ -11,7 +11,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: mutex.ml 11156 2011-07-27 14:17:02Z doligez $ *)
 
 type t
 external create: unit -> t = "caml_mutex_new"
index 844d4e5d4c27e5b7ef2db686c1cd03602478d052..c18c79ba8a6fd817eaa20179a04ea547d5978c45 100644 (file)
@@ -11,7 +11,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: mutex.mli 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (** Locks for mutual exclusion.
 
index 9b2493a16e838ec757c6428b5eab80a8c4d2f725..550a1762843ec1e1dd5f4f5cbc383e331cd51279 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: st_stubs.c 12324 2012-04-08 17:11:47Z xleroy $ */
 
 #include "alloc.h"
 #include "backtrace.h"
index 42d18e63557f07f1ecd61c1209b955e538ffe764..f60e6227a7a87cf395b041ecc8a8ca45b576c483 100644 (file)
@@ -11,7 +11,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: thread.mli 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (** Lightweight threads for Posix [1003.1c] and Win32. *)
 
index d4b6fd59f5cde152038765072cdf8d28d9963e24..28654794c36922a150e245768a3a3d654e97f7d8 100644 (file)
@@ -11,7 +11,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: threadUnix.ml 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (* Module [ThreadUnix]: thread-compatible system calls *)
 
index 9c7e76e56bf61d6e59d1be99f4e206b81036e1a9..8ad70099492268df67458dadfb12a6eb4f0863c5 100644 (file)
@@ -11,7 +11,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: threadUnix.mli 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (** Thread-compatible system calls.
 
index bc03050be32c5f6d2af8315418113357b3542491..7bb66b37f97900800b0a38afe57c009f585c8bcc 100644 (file)
@@ -1,35 +1,32 @@
 scheduler.o: scheduler.c ../../byterun/alloc.h \
 ../../byterun/compatibility.h ../../byterun/misc.h \
 ../../byterun/config.h ../../byterun/../config/m.h \
 ../../byterun/../config/s.h ../../byterun/mlvalues.h \
 ../../byterun/backtrace.h ../../byterun/callback.h \
 ../../byterun/config.h ../../byterun/fail.h ../../byterun/io.h \
 ../../byterun/memory.h ../../byterun/gc.h ../../byterun/major_gc.h \
 ../../byterun/freelist.h ../../byterun/minor_gc.h ../../byterun/misc.h \
 ../../byterun/mlvalues.h ../../byterun/printexc.h ../../byterun/roots.h \
 ../../byterun/memory.h ../../byterun/signals.h ../../byterun/stacks.h \
 ../../byterun/sys.h
+ ../../byterun/compatibility.h ../../byterun/misc.h \
+ ../../byterun/config.h ../../byterun/../config/m.h \
+ ../../byterun/../config/s.h ../../byterun/mlvalues.h \
+ ../../byterun/backtrace.h ../../byterun/callback.h \
+ ../../byterun/config.h ../../byterun/fail.h ../../byterun/io.h \
+ ../../byterun/memory.h ../../byterun/gc.h ../../byterun/major_gc.h \
+ ../../byterun/freelist.h ../../byterun/minor_gc.h ../../byterun/misc.h \
+ ../../byterun/mlvalues.h ../../byterun/printexc.h ../../byterun/roots.h \
+ ../../byterun/memory.h ../../byterun/signals.h ../../byterun/stacks.h \
+ ../../byterun/sys.h
 condition.cmi : mutex.cmi
 event.cmi :
-marshal.cmi :
 mutex.cmi :
-pervasives.cmi :
-thread.cmi : unix.cmi
-threadUnix.cmi : unix.cmi
-unix.cmi :
+thread.cmi : unix.cmo
+threadUnix.cmi : unix.cmo
 condition.cmo : thread.cmi mutex.cmi condition.cmi
 condition.cmx : thread.cmx mutex.cmx condition.cmi
 event.cmo : mutex.cmi condition.cmi event.cmi
 event.cmx : mutex.cmx condition.cmx event.cmi
-marshal.cmo : pervasives.cmi marshal.cmi
-marshal.cmx : pervasives.cmx marshal.cmi
+marshal.cmo : pervasives.cmo
+marshal.cmx : pervasives.cmx
 mutex.cmo : thread.cmi mutex.cmi
 mutex.cmx : thread.cmx mutex.cmi
-pervasives.cmo : unix.cmi pervasives.cmi
-pervasives.cmx : unix.cmx pervasives.cmi
-thread.cmo : unix.cmi thread.cmi
+pervasives.cmo : unix.cmo
+pervasives.cmx : unix.cmx
+thread.cmo : unix.cmo thread.cmi
 thread.cmx : unix.cmx thread.cmi
-threadUnix.cmo : unix.cmi thread.cmi threadUnix.cmi
+threadUnix.cmo : unix.cmo thread.cmi threadUnix.cmi
 threadUnix.cmx : unix.cmx thread.cmx threadUnix.cmi
-unix.cmo : unix.cmi
-unix.cmx : unix.cmi
+unix.cmo :
+unix.cmx :
index 3354a275bd29776aeeae7539de6dee0dbfcf1911..971c38767820b0ce995e36ce1dc6b398f80cd23c 100644 (file)
@@ -11,7 +11,7 @@
 #                                                                       #
 #########################################################################
 
-# $Id$
+# $Id: Makefile 12383 2012-04-19 13:12:23Z xleroy $
 
 include ../../config/Makefile
 
@@ -28,22 +28,19 @@ CAML_OBJS=thread.cmo mutex.cmo condition.cmo event.cmo threadUnix.cmo
 LIB=../../stdlib
 
 LIB_OBJS=pervasives.cmo \
-  $(LIB)/array.cmo $(LIB)/list.cmo $(LIB)/char.cmo $(LIB)/string.cmo \
-  $(LIB)/sys.cmo $(LIB)/hashtbl.cmo $(LIB)/sort.cmo \
-  marshal.cmo $(LIB)/obj.cmo $(LIB)/int32.cmo $(LIB)/int64.cmo \
-  $(LIB)/nativeint.cmo \
-  $(LIB)/lexing.cmo $(LIB)/parsing.cmo \
-  $(LIB)/set.cmo $(LIB)/map.cmo $(LIB)/stack.cmo $(LIB)/queue.cmo \
-  $(LIB)/camlinternalLazy.cmo $(LIB)/lazy.cmo \
-  $(LIB)/stream.cmo $(LIB)/buffer.cmo \
-  $(LIB)/printf.cmo $(LIB)/format.cmo \
-  $(LIB)/scanf.cmo $(LIB)/arg.cmo \
-  $(LIB)/printexc.cmo $(LIB)/gc.cmo $(LIB)/digest.cmo $(LIB)/random.cmo \
-  $(LIB)/camlinternalOO.cmo $(LIB)/oo.cmo $(LIB)/camlinternalMod.cmo \
-  $(LIB)/genlex.cmo $(LIB)/callback.cmo $(LIB)/weak.cmo \
-  $(LIB)/filename.cmo $(LIB)/complex.cmo \
-  $(LIB)/arrayLabels.cmo $(LIB)/listLabels.cmo $(LIB)/stringLabels.cmo \
-  $(LIB)/stdLabels.cmo $(LIB)/moreLabels.cmo
+  $(LIB)/array.cmo $(LIB)/list.cmo $(LIB)/char.cmo $(LIB)/string.cmo        \
+  $(LIB)/sys.cmo $(LIB)/sort.cmo marshal.cmo $(LIB)/obj.cmo                 \
+  $(LIB)/int32.cmo $(LIB)/int64.cmo $(LIB)/nativeint.cmo                    \
+  $(LIB)/lexing.cmo $(LIB)/parsing.cmo $(LIB)/set.cmo $(LIB)/map.cmo        \
+  $(LIB)/stack.cmo $(LIB)/queue.cmo $(LIB)/camlinternalLazy.cmo             \
+  $(LIB)/lazy.cmo $(LIB)/stream.cmo $(LIB)/buffer.cmo                       \
+  $(LIB)/printf.cmo $(LIB)/arg.cmo $(LIB)/printexc.cmo $(LIB)/gc.cmo        \
+  $(LIB)/digest.cmo $(LIB)/random.cmo $(LIB)/hashtbl.cmo                    \
+  $(LIB)/format.cmo $(LIB)/scanf.cmo $(LIB)/camlinternalOO.cmo              \
+  $(LIB)/oo.cmo $(LIB)/camlinternalMod.cmo $(LIB)/genlex.cmo                \
+  $(LIB)/callback.cmo $(LIB)/weak.cmo $(LIB)/filename.cmo                   \
+  $(LIB)/complex.cmo $(LIB)/arrayLabels.cmo $(LIB)/listLabels.cmo           \
+  $(LIB)/stringLabels.cmo $(LIB)/stdLabels.cmo $(LIB)/moreLabels.cmo
 
 UNIXLIB=../unix
 
index ee687a85b9c6dd1d6c514dba7f477d7c4052e84a..ac47798412d5f068d998b228fe7094966bdf7104 100644 (file)
@@ -11,7 +11,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: condition.ml 11156 2011-07-27 14:17:02Z doligez $ *)
 
 type t = { mutable waiting: Thread.t list }
 
index d13b30d866a65f0d96baf5e40c49f9c13ec20f22..ec8b8b2414fa750643a2a739d8e47eb8c081c782 100644 (file)
@@ -11,7 +11,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: condition.mli 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (** Condition variables to synchronize between threads.
 
index ff137e981d0adcacf49014909dbc303e514b2ed0..66adc439f757c395bd54f3b4819404e07048c11f 100644 (file)
@@ -11,7 +11,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: event.ml 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (* Events *)
 type 'a basic_event =
index 11842e5ad038da93ac88c95a1cb28b8b172c347b..dc5a0a0bf61a7adf18688e9ccc2b127ea512a998 100644 (file)
@@ -11,7 +11,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: event.mli 12386 2012-04-20 15:33:00Z doligez $ *)
 
 (** First-class synchronous communication.
 
@@ -59,8 +59,8 @@ val wrap_abort : 'a event -> (unit -> unit) -> 'a event
 
 val guard : (unit -> 'a event) -> 'a event
 (** [guard fn] returns the event that, when synchronized, computes
-   [fn()] and behaves as the resulting event. This allows to
-   compute events with side-effects at the time of the synchronization
+   [fn()] and behaves as the resulting event. This allows events with
+   side-effects to be computed at the time of the synchronization
    operation. *)
 
 val sync : 'a event -> 'a
index 6f2bcfed78dbc68e62528d838f3d7018c172dcf2..19b7e1b6954eda889fca4a7048e48708d20cc1f0 100644 (file)
@@ -11,7 +11,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: marshal.ml 11156 2011-07-27 14:17:02Z doligez $ *)
 
 type extern_flags =
     No_sharing
index 12e3f534dde80a363a2ed921c545e2f439fe62b6..f96965e7c2a4bc8186dcc77927f313fd52537021 100644 (file)
@@ -11,7 +11,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: mutex.ml 11156 2011-07-27 14:17:02Z doligez $ *)
 
 type t = { mutable locked: bool; mutable waiting: Thread.t list }
 
index 844d4e5d4c27e5b7ef2db686c1cd03602478d052..c18c79ba8a6fd817eaa20179a04ea547d5978c45 100644 (file)
@@ -11,7 +11,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: mutex.mli 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (** Locks for mutual exclusion.
 
index f83a1cf0dc8d4b56202eb6774d1011d4d47a7d80..2ddb980c94dd05f5d8bf1342797988d478a60ffe 100644 (file)
@@ -11,7 +11,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: pervasives.ml 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (* Same as ../../stdlib/pervasives.ml, except that I/O functions have
    been redefined to not block the whole process, but only the calling
index 3f51979032ae2ccb1c5e38053bf87b1534e2eefb..bd67cf704bd11817a0606fb3a4794919508461f2 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: scheduler.c 11156 2011-07-27 14:17:02Z doligez $ */
 
 /* The thread scheduler */
 
index f4bbd8a5ae40687947db6dd7013443d6f853d75a..2b00b98e28891575e8c1c7168f4b6cf67a307797 100644 (file)
@@ -11,7 +11,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: thread.ml 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (* User-level threads *)
 
index e97e55ab1530c9be0e3ea6639d4747787d1b5328..3ee577d94e065e4f147ca036db5b087c7c0c19a7 100644 (file)
@@ -11,7 +11,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: thread.mli 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (** Lightweight threads. *)
 
index bd4181b99689b61bf06cad16f7b03da4d74468a1..04dea9ea738dcaa81126a865140c0c124dd9eaa7 100644 (file)
@@ -11,7 +11,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: threadUnix.ml 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (* Module [ThreadUnix]: thread-compatible system calls *)
 
index 22ed9330e89d0af9117df1caf40ba2100e69cbe0..554d504cd1573da09539427d8a2fe9e97dfb20d8 100644 (file)
@@ -11,7 +11,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: threadUnix.mli 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (** Thread-compatible system calls.
 
index 609c098a3dc4da8ebec4c1a769d723128bf71987..e985aa46233bb9eeec61924acfb45970fb3b1a53 100644 (file)
@@ -11,7 +11,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: unix.ml 11304 2011-12-13 16:18:13Z frisch $ *)
 
 (* An alternate implementation of the Unix module from ../unix
    which is safe in conjunction with bytecode threads. *)
index ef8832f9b678c5ea5d9b7a9b0cd5a574a7b5ad80..9b3690d9526bd0b0f11c9e650a93b88df9a623b5 100644 (file)
 accept.o: accept.c ../../byterun/mlvalues.h ../../byterun/compatibility.h \
 ../../byterun/config.h ../../byterun/../config/m.h \
 ../../byterun/../config/s.h ../../byterun/misc.h ../../byterun/alloc.h \
 ../../byterun/mlvalues.h ../../byterun/fail.h ../../byterun/memory.h \
 ../../byterun/gc.h ../../byterun/major_gc.h ../../byterun/freelist.h \
 ../../byterun/minor_gc.h ../../byterun/signals.h unixsupport.h \
 socketaddr.h ../../byterun/misc.h
+ ../../byterun/config.h ../../byterun/../config/m.h \
+ ../../byterun/../config/s.h ../../byterun/misc.h ../../byterun/alloc.h \
+ ../../byterun/mlvalues.h ../../byterun/fail.h ../../byterun/memory.h \
+ ../../byterun/gc.h ../../byterun/major_gc.h ../../byterun/freelist.h \
+ ../../byterun/minor_gc.h ../../byterun/signals.h unixsupport.h \
+ socketaddr.h ../../byterun/misc.h
 access.o: access.c ../../byterun/mlvalues.h ../../byterun/compatibility.h \
 ../../byterun/config.h ../../byterun/../config/m.h \
 ../../byterun/../config/s.h ../../byterun/misc.h ../../byterun/alloc.h \
 ../../byterun/mlvalues.h unixsupport.h
+ ../../byterun/config.h ../../byterun/../config/m.h \
+ ../../byterun/../config/s.h ../../byterun/misc.h ../../byterun/alloc.h \
+ ../../byterun/mlvalues.h unixsupport.h
 addrofstr.o: addrofstr.c ../../byterun/mlvalues.h \
 ../../byterun/compatibility.h ../../byterun/config.h \
 ../../byterun/../config/m.h ../../byterun/../config/s.h \
 ../../byterun/misc.h ../../byterun/fail.h ../../byterun/mlvalues.h \
 unixsupport.h socketaddr.h ../../byterun/misc.h
+ ../../byterun/compatibility.h ../../byterun/config.h \
+ ../../byterun/../config/m.h ../../byterun/../config/s.h \
+ ../../byterun/misc.h ../../byterun/fail.h ../../byterun/mlvalues.h \
+ unixsupport.h socketaddr.h ../../byterun/misc.h
 alarm.o: alarm.c ../../byterun/mlvalues.h ../../byterun/compatibility.h \
 ../../byterun/config.h ../../byterun/../config/m.h \
 ../../byterun/../config/s.h ../../byterun/misc.h unixsupport.h
+ ../../byterun/config.h ../../byterun/../config/m.h \
+ ../../byterun/../config/s.h ../../byterun/misc.h unixsupport.h
 bind.o: bind.c ../../byterun/fail.h ../../byterun/compatibility.h \
-  ../../byterun/misc.h ../../byterun/config.h ../../byterun/../config/m.h \
-  ../../byterun/../config/s.h ../../byterun/mlvalues.h \
-  ../../byterun/mlvalues.h unixsupport.h socketaddr.h \
-  ../../byterun/misc.h
+ ../../byterun/misc.h ../../byterun/config.h ../../byterun/../config/m.h \
+ ../../byterun/../config/s.h ../../byterun/mlvalues.h \
+ ../../byterun/mlvalues.h unixsupport.h socketaddr.h ../../byterun/misc.h
 chdir.o: chdir.c ../../byterun/mlvalues.h ../../byterun/compatibility.h \
 ../../byterun/config.h ../../byterun/../config/m.h \
 ../../byterun/../config/s.h ../../byterun/misc.h unixsupport.h
+ ../../byterun/config.h ../../byterun/../config/m.h \
+ ../../byterun/../config/s.h ../../byterun/misc.h unixsupport.h
 chmod.o: chmod.c ../../byterun/mlvalues.h ../../byterun/compatibility.h \
 ../../byterun/config.h ../../byterun/../config/m.h \
 ../../byterun/../config/s.h ../../byterun/misc.h unixsupport.h
+ ../../byterun/config.h ../../byterun/../config/m.h \
+ ../../byterun/../config/s.h ../../byterun/misc.h unixsupport.h
 chown.o: chown.c ../../byterun/mlvalues.h ../../byterun/compatibility.h \
 ../../byterun/config.h ../../byterun/../config/m.h \
 ../../byterun/../config/s.h ../../byterun/misc.h unixsupport.h
+ ../../byterun/config.h ../../byterun/../config/m.h \
+ ../../byterun/../config/s.h ../../byterun/misc.h unixsupport.h
 chroot.o: chroot.c ../../byterun/mlvalues.h ../../byterun/compatibility.h \
 ../../byterun/config.h ../../byterun/../config/m.h \
 ../../byterun/../config/s.h ../../byterun/misc.h unixsupport.h
+ ../../byterun/config.h ../../byterun/../config/m.h \
+ ../../byterun/../config/s.h ../../byterun/misc.h unixsupport.h
 close.o: close.c ../../byterun/mlvalues.h ../../byterun/compatibility.h \
 ../../byterun/config.h ../../byterun/../config/m.h \
 ../../byterun/../config/s.h ../../byterun/misc.h unixsupport.h
+ ../../byterun/config.h ../../byterun/../config/m.h \
+ ../../byterun/../config/s.h ../../byterun/misc.h unixsupport.h
 closedir.o: closedir.c ../../byterun/mlvalues.h \
 ../../byterun/compatibility.h ../../byterun/config.h \
 ../../byterun/../config/m.h ../../byterun/../config/s.h \
 ../../byterun/misc.h unixsupport.h
+ ../../byterun/compatibility.h ../../byterun/config.h \
+ ../../byterun/../config/m.h ../../byterun/../config/s.h \
+ ../../byterun/misc.h unixsupport.h
 connect.o: connect.c ../../byterun/fail.h ../../byterun/compatibility.h \
 ../../byterun/misc.h ../../byterun/config.h ../../byterun/../config/m.h \
 ../../byterun/../config/s.h ../../byterun/mlvalues.h \
 ../../byterun/mlvalues.h ../../byterun/signals.h unixsupport.h \
 socketaddr.h ../../byterun/misc.h
+ ../../byterun/misc.h ../../byterun/config.h ../../byterun/../config/m.h \
+ ../../byterun/../config/s.h ../../byterun/mlvalues.h \
+ ../../byterun/mlvalues.h ../../byterun/signals.h unixsupport.h \
+ socketaddr.h ../../byterun/misc.h
 cst2constr.o: cst2constr.c ../../byterun/mlvalues.h \
 ../../byterun/compatibility.h ../../byterun/config.h \
 ../../byterun/../config/m.h ../../byterun/../config/s.h \
 ../../byterun/misc.h ../../byterun/fail.h ../../byterun/mlvalues.h \
 cst2constr.h
+ ../../byterun/compatibility.h ../../byterun/config.h \
+ ../../byterun/../config/m.h ../../byterun/../config/s.h \
+ ../../byterun/misc.h ../../byterun/fail.h ../../byterun/mlvalues.h \
+ cst2constr.h
 cstringv.o: cstringv.c ../../byterun/mlvalues.h \
 ../../byterun/compatibility.h ../../byterun/config.h \
 ../../byterun/../config/m.h ../../byterun/../config/s.h \
 ../../byterun/misc.h ../../byterun/memory.h ../../byterun/gc.h \
 ../../byterun/mlvalues.h ../../byterun/major_gc.h \
 ../../byterun/freelist.h ../../byterun/minor_gc.h unixsupport.h
+ ../../byterun/compatibility.h ../../byterun/config.h \
+ ../../byterun/../config/m.h ../../byterun/../config/s.h \
+ ../../byterun/misc.h ../../byterun/memory.h ../../byterun/gc.h \
+ ../../byterun/mlvalues.h ../../byterun/major_gc.h \
+ ../../byterun/freelist.h ../../byterun/minor_gc.h unixsupport.h
 dup.o: dup.c ../../byterun/mlvalues.h ../../byterun/compatibility.h \
 ../../byterun/config.h ../../byterun/../config/m.h \
 ../../byterun/../config/s.h ../../byterun/misc.h unixsupport.h
+ ../../byterun/config.h ../../byterun/../config/m.h \
+ ../../byterun/../config/s.h ../../byterun/misc.h unixsupport.h
 dup2.o: dup2.c ../../byterun/mlvalues.h ../../byterun/compatibility.h \
 ../../byterun/config.h ../../byterun/../config/m.h \
 ../../byterun/../config/s.h ../../byterun/misc.h unixsupport.h
+ ../../byterun/config.h ../../byterun/../config/m.h \
+ ../../byterun/../config/s.h ../../byterun/misc.h unixsupport.h
 envir.o: envir.c ../../byterun/mlvalues.h ../../byterun/compatibility.h \
 ../../byterun/config.h ../../byterun/../config/m.h \
 ../../byterun/../config/s.h ../../byterun/misc.h ../../byterun/alloc.h \
 ../../byterun/mlvalues.h
+ ../../byterun/config.h ../../byterun/../config/m.h \
+ ../../byterun/../config/s.h ../../byterun/misc.h ../../byterun/alloc.h \
+ ../../byterun/mlvalues.h
 errmsg.o: errmsg.c ../../byterun/mlvalues.h ../../byterun/compatibility.h \
 ../../byterun/config.h ../../byterun/../config/m.h \
 ../../byterun/../config/s.h ../../byterun/misc.h ../../byterun/alloc.h \
 ../../byterun/mlvalues.h
+ ../../byterun/config.h ../../byterun/../config/m.h \
+ ../../byterun/../config/s.h ../../byterun/misc.h ../../byterun/alloc.h \
+ ../../byterun/mlvalues.h
 execv.o: execv.c ../../byterun/mlvalues.h ../../byterun/compatibility.h \
 ../../byterun/config.h ../../byterun/../config/m.h \
 ../../byterun/../config/s.h ../../byterun/misc.h ../../byterun/memory.h \
 ../../byterun/gc.h ../../byterun/mlvalues.h ../../byterun/major_gc.h \
 ../../byterun/freelist.h ../../byterun/minor_gc.h unixsupport.h
+ ../../byterun/config.h ../../byterun/../config/m.h \
+ ../../byterun/../config/s.h ../../byterun/misc.h ../../byterun/memory.h \
+ ../../byterun/gc.h ../../byterun/mlvalues.h ../../byterun/major_gc.h \
+ ../../byterun/freelist.h ../../byterun/minor_gc.h unixsupport.h
 execve.o: execve.c ../../byterun/mlvalues.h ../../byterun/compatibility.h \
 ../../byterun/config.h ../../byterun/../config/m.h \
 ../../byterun/../config/s.h ../../byterun/misc.h ../../byterun/memory.h \
 ../../byterun/gc.h ../../byterun/mlvalues.h ../../byterun/major_gc.h \
 ../../byterun/freelist.h ../../byterun/minor_gc.h unixsupport.h
+ ../../byterun/config.h ../../byterun/../config/m.h \
+ ../../byterun/../config/s.h ../../byterun/misc.h ../../byterun/memory.h \
+ ../../byterun/gc.h ../../byterun/mlvalues.h ../../byterun/major_gc.h \
+ ../../byterun/freelist.h ../../byterun/minor_gc.h unixsupport.h
 execvp.o: execvp.c ../../byterun/mlvalues.h ../../byterun/compatibility.h \
 ../../byterun/config.h ../../byterun/../config/m.h \
 ../../byterun/../config/s.h ../../byterun/misc.h ../../byterun/memory.h \
 ../../byterun/gc.h ../../byterun/mlvalues.h ../../byterun/major_gc.h \
 ../../byterun/freelist.h ../../byterun/minor_gc.h unixsupport.h
+ ../../byterun/config.h ../../byterun/../config/m.h \
+ ../../byterun/../config/s.h ../../byterun/misc.h ../../byterun/memory.h \
+ ../../byterun/gc.h ../../byterun/mlvalues.h ../../byterun/major_gc.h \
+ ../../byterun/freelist.h ../../byterun/minor_gc.h unixsupport.h
 exit.o: exit.c ../../byterun/mlvalues.h ../../byterun/compatibility.h \
 ../../byterun/config.h ../../byterun/../config/m.h \
 ../../byterun/../config/s.h ../../byterun/misc.h unixsupport.h
+ ../../byterun/config.h ../../byterun/../config/m.h \
+ ../../byterun/../config/s.h ../../byterun/misc.h unixsupport.h
 fchmod.o: fchmod.c ../../byterun/fail.h ../../byterun/compatibility.h \
 ../../byterun/misc.h ../../byterun/config.h ../../byterun/../config/m.h \
 ../../byterun/../config/s.h ../../byterun/mlvalues.h \
 ../../byterun/mlvalues.h unixsupport.h
+ ../../byterun/misc.h ../../byterun/config.h ../../byterun/../config/m.h \
+ ../../byterun/../config/s.h ../../byterun/mlvalues.h \
+ ../../byterun/mlvalues.h unixsupport.h
 fchown.o: fchown.c ../../byterun/fail.h ../../byterun/compatibility.h \
 ../../byterun/misc.h ../../byterun/config.h ../../byterun/../config/m.h \
 ../../byterun/../config/s.h ../../byterun/mlvalues.h \
 ../../byterun/mlvalues.h unixsupport.h
+ ../../byterun/misc.h ../../byterun/config.h ../../byterun/../config/m.h \
+ ../../byterun/../config/s.h ../../byterun/mlvalues.h \
+ ../../byterun/mlvalues.h unixsupport.h
 fcntl.o: fcntl.c ../../byterun/fail.h ../../byterun/compatibility.h \
 ../../byterun/misc.h ../../byterun/config.h ../../byterun/../config/m.h \
 ../../byterun/../config/s.h ../../byterun/mlvalues.h \
 ../../byterun/mlvalues.h unixsupport.h
+ ../../byterun/misc.h ../../byterun/config.h ../../byterun/../config/m.h \
+ ../../byterun/../config/s.h ../../byterun/mlvalues.h \
+ ../../byterun/mlvalues.h unixsupport.h
 fork.o: fork.c ../../byterun/mlvalues.h ../../byterun/compatibility.h \
 ../../byterun/config.h ../../byterun/../config/m.h \
 ../../byterun/../config/s.h ../../byterun/misc.h \
 ../../byterun/debugger.h ../../byterun/mlvalues.h unixsupport.h
+ ../../byterun/config.h ../../byterun/../config/m.h \
+ ../../byterun/../config/s.h ../../byterun/misc.h \
+ ../../byterun/debugger.h ../../byterun/mlvalues.h unixsupport.h
 ftruncate.o: ftruncate.c ../../byterun/fail.h \
 ../../byterun/compatibility.h ../../byterun/misc.h \
 ../../byterun/config.h ../../byterun/../config/m.h \
 ../../byterun/../config/s.h ../../byterun/mlvalues.h \
 ../../byterun/mlvalues.h ../../byterun/io.h unixsupport.h
+ ../../byterun/compatibility.h ../../byterun/misc.h \
+ ../../byterun/config.h ../../byterun/../config/m.h \
+ ../../byterun/../config/s.h ../../byterun/mlvalues.h \
+ ../../byterun/mlvalues.h ../../byterun/io.h unixsupport.h
 getaddrinfo.o: getaddrinfo.c ../../byterun/mlvalues.h \
 ../../byterun/compatibility.h ../../byterun/config.h \
 ../../byterun/../config/m.h ../../byterun/../config/s.h \
 ../../byterun/misc.h ../../byterun/alloc.h ../../byterun/mlvalues.h \
 ../../byterun/fail.h ../../byterun/memory.h ../../byterun/gc.h \
 ../../byterun/major_gc.h ../../byterun/freelist.h \
 ../../byterun/minor_gc.h ../../byterun/signals.h unixsupport.h \
 cst2constr.h socketaddr.h ../../byterun/misc.h
+ ../../byterun/compatibility.h ../../byterun/config.h \
+ ../../byterun/../config/m.h ../../byterun/../config/s.h \
+ ../../byterun/misc.h ../../byterun/alloc.h ../../byterun/mlvalues.h \
+ ../../byterun/fail.h ../../byterun/memory.h ../../byterun/gc.h \
+ ../../byterun/major_gc.h ../../byterun/freelist.h \
+ ../../byterun/minor_gc.h ../../byterun/signals.h unixsupport.h \
+ cst2constr.h socketaddr.h ../../byterun/misc.h
 getcwd.o: getcwd.c ../../byterun/mlvalues.h ../../byterun/compatibility.h \
 ../../byterun/config.h ../../byterun/../config/m.h \
 ../../byterun/../config/s.h ../../byterun/misc.h ../../byterun/alloc.h \
 ../../byterun/mlvalues.h ../../byterun/fail.h unixsupport.h
+ ../../byterun/config.h ../../byterun/../config/m.h \
+ ../../byterun/../config/s.h ../../byterun/misc.h ../../byterun/alloc.h \
+ ../../byterun/mlvalues.h ../../byterun/fail.h unixsupport.h
 getegid.o: getegid.c ../../byterun/mlvalues.h \
 ../../byterun/compatibility.h ../../byterun/config.h \
 ../../byterun/../config/m.h ../../byterun/../config/s.h \
 ../../byterun/misc.h unixsupport.h
+ ../../byterun/compatibility.h ../../byterun/config.h \
+ ../../byterun/../config/m.h ../../byterun/../config/s.h \
+ ../../byterun/misc.h unixsupport.h
 geteuid.o: geteuid.c ../../byterun/mlvalues.h \
 ../../byterun/compatibility.h ../../byterun/config.h \
 ../../byterun/../config/m.h ../../byterun/../config/s.h \
 ../../byterun/misc.h unixsupport.h
+ ../../byterun/compatibility.h ../../byterun/config.h \
+ ../../byterun/../config/m.h ../../byterun/../config/s.h \
+ ../../byterun/misc.h unixsupport.h
 getgid.o: getgid.c ../../byterun/mlvalues.h ../../byterun/compatibility.h \
 ../../byterun/config.h ../../byterun/../config/m.h \
 ../../byterun/../config/s.h ../../byterun/misc.h unixsupport.h
+ ../../byterun/config.h ../../byterun/../config/m.h \
+ ../../byterun/../config/s.h ../../byterun/misc.h unixsupport.h
 getgr.o: getgr.c ../../byterun/mlvalues.h ../../byterun/compatibility.h \
 ../../byterun/config.h ../../byterun/../config/m.h \
 ../../byterun/../config/s.h ../../byterun/misc.h ../../byterun/fail.h \
 ../../byterun/mlvalues.h ../../byterun/alloc.h ../../byterun/memory.h \
 ../../byterun/gc.h ../../byterun/major_gc.h ../../byterun/freelist.h \
 ../../byterun/minor_gc.h unixsupport.h
+ ../../byterun/config.h ../../byterun/../config/m.h \
+ ../../byterun/../config/s.h ../../byterun/misc.h ../../byterun/fail.h \
+ ../../byterun/mlvalues.h ../../byterun/alloc.h ../../byterun/memory.h \
+ ../../byterun/gc.h ../../byterun/major_gc.h ../../byterun/freelist.h \
+ ../../byterun/minor_gc.h unixsupport.h
 getgroups.o: getgroups.c ../../byterun/mlvalues.h \
 ../../byterun/compatibility.h ../../byterun/config.h \
 ../../byterun/../config/m.h ../../byterun/../config/s.h \
 ../../byterun/misc.h ../../byterun/alloc.h ../../byterun/mlvalues.h \
 ../../byterun/fail.h unixsupport.h
+ ../../byterun/compatibility.h ../../byterun/config.h \
+ ../../byterun/../config/m.h ../../byterun/../config/s.h \
+ ../../byterun/misc.h ../../byterun/alloc.h ../../byterun/mlvalues.h \
+ ../../byterun/fail.h unixsupport.h
 gethost.o: gethost.c ../../byterun/mlvalues.h \
 ../../byterun/compatibility.h ../../byterun/config.h \
 ../../byterun/../config/m.h ../../byterun/../config/s.h \
 ../../byterun/misc.h ../../byterun/alloc.h ../../byterun/mlvalues.h \
 ../../byterun/fail.h ../../byterun/memory.h ../../byterun/gc.h \
 ../../byterun/major_gc.h ../../byterun/freelist.h \
 ../../byterun/minor_gc.h ../../byterun/signals.h unixsupport.h \
 socketaddr.h ../../byterun/misc.h
+ ../../byterun/compatibility.h ../../byterun/config.h \
+ ../../byterun/../config/m.h ../../byterun/../config/s.h \
+ ../../byterun/misc.h ../../byterun/alloc.h ../../byterun/mlvalues.h \
+ ../../byterun/fail.h ../../byterun/memory.h ../../byterun/gc.h \
+ ../../byterun/major_gc.h ../../byterun/freelist.h \
+ ../../byterun/minor_gc.h ../../byterun/signals.h unixsupport.h \
+ socketaddr.h ../../byterun/misc.h
 gethostname.o: gethostname.c ../../byterun/mlvalues.h \
 ../../byterun/compatibility.h ../../byterun/config.h \
 ../../byterun/../config/m.h ../../byterun/../config/s.h \
 ../../byterun/misc.h ../../byterun/alloc.h ../../byterun/mlvalues.h \
 ../../byterun/fail.h unixsupport.h
+ ../../byterun/compatibility.h ../../byterun/config.h \
+ ../../byterun/../config/m.h ../../byterun/../config/s.h \
+ ../../byterun/misc.h ../../byterun/alloc.h ../../byterun/mlvalues.h \
+ ../../byterun/fail.h unixsupport.h
 getlogin.o: getlogin.c ../../byterun/mlvalues.h \
 ../../byterun/compatibility.h ../../byterun/config.h \
 ../../byterun/../config/m.h ../../byterun/../config/s.h \
 ../../byterun/misc.h ../../byterun/alloc.h ../../byterun/mlvalues.h \
 unixsupport.h
+ ../../byterun/compatibility.h ../../byterun/config.h \
+ ../../byterun/../config/m.h ../../byterun/../config/s.h \
+ ../../byterun/misc.h ../../byterun/alloc.h ../../byterun/mlvalues.h \
+ unixsupport.h
 getnameinfo.o: getnameinfo.c ../../byterun/mlvalues.h \
 ../../byterun/compatibility.h ../../byterun/config.h \
 ../../byterun/../config/m.h ../../byterun/../config/s.h \
 ../../byterun/misc.h ../../byterun/alloc.h ../../byterun/mlvalues.h \
 ../../byterun/fail.h ../../byterun/memory.h ../../byterun/gc.h \
 ../../byterun/major_gc.h ../../byterun/freelist.h \
 ../../byterun/minor_gc.h ../../byterun/signals.h unixsupport.h \
 socketaddr.h ../../byterun/misc.h
+ ../../byterun/compatibility.h ../../byterun/config.h \
+ ../../byterun/../config/m.h ../../byterun/../config/s.h \
+ ../../byterun/misc.h ../../byterun/alloc.h ../../byterun/mlvalues.h \
+ ../../byterun/fail.h ../../byterun/memory.h ../../byterun/gc.h \
+ ../../byterun/major_gc.h ../../byterun/freelist.h \
+ ../../byterun/minor_gc.h ../../byterun/signals.h unixsupport.h \
+ socketaddr.h ../../byterun/misc.h
 getpeername.o: getpeername.c ../../byterun/fail.h \
-  ../../byterun/compatibility.h ../../byterun/misc.h \
-  ../../byterun/config.h ../../byterun/../config/m.h \
-  ../../byterun/../config/s.h ../../byterun/mlvalues.h \
-  ../../byterun/mlvalues.h unixsupport.h socketaddr.h \
-  ../../byterun/misc.h
+ ../../byterun/compatibility.h ../../byterun/misc.h \
+ ../../byterun/config.h ../../byterun/../config/m.h \
+ ../../byterun/../config/s.h ../../byterun/mlvalues.h \
+ ../../byterun/mlvalues.h unixsupport.h socketaddr.h ../../byterun/misc.h
 getpid.o: getpid.c ../../byterun/mlvalues.h ../../byterun/compatibility.h \
 ../../byterun/config.h ../../byterun/../config/m.h \
 ../../byterun/../config/s.h ../../byterun/misc.h unixsupport.h
+ ../../byterun/config.h ../../byterun/../config/m.h \
+ ../../byterun/../config/s.h ../../byterun/misc.h unixsupport.h
 getppid.o: getppid.c ../../byterun/mlvalues.h \
 ../../byterun/compatibility.h ../../byterun/config.h \
 ../../byterun/../config/m.h ../../byterun/../config/s.h \
 ../../byterun/misc.h unixsupport.h
+ ../../byterun/compatibility.h ../../byterun/config.h \
+ ../../byterun/../config/m.h ../../byterun/../config/s.h \
+ ../../byterun/misc.h unixsupport.h
 getproto.o: getproto.c ../../byterun/mlvalues.h \
 ../../byterun/compatibility.h ../../byterun/config.h \
 ../../byterun/../config/m.h ../../byterun/../config/s.h \
 ../../byterun/misc.h ../../byterun/alloc.h ../../byterun/mlvalues.h \
 ../../byterun/fail.h ../../byterun/memory.h ../../byterun/gc.h \
 ../../byterun/major_gc.h ../../byterun/freelist.h \
 ../../byterun/minor_gc.h unixsupport.h
+ ../../byterun/compatibility.h ../../byterun/config.h \
+ ../../byterun/../config/m.h ../../byterun/../config/s.h \
+ ../../byterun/misc.h ../../byterun/alloc.h ../../byterun/mlvalues.h \
+ ../../byterun/fail.h ../../byterun/memory.h ../../byterun/gc.h \
+ ../../byterun/major_gc.h ../../byterun/freelist.h \
+ ../../byterun/minor_gc.h unixsupport.h
 getpw.o: getpw.c ../../byterun/mlvalues.h ../../byterun/compatibility.h \
 ../../byterun/config.h ../../byterun/../config/m.h \
 ../../byterun/../config/s.h ../../byterun/misc.h ../../byterun/alloc.h \
 ../../byterun/mlvalues.h ../../byterun/memory.h ../../byterun/gc.h \
 ../../byterun/major_gc.h ../../byterun/freelist.h \
 ../../byterun/minor_gc.h ../../byterun/fail.h unixsupport.h
+ ../../byterun/config.h ../../byterun/../config/m.h \
+ ../../byterun/../config/s.h ../../byterun/misc.h ../../byterun/alloc.h \
+ ../../byterun/mlvalues.h ../../byterun/memory.h ../../byterun/gc.h \
+ ../../byterun/major_gc.h ../../byterun/freelist.h \
+ ../../byterun/minor_gc.h ../../byterun/fail.h unixsupport.h
 getserv.o: getserv.c ../../byterun/mlvalues.h \
 ../../byterun/compatibility.h ../../byterun/config.h \
 ../../byterun/../config/m.h ../../byterun/../config/s.h \
 ../../byterun/misc.h ../../byterun/alloc.h ../../byterun/mlvalues.h \
 ../../byterun/fail.h ../../byterun/memory.h ../../byterun/gc.h \
 ../../byterun/major_gc.h ../../byterun/freelist.h \
 ../../byterun/minor_gc.h unixsupport.h
+ ../../byterun/compatibility.h ../../byterun/config.h \
+ ../../byterun/../config/m.h ../../byterun/../config/s.h \
+ ../../byterun/misc.h ../../byterun/alloc.h ../../byterun/mlvalues.h \
+ ../../byterun/fail.h ../../byterun/memory.h ../../byterun/gc.h \
+ ../../byterun/major_gc.h ../../byterun/freelist.h \
+ ../../byterun/minor_gc.h unixsupport.h
 getsockname.o: getsockname.c ../../byterun/fail.h \
-  ../../byterun/compatibility.h ../../byterun/misc.h \
-  ../../byterun/config.h ../../byterun/../config/m.h \
-  ../../byterun/../config/s.h ../../byterun/mlvalues.h \
-  ../../byterun/mlvalues.h unixsupport.h socketaddr.h \
-  ../../byterun/misc.h
+ ../../byterun/compatibility.h ../../byterun/misc.h \
+ ../../byterun/config.h ../../byterun/../config/m.h \
+ ../../byterun/../config/s.h ../../byterun/mlvalues.h \
+ ../../byterun/mlvalues.h unixsupport.h socketaddr.h ../../byterun/misc.h
 gettimeofday.o: gettimeofday.c ../../byterun/mlvalues.h \
 ../../byterun/compatibility.h ../../byterun/config.h \
 ../../byterun/../config/m.h ../../byterun/../config/s.h \
 ../../byterun/misc.h ../../byterun/alloc.h ../../byterun/mlvalues.h \
 ../../byterun/fail.h unixsupport.h
+ ../../byterun/compatibility.h ../../byterun/config.h \
+ ../../byterun/../config/m.h ../../byterun/../config/s.h \
+ ../../byterun/misc.h ../../byterun/alloc.h ../../byterun/mlvalues.h \
+ ../../byterun/fail.h unixsupport.h
 getuid.o: getuid.c ../../byterun/mlvalues.h ../../byterun/compatibility.h \
 ../../byterun/config.h ../../byterun/../config/m.h \
 ../../byterun/../config/s.h ../../byterun/misc.h unixsupport.h
+ ../../byterun/config.h ../../byterun/../config/m.h \
+ ../../byterun/../config/s.h ../../byterun/misc.h unixsupport.h
 gmtime.o: gmtime.c ../../byterun/mlvalues.h ../../byterun/compatibility.h \
 ../../byterun/config.h ../../byterun/../config/m.h \
 ../../byterun/../config/s.h ../../byterun/misc.h ../../byterun/alloc.h \
 ../../byterun/mlvalues.h ../../byterun/fail.h ../../byterun/memory.h \
 ../../byterun/gc.h ../../byterun/major_gc.h ../../byterun/freelist.h \
 ../../byterun/minor_gc.h unixsupport.h
+ ../../byterun/config.h ../../byterun/../config/m.h \
+ ../../byterun/../config/s.h ../../byterun/misc.h ../../byterun/alloc.h \
+ ../../byterun/mlvalues.h ../../byterun/fail.h ../../byterun/memory.h \
+ ../../byterun/gc.h ../../byterun/major_gc.h ../../byterun/freelist.h \
+ ../../byterun/minor_gc.h unixsupport.h
 initgroups.o: initgroups.c ../../byterun/mlvalues.h \
 ../../byterun/compatibility.h ../../byterun/config.h \
 ../../byterun/../config/m.h ../../byterun/../config/s.h \
 ../../byterun/misc.h ../../byterun/alloc.h ../../byterun/mlvalues.h \
 ../../byterun/fail.h unixsupport.h
+ ../../byterun/compatibility.h ../../byterun/config.h \
+ ../../byterun/../config/m.h ../../byterun/../config/s.h \
+ ../../byterun/misc.h ../../byterun/alloc.h ../../byterun/mlvalues.h \
+ ../../byterun/fail.h unixsupport.h
 isatty.o: isatty.c ../../byterun/mlvalues.h ../../byterun/compatibility.h \
 ../../byterun/config.h ../../byterun/../config/m.h \
 ../../byterun/../config/s.h ../../byterun/misc.h unixsupport.h
+ ../../byterun/config.h ../../byterun/../config/m.h \
+ ../../byterun/../config/s.h ../../byterun/misc.h unixsupport.h
 itimer.o: itimer.c ../../byterun/mlvalues.h ../../byterun/compatibility.h \
 ../../byterun/config.h ../../byterun/../config/m.h \
 ../../byterun/../config/s.h ../../byterun/misc.h ../../byterun/alloc.h \
 ../../byterun/mlvalues.h ../../byterun/fail.h ../../byterun/memory.h \
 ../../byterun/gc.h ../../byterun/major_gc.h ../../byterun/freelist.h \
 ../../byterun/minor_gc.h unixsupport.h
+ ../../byterun/config.h ../../byterun/../config/m.h \
+ ../../byterun/../config/s.h ../../byterun/misc.h ../../byterun/alloc.h \
+ ../../byterun/mlvalues.h ../../byterun/fail.h ../../byterun/memory.h \
+ ../../byterun/gc.h ../../byterun/major_gc.h ../../byterun/freelist.h \
+ ../../byterun/minor_gc.h unixsupport.h
 kill.o: kill.c ../../byterun/mlvalues.h ../../byterun/compatibility.h \
 ../../byterun/config.h ../../byterun/../config/m.h \
 ../../byterun/../config/s.h ../../byterun/misc.h ../../byterun/fail.h \
 ../../byterun/mlvalues.h unixsupport.h ../../byterun/signals.h
+ ../../byterun/config.h ../../byterun/../config/m.h \
+ ../../byterun/../config/s.h ../../byterun/misc.h ../../byterun/fail.h \
+ ../../byterun/mlvalues.h unixsupport.h ../../byterun/signals.h
 link.o: link.c ../../byterun/mlvalues.h ../../byterun/compatibility.h \
 ../../byterun/config.h ../../byterun/../config/m.h \
 ../../byterun/../config/s.h ../../byterun/misc.h unixsupport.h
+ ../../byterun/config.h ../../byterun/../config/m.h \
+ ../../byterun/../config/s.h ../../byterun/misc.h unixsupport.h
 listen.o: listen.c ../../byterun/fail.h ../../byterun/compatibility.h \
 ../../byterun/misc.h ../../byterun/config.h ../../byterun/../config/m.h \
 ../../byterun/../config/s.h ../../byterun/mlvalues.h \
 ../../byterun/mlvalues.h unixsupport.h
+ ../../byterun/misc.h ../../byterun/config.h ../../byterun/../config/m.h \
+ ../../byterun/../config/s.h ../../byterun/mlvalues.h \
+ ../../byterun/mlvalues.h unixsupport.h
 lockf.o: lockf.c ../../byterun/fail.h ../../byterun/compatibility.h \
 ../../byterun/misc.h ../../byterun/config.h ../../byterun/../config/m.h \
 ../../byterun/../config/s.h ../../byterun/mlvalues.h \
 ../../byterun/mlvalues.h ../../byterun/signals.h unixsupport.h
+ ../../byterun/misc.h ../../byterun/config.h ../../byterun/../config/m.h \
+ ../../byterun/../config/s.h ../../byterun/mlvalues.h \
+ ../../byterun/mlvalues.h ../../byterun/signals.h unixsupport.h
 lseek.o: lseek.c ../../byterun/mlvalues.h ../../byterun/compatibility.h \
 ../../byterun/config.h ../../byterun/../config/m.h \
 ../../byterun/../config/s.h ../../byterun/misc.h ../../byterun/alloc.h \
 ../../byterun/mlvalues.h ../../byterun/io.h ../../byterun/signals.h \
 unixsupport.h
+ ../../byterun/config.h ../../byterun/../config/m.h \
+ ../../byterun/../config/s.h ../../byterun/misc.h ../../byterun/alloc.h \
+ ../../byterun/mlvalues.h ../../byterun/io.h ../../byterun/signals.h \
+ unixsupport.h
 mkdir.o: mkdir.c ../../byterun/mlvalues.h ../../byterun/compatibility.h \
 ../../byterun/config.h ../../byterun/../config/m.h \
 ../../byterun/../config/s.h ../../byterun/misc.h unixsupport.h
+ ../../byterun/config.h ../../byterun/../config/m.h \
+ ../../byterun/../config/s.h ../../byterun/misc.h unixsupport.h
 mkfifo.o: mkfifo.c ../../byterun/fail.h ../../byterun/compatibility.h \
 ../../byterun/misc.h ../../byterun/config.h ../../byterun/../config/m.h \
 ../../byterun/../config/s.h ../../byterun/mlvalues.h \
 ../../byterun/mlvalues.h unixsupport.h
+ ../../byterun/misc.h ../../byterun/config.h ../../byterun/../config/m.h \
+ ../../byterun/../config/s.h ../../byterun/mlvalues.h \
+ ../../byterun/mlvalues.h unixsupport.h
 nice.o: nice.c ../../byterun/mlvalues.h ../../byterun/compatibility.h \
 ../../byterun/config.h ../../byterun/../config/m.h \
 ../../byterun/../config/s.h ../../byterun/misc.h unixsupport.h
+ ../../byterun/config.h ../../byterun/../config/m.h \
+ ../../byterun/../config/s.h ../../byterun/misc.h unixsupport.h
 open.o: open.c ../../byterun/mlvalues.h ../../byterun/compatibility.h \
 ../../byterun/config.h ../../byterun/../config/m.h \
 ../../byterun/../config/s.h ../../byterun/misc.h ../../byterun/alloc.h \
 ../../byterun/mlvalues.h ../../byterun/memory.h ../../byterun/gc.h \
 ../../byterun/major_gc.h ../../byterun/freelist.h \
 ../../byterun/minor_gc.h ../../byterun/signals.h unixsupport.h
+ ../../byterun/config.h ../../byterun/../config/m.h \
+ ../../byterun/../config/s.h ../../byterun/misc.h ../../byterun/alloc.h \
+ ../../byterun/mlvalues.h ../../byterun/memory.h ../../byterun/gc.h \
+ ../../byterun/major_gc.h ../../byterun/freelist.h \
+ ../../byterun/minor_gc.h ../../byterun/signals.h unixsupport.h
 opendir.o: opendir.c ../../byterun/mlvalues.h \
 ../../byterun/compatibility.h ../../byterun/config.h \
 ../../byterun/../config/m.h ../../byterun/../config/s.h \
 ../../byterun/misc.h ../../byterun/alloc.h ../../byterun/mlvalues.h \
 unixsupport.h
+ ../../byterun/compatibility.h ../../byterun/config.h \
+ ../../byterun/../config/m.h ../../byterun/../config/s.h \
+ ../../byterun/misc.h ../../byterun/alloc.h ../../byterun/mlvalues.h \
+ unixsupport.h
 pipe.o: pipe.c ../../byterun/mlvalues.h ../../byterun/compatibility.h \
 ../../byterun/config.h ../../byterun/../config/m.h \
 ../../byterun/../config/s.h ../../byterun/misc.h ../../byterun/alloc.h \
 ../../byterun/mlvalues.h unixsupport.h
+ ../../byterun/config.h ../../byterun/../config/m.h \
+ ../../byterun/../config/s.h ../../byterun/misc.h ../../byterun/alloc.h \
+ ../../byterun/mlvalues.h unixsupport.h
 putenv.o: putenv.c ../../byterun/fail.h ../../byterun/compatibility.h \
 ../../byterun/misc.h ../../byterun/config.h ../../byterun/../config/m.h \
 ../../byterun/../config/s.h ../../byterun/mlvalues.h \
 ../../byterun/memory.h ../../byterun/gc.h ../../byterun/major_gc.h \
 ../../byterun/freelist.h ../../byterun/minor_gc.h \
 ../../byterun/mlvalues.h unixsupport.h
+ ../../byterun/misc.h ../../byterun/config.h ../../byterun/../config/m.h \
+ ../../byterun/../config/s.h ../../byterun/mlvalues.h \
+ ../../byterun/memory.h ../../byterun/gc.h ../../byterun/major_gc.h \
+ ../../byterun/freelist.h ../../byterun/minor_gc.h \
+ ../../byterun/mlvalues.h unixsupport.h
 read.o: read.c ../../byterun/mlvalues.h ../../byterun/compatibility.h \
 ../../byterun/config.h ../../byterun/../config/m.h \
 ../../byterun/../config/s.h ../../byterun/misc.h ../../byterun/memory.h \
 ../../byterun/gc.h ../../byterun/mlvalues.h ../../byterun/major_gc.h \
 ../../byterun/freelist.h ../../byterun/minor_gc.h \
 ../../byterun/signals.h unixsupport.h
+ ../../byterun/config.h ../../byterun/../config/m.h \
+ ../../byterun/../config/s.h ../../byterun/misc.h ../../byterun/memory.h \
+ ../../byterun/gc.h ../../byterun/mlvalues.h ../../byterun/major_gc.h \
+ ../../byterun/freelist.h ../../byterun/minor_gc.h \
+ ../../byterun/signals.h unixsupport.h
 readdir.o: readdir.c ../../byterun/mlvalues.h \
 ../../byterun/compatibility.h ../../byterun/config.h \
 ../../byterun/../config/m.h ../../byterun/../config/s.h \
 ../../byterun/misc.h ../../byterun/fail.h ../../byterun/mlvalues.h \
 ../../byterun/alloc.h unixsupport.h
+ ../../byterun/compatibility.h ../../byterun/config.h \
+ ../../byterun/../config/m.h ../../byterun/../config/s.h \
+ ../../byterun/misc.h ../../byterun/fail.h ../../byterun/mlvalues.h \
+ ../../byterun/alloc.h unixsupport.h
 readlink.o: readlink.c ../../byterun/mlvalues.h \
 ../../byterun/compatibility.h ../../byterun/config.h \
 ../../byterun/../config/m.h ../../byterun/../config/s.h \
 ../../byterun/misc.h ../../byterun/alloc.h ../../byterun/mlvalues.h \
 ../../byterun/fail.h unixsupport.h
+ ../../byterun/compatibility.h ../../byterun/config.h \
+ ../../byterun/../config/m.h ../../byterun/../config/s.h \
+ ../../byterun/misc.h ../../byterun/alloc.h ../../byterun/mlvalues.h \
+ ../../byterun/fail.h unixsupport.h
 rename.o: rename.c ../../byterun/mlvalues.h ../../byterun/compatibility.h \
 ../../byterun/config.h ../../byterun/../config/m.h \
 ../../byterun/../config/s.h ../../byterun/misc.h unixsupport.h
+ ../../byterun/config.h ../../byterun/../config/m.h \
+ ../../byterun/../config/s.h ../../byterun/misc.h unixsupport.h
 rewinddir.o: rewinddir.c ../../byterun/fail.h \
 ../../byterun/compatibility.h ../../byterun/misc.h \
 ../../byterun/config.h ../../byterun/../config/m.h \
 ../../byterun/../config/s.h ../../byterun/mlvalues.h \
 ../../byterun/mlvalues.h unixsupport.h
+ ../../byterun/compatibility.h ../../byterun/misc.h \
+ ../../byterun/config.h ../../byterun/../config/m.h \
+ ../../byterun/../config/s.h ../../byterun/mlvalues.h \
+ ../../byterun/mlvalues.h unixsupport.h
 rmdir.o: rmdir.c ../../byterun/mlvalues.h ../../byterun/compatibility.h \
 ../../byterun/config.h ../../byterun/../config/m.h \
 ../../byterun/../config/s.h ../../byterun/misc.h unixsupport.h
+ ../../byterun/config.h ../../byterun/../config/m.h \
+ ../../byterun/../config/s.h ../../byterun/misc.h unixsupport.h
 select.o: select.c ../../byterun/mlvalues.h ../../byterun/compatibility.h \
 ../../byterun/config.h ../../byterun/../config/m.h \
 ../../byterun/../config/s.h ../../byterun/misc.h ../../byterun/alloc.h \
 ../../byterun/mlvalues.h ../../byterun/fail.h ../../byterun/memory.h \
 ../../byterun/gc.h ../../byterun/major_gc.h ../../byterun/freelist.h \
 ../../byterun/minor_gc.h ../../byterun/signals.h unixsupport.h
+ ../../byterun/config.h ../../byterun/../config/m.h \
+ ../../byterun/../config/s.h ../../byterun/misc.h ../../byterun/alloc.h \
+ ../../byterun/mlvalues.h ../../byterun/fail.h ../../byterun/memory.h \
+ ../../byterun/gc.h ../../byterun/major_gc.h ../../byterun/freelist.h \
+ ../../byterun/minor_gc.h ../../byterun/signals.h unixsupport.h
 sendrecv.o: sendrecv.c ../../byterun/mlvalues.h \
 ../../byterun/compatibility.h ../../byterun/config.h \
 ../../byterun/../config/m.h ../../byterun/../config/s.h \
 ../../byterun/misc.h ../../byterun/alloc.h ../../byterun/mlvalues.h \
 ../../byterun/fail.h ../../byterun/memory.h ../../byterun/gc.h \
 ../../byterun/major_gc.h ../../byterun/freelist.h \
 ../../byterun/minor_gc.h ../../byterun/signals.h unixsupport.h \
 socketaddr.h ../../byterun/misc.h
+ ../../byterun/compatibility.h ../../byterun/config.h \
+ ../../byterun/../config/m.h ../../byterun/../config/s.h \
+ ../../byterun/misc.h ../../byterun/alloc.h ../../byterun/mlvalues.h \
+ ../../byterun/fail.h ../../byterun/memory.h ../../byterun/gc.h \
+ ../../byterun/major_gc.h ../../byterun/freelist.h \
+ ../../byterun/minor_gc.h ../../byterun/signals.h unixsupport.h \
+ socketaddr.h ../../byterun/misc.h
 setgid.o: setgid.c ../../byterun/mlvalues.h ../../byterun/compatibility.h \
 ../../byterun/config.h ../../byterun/../config/m.h \
 ../../byterun/../config/s.h ../../byterun/misc.h unixsupport.h
+ ../../byterun/config.h ../../byterun/../config/m.h \
+ ../../byterun/../config/s.h ../../byterun/misc.h unixsupport.h
 setgroups.o: setgroups.c ../../byterun/mlvalues.h \
 ../../byterun/compatibility.h ../../byterun/config.h \
 ../../byterun/../config/m.h ../../byterun/../config/s.h \
 ../../byterun/misc.h ../../byterun/alloc.h ../../byterun/mlvalues.h \
 ../../byterun/fail.h ../../byterun/memory.h ../../byterun/gc.h \
 ../../byterun/major_gc.h ../../byterun/freelist.h \
 ../../byterun/minor_gc.h unixsupport.h
+ ../../byterun/compatibility.h ../../byterun/config.h \
+ ../../byterun/../config/m.h ../../byterun/../config/s.h \
+ ../../byterun/misc.h ../../byterun/alloc.h ../../byterun/mlvalues.h \
+ ../../byterun/fail.h ../../byterun/memory.h ../../byterun/gc.h \
+ ../../byterun/major_gc.h ../../byterun/freelist.h \
+ ../../byterun/minor_gc.h unixsupport.h
 setsid.o: setsid.c ../../byterun/fail.h ../../byterun/compatibility.h \
 ../../byterun/misc.h ../../byterun/config.h ../../byterun/../config/m.h \
 ../../byterun/../config/s.h ../../byterun/mlvalues.h \
 ../../byterun/mlvalues.h unixsupport.h
+ ../../byterun/misc.h ../../byterun/config.h ../../byterun/../config/m.h \
+ ../../byterun/../config/s.h ../../byterun/mlvalues.h \
+ ../../byterun/mlvalues.h unixsupport.h
 setuid.o: setuid.c ../../byterun/mlvalues.h ../../byterun/compatibility.h \
 ../../byterun/config.h ../../byterun/../config/m.h \
 ../../byterun/../config/s.h ../../byterun/misc.h unixsupport.h
+ ../../byterun/config.h ../../byterun/../config/m.h \
+ ../../byterun/../config/s.h ../../byterun/misc.h unixsupport.h
 shutdown.o: shutdown.c ../../byterun/fail.h ../../byterun/compatibility.h \
 ../../byterun/misc.h ../../byterun/config.h ../../byterun/../config/m.h \
 ../../byterun/../config/s.h ../../byterun/mlvalues.h \
 ../../byterun/mlvalues.h unixsupport.h
+ ../../byterun/misc.h ../../byterun/config.h ../../byterun/../config/m.h \
+ ../../byterun/../config/s.h ../../byterun/mlvalues.h \
+ ../../byterun/mlvalues.h unixsupport.h
 signals.o: signals.c ../../byterun/alloc.h ../../byterun/compatibility.h \
 ../../byterun/misc.h ../../byterun/config.h ../../byterun/../config/m.h \
 ../../byterun/../config/s.h ../../byterun/mlvalues.h \
 ../../byterun/fail.h ../../byterun/memory.h ../../byterun/gc.h \
 ../../byterun/major_gc.h ../../byterun/freelist.h \
 ../../byterun/minor_gc.h ../../byterun/mlvalues.h \
 ../../byterun/signals.h unixsupport.h
+ ../../byterun/misc.h ../../byterun/config.h ../../byterun/../config/m.h \
+ ../../byterun/../config/s.h ../../byterun/mlvalues.h \
+ ../../byterun/fail.h ../../byterun/memory.h ../../byterun/gc.h \
+ ../../byterun/major_gc.h ../../byterun/freelist.h \
+ ../../byterun/minor_gc.h ../../byterun/mlvalues.h \
+ ../../byterun/signals.h unixsupport.h
 sleep.o: sleep.c ../../byterun/mlvalues.h ../../byterun/compatibility.h \
 ../../byterun/config.h ../../byterun/../config/m.h \
 ../../byterun/../config/s.h ../../byterun/misc.h \
 ../../byterun/signals.h ../../byterun/mlvalues.h unixsupport.h
+ ../../byterun/config.h ../../byterun/../config/m.h \
../../byterun/../config/s.h ../../byterun/misc.h ../../byterun/signals.h \
+ ../../byterun/mlvalues.h unixsupport.h
 socket.o: socket.c ../../byterun/fail.h ../../byterun/compatibility.h \
 ../../byterun/misc.h ../../byterun/config.h ../../byterun/../config/m.h \
 ../../byterun/../config/s.h ../../byterun/mlvalues.h \
 ../../byterun/mlvalues.h unixsupport.h
+ ../../byterun/misc.h ../../byterun/config.h ../../byterun/../config/m.h \
+ ../../byterun/../config/s.h ../../byterun/mlvalues.h \
+ ../../byterun/mlvalues.h unixsupport.h
 socketaddr.o: socketaddr.c ../../byterun/mlvalues.h \
 ../../byterun/compatibility.h ../../byterun/config.h \
 ../../byterun/../config/m.h ../../byterun/../config/s.h \
 ../../byterun/misc.h ../../byterun/alloc.h ../../byterun/mlvalues.h \
 ../../byterun/memory.h ../../byterun/gc.h ../../byterun/major_gc.h \
 ../../byterun/freelist.h ../../byterun/minor_gc.h unixsupport.h \
 socketaddr.h ../../byterun/misc.h
+ ../../byterun/compatibility.h ../../byterun/config.h \
+ ../../byterun/../config/m.h ../../byterun/../config/s.h \
+ ../../byterun/misc.h ../../byterun/alloc.h ../../byterun/mlvalues.h \
+ ../../byterun/memory.h ../../byterun/gc.h ../../byterun/major_gc.h \
+ ../../byterun/freelist.h ../../byterun/minor_gc.h unixsupport.h \
+ socketaddr.h ../../byterun/misc.h
 socketpair.o: socketpair.c ../../byterun/mlvalues.h \
 ../../byterun/compatibility.h ../../byterun/config.h \
 ../../byterun/../config/m.h ../../byterun/../config/s.h \
 ../../byterun/misc.h ../../byterun/alloc.h ../../byterun/mlvalues.h \
 ../../byterun/fail.h unixsupport.h
+ ../../byterun/compatibility.h ../../byterun/config.h \
+ ../../byterun/../config/m.h ../../byterun/../config/s.h \
+ ../../byterun/misc.h ../../byterun/alloc.h ../../byterun/mlvalues.h \
+ ../../byterun/fail.h unixsupport.h
 sockopt.o: sockopt.c ../../byterun/mlvalues.h \
 ../../byterun/compatibility.h ../../byterun/config.h \
 ../../byterun/../config/m.h ../../byterun/../config/s.h \
 ../../byterun/misc.h ../../byterun/memory.h ../../byterun/gc.h \
 ../../byterun/mlvalues.h ../../byterun/major_gc.h \
 ../../byterun/freelist.h ../../byterun/minor_gc.h ../../byterun/alloc.h \
 ../../byterun/fail.h unixsupport.h socketaddr.h ../../byterun/misc.h
+ ../../byterun/compatibility.h ../../byterun/config.h \
+ ../../byterun/../config/m.h ../../byterun/../config/s.h \
+ ../../byterun/misc.h ../../byterun/memory.h ../../byterun/gc.h \
+ ../../byterun/mlvalues.h ../../byterun/major_gc.h \
+ ../../byterun/freelist.h ../../byterun/minor_gc.h ../../byterun/alloc.h \
+ ../../byterun/fail.h unixsupport.h socketaddr.h ../../byterun/misc.h
 stat.o: stat.c ../../byterun/mlvalues.h ../../byterun/compatibility.h \
 ../../byterun/config.h ../../byterun/../config/m.h \
 ../../byterun/../config/s.h ../../byterun/misc.h ../../byterun/memory.h \
 ../../byterun/gc.h ../../byterun/mlvalues.h ../../byterun/major_gc.h \
 ../../byterun/freelist.h ../../byterun/minor_gc.h ../../byterun/alloc.h \
 unixsupport.h cst2constr.h ../../byterun/io.h
+ ../../byterun/config.h ../../byterun/../config/m.h \
+ ../../byterun/../config/s.h ../../byterun/misc.h ../../byterun/memory.h \
+ ../../byterun/gc.h ../../byterun/mlvalues.h ../../byterun/major_gc.h \
+ ../../byterun/freelist.h ../../byterun/minor_gc.h ../../byterun/alloc.h \
+ unixsupport.h cst2constr.h ../../byterun/io.h
 strofaddr.o: strofaddr.c ../../byterun/mlvalues.h \
 ../../byterun/compatibility.h ../../byterun/config.h \
 ../../byterun/../config/m.h ../../byterun/../config/s.h \
 ../../byterun/misc.h ../../byterun/alloc.h ../../byterun/mlvalues.h \
 ../../byterun/fail.h unixsupport.h socketaddr.h ../../byterun/misc.h
+ ../../byterun/compatibility.h ../../byterun/config.h \
+ ../../byterun/../config/m.h ../../byterun/../config/s.h \
+ ../../byterun/misc.h ../../byterun/alloc.h ../../byterun/mlvalues.h \
+ ../../byterun/fail.h unixsupport.h socketaddr.h ../../byterun/misc.h
 symlink.o: symlink.c ../../byterun/fail.h ../../byterun/compatibility.h \
 ../../byterun/misc.h ../../byterun/config.h ../../byterun/../config/m.h \
 ../../byterun/../config/s.h ../../byterun/mlvalues.h \
 ../../byterun/mlvalues.h unixsupport.h
+ ../../byterun/misc.h ../../byterun/config.h ../../byterun/../config/m.h \
+ ../../byterun/../config/s.h ../../byterun/mlvalues.h \
+ ../../byterun/mlvalues.h unixsupport.h
 termios.o: termios.c ../../byterun/mlvalues.h \
 ../../byterun/compatibility.h ../../byterun/config.h \
 ../../byterun/../config/m.h ../../byterun/../config/s.h \
 ../../byterun/misc.h ../../byterun/alloc.h ../../byterun/mlvalues.h \
 ../../byterun/fail.h unixsupport.h
+ ../../byterun/compatibility.h ../../byterun/config.h \
+ ../../byterun/../config/m.h ../../byterun/../config/s.h \
+ ../../byterun/misc.h ../../byterun/alloc.h ../../byterun/mlvalues.h \
+ ../../byterun/fail.h unixsupport.h
 time.o: time.c ../../byterun/mlvalues.h ../../byterun/compatibility.h \
 ../../byterun/config.h ../../byterun/../config/m.h \
 ../../byterun/../config/s.h ../../byterun/misc.h ../../byterun/alloc.h \
 ../../byterun/mlvalues.h unixsupport.h
+ ../../byterun/config.h ../../byterun/../config/m.h \
+ ../../byterun/../config/s.h ../../byterun/misc.h ../../byterun/alloc.h \
+ ../../byterun/mlvalues.h unixsupport.h
 times.o: times.c ../../byterun/mlvalues.h ../../byterun/compatibility.h \
 ../../byterun/config.h ../../byterun/../config/m.h \
 ../../byterun/../config/s.h ../../byterun/misc.h ../../byterun/alloc.h \
 ../../byterun/mlvalues.h ../../byterun/memory.h ../../byterun/gc.h \
 ../../byterun/major_gc.h ../../byterun/freelist.h \
 ../../byterun/minor_gc.h unixsupport.h
+ ../../byterun/config.h ../../byterun/../config/m.h \
+ ../../byterun/../config/s.h ../../byterun/misc.h ../../byterun/alloc.h \
+ ../../byterun/mlvalues.h ../../byterun/memory.h ../../byterun/gc.h \
+ ../../byterun/major_gc.h ../../byterun/freelist.h \
+ ../../byterun/minor_gc.h unixsupport.h
 truncate.o: truncate.c ../../byterun/mlvalues.h \
 ../../byterun/compatibility.h ../../byterun/config.h \
 ../../byterun/../config/m.h ../../byterun/../config/s.h \
 ../../byterun/misc.h ../../byterun/fail.h ../../byterun/mlvalues.h \
 ../../byterun/io.h unixsupport.h
+ ../../byterun/compatibility.h ../../byterun/config.h \
+ ../../byterun/../config/m.h ../../byterun/../config/s.h \
+ ../../byterun/misc.h ../../byterun/fail.h ../../byterun/mlvalues.h \
+ ../../byterun/io.h unixsupport.h
 umask.o: umask.c ../../byterun/mlvalues.h ../../byterun/compatibility.h \
 ../../byterun/config.h ../../byterun/../config/m.h \
 ../../byterun/../config/s.h ../../byterun/misc.h unixsupport.h
+ ../../byterun/config.h ../../byterun/../config/m.h \
+ ../../byterun/../config/s.h ../../byterun/misc.h unixsupport.h
 unixsupport.o: unixsupport.c ../../byterun/mlvalues.h \
-  ../../byterun/compatibility.h ../../byterun/config.h \
-  ../../byterun/../config/m.h ../../byterun/../config/s.h \
-  ../../byterun/misc.h ../../byterun/alloc.h ../../byterun/mlvalues.h \
-  ../../byterun/callback.h ../../byterun/memory.h ../../byterun/gc.h \
-  ../../byterun/major_gc.h ../../byterun/freelist.h \
-  ../../byterun/minor_gc.h ../../byterun/fail.h unixsupport.h \
-  cst2constr.h
+ ../../byterun/compatibility.h ../../byterun/config.h \
+ ../../byterun/../config/m.h ../../byterun/../config/s.h \
+ ../../byterun/misc.h ../../byterun/alloc.h ../../byterun/mlvalues.h \
+ ../../byterun/callback.h ../../byterun/memory.h ../../byterun/gc.h \
+ ../../byterun/major_gc.h ../../byterun/freelist.h \
+ ../../byterun/minor_gc.h ../../byterun/fail.h unixsupport.h cst2constr.h
 unlink.o: unlink.c ../../byterun/mlvalues.h ../../byterun/compatibility.h \
 ../../byterun/config.h ../../byterun/../config/m.h \
 ../../byterun/../config/s.h ../../byterun/misc.h unixsupport.h
+ ../../byterun/config.h ../../byterun/../config/m.h \
+ ../../byterun/../config/s.h ../../byterun/misc.h unixsupport.h
 utimes.o: utimes.c ../../byterun/fail.h ../../byterun/compatibility.h \
 ../../byterun/misc.h ../../byterun/config.h ../../byterun/../config/m.h \
 ../../byterun/../config/s.h ../../byterun/mlvalues.h \
 ../../byterun/mlvalues.h unixsupport.h
+ ../../byterun/misc.h ../../byterun/config.h ../../byterun/../config/m.h \
+ ../../byterun/../config/s.h ../../byterun/mlvalues.h \
+ ../../byterun/mlvalues.h unixsupport.h
 wait.o: wait.c ../../byterun/mlvalues.h ../../byterun/compatibility.h \
 ../../byterun/config.h ../../byterun/../config/m.h \
 ../../byterun/../config/s.h ../../byterun/misc.h ../../byterun/alloc.h \
 ../../byterun/mlvalues.h ../../byterun/fail.h ../../byterun/memory.h \
 ../../byterun/gc.h ../../byterun/major_gc.h ../../byterun/freelist.h \
 ../../byterun/minor_gc.h ../../byterun/signals.h unixsupport.h
+ ../../byterun/config.h ../../byterun/../config/m.h \
+ ../../byterun/../config/s.h ../../byterun/misc.h ../../byterun/alloc.h \
+ ../../byterun/mlvalues.h ../../byterun/fail.h ../../byterun/memory.h \
+ ../../byterun/gc.h ../../byterun/major_gc.h ../../byterun/freelist.h \
+ ../../byterun/minor_gc.h ../../byterun/signals.h unixsupport.h
 write.o: write.c ../../byterun/mlvalues.h ../../byterun/compatibility.h \
 ../../byterun/config.h ../../byterun/../config/m.h \
 ../../byterun/../config/s.h ../../byterun/misc.h ../../byterun/memory.h \
 ../../byterun/gc.h ../../byterun/mlvalues.h ../../byterun/major_gc.h \
 ../../byterun/freelist.h ../../byterun/minor_gc.h \
 ../../byterun/signals.h unixsupport.h
+ ../../byterun/config.h ../../byterun/../config/m.h \
+ ../../byterun/../config/s.h ../../byterun/misc.h ../../byterun/memory.h \
+ ../../byterun/gc.h ../../byterun/mlvalues.h ../../byterun/major_gc.h \
+ ../../byterun/freelist.h ../../byterun/minor_gc.h \
+ ../../byterun/signals.h unixsupport.h
 unix.cmi :
 unixLabels.cmi : unix.cmi
 unix.cmo : unix.cmi
index 5a11b5c2c947588758c1634156161aa287516a0a..3f531d67eb7c17081c1914f5b315ef9b84500514 100644 (file)
@@ -11,7 +11,7 @@
 #                                                                       #
 #########################################################################
 
-# $Id$
+# $Id: Makefile 11156 2011-07-27 14:17:02Z doligez $
 
 # Makefile for the Unix interface library
 
index 7b2688f03ead13ba2592e06fe13758ebbf44a2a6..9aa2418518d8cef35929e342392ca5388f13ffb2 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: accept.c 11156 2011-07-27 14:17:02Z doligez $ */
 
 #include <mlvalues.h>
 #include <alloc.h>
index 813c0634a6f6497bb53ff1f49e5298133d4fe79c..d6c1c1450626ad33ac77d08158d033df7ea7a23f 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: access.c 11156 2011-07-27 14:17:02Z doligez $ */
 
 #include <mlvalues.h>
 #include <alloc.h>
index 217397b508853c9f1775ecdb1cf9c5fff7c77291..f33c9f659c0af69ed67090e2605d88f5657e3b54 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: addrofstr.c 11156 2011-07-27 14:17:02Z doligez $ */
 
 #include <mlvalues.h>
 #include <fail.h>
index 6275e25564cf6ac318feb7f05573a36a4c6448d7..a1df885971faaf2908dd70d840a990cc9a3084c8 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: alarm.c 11156 2011-07-27 14:17:02Z doligez $ */
 
 #include <mlvalues.h>
 #include "unixsupport.h"
index a6999a9f45a8416a6f0a79446bb5006d97173336..3297a830238d2c7d6ab92029ad622f1da5954cc3 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: bind.c 11156 2011-07-27 14:17:02Z doligez $ */
 
 #include <fail.h>
 #include <mlvalues.h>
index 2788c5054c8f6f46fb0db35a0569d9dda45310d7..6ec32340a1fc267fd9e45a1a700d3fbfc4255a9c 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: chdir.c 11156 2011-07-27 14:17:02Z doligez $ */
 
 #include <mlvalues.h>
 #include "unixsupport.h"
index f01d7e85b5d18b69353c7f44f6b3434ff4a9dc20..730b2fa97b839b50c73b35d0243e777842352ff8 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: chmod.c 11156 2011-07-27 14:17:02Z doligez $ */
 
 #include <sys/types.h>
 #include <sys/stat.h>
index 72002e9364f7449d477577fae19b6cfa793dafef..493162e52fd8b4842b073b29828dae8c50900a23 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: chown.c 11156 2011-07-27 14:17:02Z doligez $ */
 
 #include <mlvalues.h>
 #include "unixsupport.h"
index 879d0662f15aa43d5180535e69072f2c36e34069..fee76678db53711a483518cc66e81dc8a4a0da9e 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: chroot.c 11156 2011-07-27 14:17:02Z doligez $ */
 
 #include <mlvalues.h>
 #include "unixsupport.h"
index 0aaf74bd92b86f7675989a7269e35ff2a54bd0fd..ad821347945d84a6600cde16a250a555f594877f 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: close.c 11156 2011-07-27 14:17:02Z doligez $ */
 
 #include <mlvalues.h>
 #include "unixsupport.h"
index a6440efa4b306298c593140669be24454875fe69..6efd7ba870547f8fbf5c5362f345dcfb3c72dadc 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: closedir.c 11156 2011-07-27 14:17:02Z doligez $ */
 
 #include <mlvalues.h>
 #include "unixsupport.h"
index a17a89ffc9adfaa2e6636cc1c80ba2905c269774..0388a217c058de26f425128c07563eb7f8cd3512 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: connect.c 11156 2011-07-27 14:17:02Z doligez $ */
 
 #include <fail.h>
 #include <mlvalues.h>
index 8ce4d3f0d415b88ad184a212398d75bee437587d..f84e47575e527ce7692f1653c607e9a723128f3c 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: cst2constr.c 11156 2011-07-27 14:17:02Z doligez $ */
 
 #include <mlvalues.h>
 #include <fail.h>
index e1c61a0c5f994d82443d48a78652f47ce515d2db..3fec26d847ec689fc6fb823d725e8513f74b34d7 100644 (file)
@@ -11,6 +11,6 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: cst2constr.h 11156 2011-07-27 14:17:02Z doligez $ */
 
 extern value cst_to_constr(int n, int * tbl, int size, int deflt);
index 5c83b59e44e09b598e08bd586fc846c085c71c4a..1140240338521018b975ce5cb3b9bb2d2c4d6c39 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: cstringv.c 11156 2011-07-27 14:17:02Z doligez $ */
 
 #include <mlvalues.h>
 #include <memory.h>
index f78d9369dce38b044d8dfe470b0892d6ed054608..77c66c7735ffc23b47645ed926ccc279ba092c86 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: dup.c 11156 2011-07-27 14:17:02Z doligez $ */
 
 #include <mlvalues.h>
 #include "unixsupport.h"
index 412315891f455881f56cfcfe4f9451abf81fc074..d41ce480ba5b33910ff6c59324a6ba38f2e35903 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: dup2.c 11156 2011-07-27 14:17:02Z doligez $ */
 
 #include <mlvalues.h>
 #include "unixsupport.h"
index 52e43ab7a1ba05eae839216f823ed6be46da39ae..d27809a2d8a318e05056bd785fd248201be3777a 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: envir.c 11176 2011-09-05 09:25:26Z xclerc $ */
 
 #include <mlvalues.h>
 #include <alloc.h>
index 6cf82d6330d9feb35d28e34beec8399497757677..9b091962dc6e830f9dd2d262fc0af56bd95427e7 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: errmsg.c 11156 2011-07-27 14:17:02Z doligez $ */
 
 #include <errno.h>
 #include <string.h>
index 51eabc712769be93537985a8ae0779811c54ed77..c64395b2538dd0d1200c5ce1e9183ed742963ec3 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: execv.c 11156 2011-07-27 14:17:02Z doligez $ */
 
 #include <mlvalues.h>
 #include <memory.h>
index 00ab6af4cf96212852e91589d507aff3c6763605..b122c333fe1b6d64aaba421aa83ffd67a372de5c 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: execve.c 11156 2011-07-27 14:17:02Z doligez $ */
 
 #include <mlvalues.h>
 #include <memory.h>
index db77d41345d6923ed48ef09f1da988e8a3d533d6..f1cb5d7e32d3ae3a6961b7d879ab5a1591b65f31 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: execvp.c 11156 2011-07-27 14:17:02Z doligez $ */
 
 #include <mlvalues.h>
 #include <memory.h>
index 88fc01254721c11ed79c6ce14781b75f1445be54..7bc11582ba1dc6a4103d2cc7dceeff35822ba27e 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: exit.c 11156 2011-07-27 14:17:02Z doligez $ */
 
 #include <mlvalues.h>
 #include "unixsupport.h"
index b2d49dcd468c3c3348b5d5d04ae7796c645e3d87..b2e01f5849ae21c1bce5fe56a93e0e5132800282 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: fchmod.c 11156 2011-07-27 14:17:02Z doligez $ */
 
 #include <sys/types.h>
 #include <sys/stat.h>
index e2c934ae07bea68f2a06406b60a5d161945927ba..28a0b9dcbe33d8b201466a89a7c289269d6acfee 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: fchown.c 11156 2011-07-27 14:17:02Z doligez $ */
 
 #include <fail.h>
 #include <mlvalues.h>
index 58f7df7569b77b05e90b7649194551c0e4d460d4..d42e064c179c9b2e09b9e772b5c195c9d1bda6cb 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: fcntl.c 11156 2011-07-27 14:17:02Z doligez $ */
 
 #include <fail.h>
 #include <mlvalues.h>
index 80b44355119af59a3938231f6693e9d4992fad7d..2fc82baed4df86de29f13bd34aa042157b8bf417 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: fork.c 11156 2011-07-27 14:17:02Z doligez $ */
 
 #include <mlvalues.h>
 #include <debugger.h>
index 5eaa166fb16c1b85dba4cd66047b74efeed23820..96a68490db0237f7556337d041b6be510d78b31d 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: ftruncate.c 11156 2011-07-27 14:17:02Z doligez $ */
 
 #include <sys/types.h>
 #include <fail.h>
index 34cf8280c45e9b5d31a621fd57881239f5a8236c..3b937f2e0d2cd980bed54206829c82d9044bed8a 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: getaddrinfo.c 11156 2011-07-27 14:17:02Z doligez $ */
 
 #include <string.h>
 #include <mlvalues.h>
index f3ff97114e35f7277f968569489f47055c49075d..db2f165bb0c712896d2d29a74e04b8a30209c022 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: getcwd.c 11156 2011-07-27 14:17:02Z doligez $ */
 
 #include <mlvalues.h>
 #include <alloc.h>
index 9c6097ef58cf3927ec65b60652358cc1c173488d..887eaa4b38eb391285d186c6c42909185b7ed960 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: getegid.c 11156 2011-07-27 14:17:02Z doligez $ */
 
 #include <mlvalues.h>
 #include "unixsupport.h"
index 55e0763808412747399d3b41fb76da3e70a173b5..06b7df5036c753a8f0cef8ec8313726cd7499fae 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: geteuid.c 11156 2011-07-27 14:17:02Z doligez $ */
 
 #include <mlvalues.h>
 #include "unixsupport.h"
index a3039d56cd940367b48279eb23ebe234a4bc015c..51c3807453061bf306ef90deaf57253c07db37c7 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: getgid.c 11156 2011-07-27 14:17:02Z doligez $ */
 
 #include <mlvalues.h>
 #include "unixsupport.h"
index 7b212bd27914235b2f2c195bb73cbdea1e0dfc42..b2b87eb2129e09947c1aea25a4c801eef429561d 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: getgr.c 11156 2011-07-27 14:17:02Z doligez $ */
 
 #include <mlvalues.h>
 #include <fail.h>
index 485fabc45d3dadd1aac13a251eb5e7b5a0d8c521..0b5d1da5c28944488c5212303400c002218a7388 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: getgroups.c 11156 2011-07-27 14:17:02Z doligez $ */
 
 #include <mlvalues.h>
 #include <alloc.h>
index b0b29d9e0615e76bf96758226c3f5817baeab0f6..79743b233379e3627969791b69d5ef9e12b7721e 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: gethost.c 11156 2011-07-27 14:17:02Z doligez $ */
 
 #include <string.h>
 #include <mlvalues.h>
index cf334e9b80dffeab66c21b93b9d42986bc91ba28..4ff3696feb3aed97c90c1ea72e7bbc0d0900ba13 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: gethostname.c 11156 2011-07-27 14:17:02Z doligez $ */
 
 #include <mlvalues.h>
 #include <alloc.h>
index 60197a07bb481ca3701515c60891cd61eb230906..a11e320a946d192047a1603e0f40976559bc330c 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: getlogin.c 11156 2011-07-27 14:17:02Z doligez $ */
 
 #include <mlvalues.h>
 #include <alloc.h>
index eea15c59cf2bd6bb95f370ab62a403a08c867928..a052cde733613063c6debe9c9be98c906bcf2521 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: getnameinfo.c 11156 2011-07-27 14:17:02Z doligez $ */
 
 #include <string.h>
 #include <mlvalues.h>
index 3c4da556751dce2195ede5deb1d600cf9026c721..fbc37eade4c78ed38799068d2a7b351ef1a45ea4 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: getpeername.c 11156 2011-07-27 14:17:02Z doligez $ */
 
 #include <fail.h>
 #include <mlvalues.h>
index 5cc4f3a68a43a8acb95d0b1cb91f151465a4b606..41c737af46f53ccab520d6279df31ebbab2f3d62 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: getpid.c 11156 2011-07-27 14:17:02Z doligez $ */
 
 #include <mlvalues.h>
 #include "unixsupport.h"
index 2d1cd394931723fc3b9f50bce084b9fe25960239..385d282ea1299605901151ba48dc0fcf9872544c 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: getppid.c 11156 2011-07-27 14:17:02Z doligez $ */
 
 #include <mlvalues.h>
 #include "unixsupport.h"
index 0213e8795a2839305cb83a219e1d0281907ff1ed..07173b375abb9cff9c116b1ee7265daf404fe342 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: getproto.c 11156 2011-07-27 14:17:02Z doligez $ */
 
 #include <mlvalues.h>
 #include <alloc.h>
index 4317dc202f51a8ffb84d1b61fd4f8e61476c68ba..963ddb1d2c12f81f6a7df8267f74a28272d49517 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: getpw.c 11156 2011-07-27 14:17:02Z doligez $ */
 
 #include <mlvalues.h>
 #include <alloc.h>
index 626f63b8a6876e3b6da78dcbcb5208c0ff269603..eb99484a767e3a2f680884fb6c1c2ce944363e00 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: getserv.c 11156 2011-07-27 14:17:02Z doligez $ */
 
 #include <mlvalues.h>
 #include <alloc.h>
index 8ab6debb09cb38cc65abb090ec2bbf3a0314dbe0..84ec9aeaed27aaa3558e0870f9c429e23d39c887 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: getsockname.c 11156 2011-07-27 14:17:02Z doligez $ */
 
 #include <fail.h>
 #include <mlvalues.h>
index 3e203d54e0e58e90f535f90132a45cc3543ed116..ddf75ff50fe88199d835604a0e69d2b176bccaf0 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: gettimeofday.c 11156 2011-07-27 14:17:02Z doligez $ */
 
 #include <mlvalues.h>
 #include <alloc.h>
index db3fab130e5a0d0b85b5a2c14f815bd6ce7b1f60..75d0f97cb3720d9298a37a64cc989479bbb91f9f 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: getuid.c 11156 2011-07-27 14:17:02Z doligez $ */
 
 #include <mlvalues.h>
 #include "unixsupport.h"
index b55d70f4d99b1ffd60c2470dafcc2dc348cb5586..7bf77b2c3470b2e6e79246c4bc8097e55dd3d7a5 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: gmtime.c 11156 2011-07-27 14:17:02Z doligez $ */
 
 #include <mlvalues.h>
 #include <alloc.h>
index d5b3dc5680dd294c5fbed5432d2545f2bd1c70ba..90332f6900c276e5c667c90080987c26403d58c6 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: initgroups.c 11156 2011-07-27 14:17:02Z doligez $ */
 
 #include <mlvalues.h>
 #include <alloc.h>
index c2bdaad1c15e1a045aa24aa6a3ebe98004ba6f9d..250fb513aa436e5f03f5343f60d074767d7e58c9 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: isatty.c 11156 2011-07-27 14:17:02Z doligez $ */
 
 #include <mlvalues.h>
 #include "unixsupport.h"
index 7c32783a9bb7a608381350206922df85d0287393..279dff78edbcb808bd5f0fed17e28ea782c20326 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: itimer.c 11156 2011-07-27 14:17:02Z doligez $ */
 
 #include <mlvalues.h>
 #include <alloc.h>
index 715060ee7801092c8f9151fbdca85b67fce90013..afbdcc3fd71cbc6abc8fed9c9c0aacae1ad61ae3 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: kill.c 11156 2011-07-27 14:17:02Z doligez $ */
 
 #include <mlvalues.h>
 #include <fail.h>
index e28f649ea051357dabe2092514bedcd7182233dc..fdf537c3e551f102cf3d2426d27ec8d34e28fc1f 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: link.c 11156 2011-07-27 14:17:02Z doligez $ */
 
 #include <mlvalues.h>
 #include "unixsupport.h"
index 503cf6a6ad6f47d6f051dd5cae014f6fea14ec20..db3c16f27a3000679e94e1cfd5e946116c41d521 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: listen.c 11156 2011-07-27 14:17:02Z doligez $ */
 
 #include <fail.h>
 #include <mlvalues.h>
index 70359cf76d6f6a053b981dbfa91940e613627068..5efc5a76a677c95a370ede20f4d9f00b523b0928 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: lockf.c 11156 2011-07-27 14:17:02Z doligez $ */
 
 #include <errno.h>
 #include <fcntl.h>
index 65d7d50e407da7b5875735410cd7ff3efdfecff6..c20137039d04cca8a8fc6a28f7687022514dfddf 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: lseek.c 11156 2011-07-27 14:17:02Z doligez $ */
 
 #include <errno.h>
 #include <sys/types.h>
index fd935ae67aba8f6ae6931070519e97430aa6d13e..8ec4f1b1df77e3d0e1e270bd75ac80bdb60768d8 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: mkdir.c 11156 2011-07-27 14:17:02Z doligez $ */
 
 #include <sys/types.h>
 #include <sys/stat.h>
index 30f247d90f585142f73404cfeab92e2e77411710..9fa159e0888047c9002b4f9004042b388eeb9fba 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: mkfifo.c 11156 2011-07-27 14:17:02Z doligez $ */
 
 #include <sys/types.h>
 #include <sys/stat.h>
index a0902f230912138d2b28580eef21a5e337c75d56..400543cf7f1df0b587f59cf56dd4e80b3ab5806d 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: nice.c 11156 2011-07-27 14:17:02Z doligez $ */
 
 #include <mlvalues.h>
 #include "unixsupport.h"
index 214a550d3667ba22c88b4d2a231ce36e6eca58a1..4a9ae09236bd80a61da7a8aec472ef62b3c0aa91 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: open.c 11304 2011-12-13 16:18:13Z frisch $ */
 
 #include <mlvalues.h>
 #include <alloc.h>
index bb4825812c56a15735ccbc5eb99a3634259b009a..7d7bdf9c79c441bb9364af84b510324bc62ecfd9 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: opendir.c 11156 2011-07-27 14:17:02Z doligez $ */
 
 #include <mlvalues.h>
 #include <alloc.h>
index 81baeaf4e112e2dcad503824d9adf773358d182e..868c80a2c377c3d217f50e5742f6b410a83b0862 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: pipe.c 11156 2011-07-27 14:17:02Z doligez $ */
 
 #include <mlvalues.h>
 #include <alloc.h>
index 1238ee2b69d81511836329437e3aec60d3bdefb6..5f7091966de7fdc674d90f0bd125809048a32ef5 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: putenv.c 12210 2012-03-08 19:52:03Z doligez $ */
 
 #include <stdlib.h>
 #include <string.h>
index cd1eab8cf640952278f3625d9541a9e0ee532670..a77f3a52d8cc67c23856c7616aa83977d6eda7d6 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: read.c 11156 2011-07-27 14:17:02Z doligez $ */
 
 #include <string.h>
 #include <mlvalues.h>
index 1d508ac6eb4e0453df0ff1fe902b1c71e8cdb2ad..d6c8a7608de2bbcb5df82f9511de04cda7a9999c 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: readdir.c 11156 2011-07-27 14:17:02Z doligez $ */
 
 #include <mlvalues.h>
 #include <fail.h>
index 29d28d3d4a61caf1ad2add189212c19fccadb507..8a61f1c5cf1dda14a5d08ac6d4f71811d50df37c 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: readlink.c 11156 2011-07-27 14:17:02Z doligez $ */
 
 #include <mlvalues.h>
 #include <alloc.h>
index d121037f27c126865dc5233cef879f73d78821cb..fc94e957c3a8a5e7c7ad2fd25b7efd5867746947 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: rename.c 11156 2011-07-27 14:17:02Z doligez $ */
 
 #include <stdio.h>
 #include <mlvalues.h>
index 7c7b4a3c898f6c9df3c168f856df0892416bf31b..f35ffe80e54117a587375ac07c17620498a882f9 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: rewinddir.c 11156 2011-07-27 14:17:02Z doligez $ */
 
 #include <fail.h>
 #include <mlvalues.h>
index 887496712d4ec53351a9c15c97f388878b8d1343..21140f678acd2bfd3b0511b6a9c6acaaef27979e 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: rmdir.c 11156 2011-07-27 14:17:02Z doligez $ */
 
 #include <mlvalues.h>
 #include "unixsupport.h"
index 0493839861fdb6a5496f7a0e5342a873087f758a..cee2ed13835e5421bc8658d4f700924e04c17168 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: select.c 11156 2011-07-27 14:17:02Z doligez $ */
 
 #include <mlvalues.h>
 #include <alloc.h>
index 1f884aa87d090da1d229a8d3704bc422851f9807..1a362ef03e3ecb0e3cb5e9d9d7c2f52916cbfa64 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: sendrecv.c 11156 2011-07-27 14:17:02Z doligez $ */
 
 #include <string.h>
 #include <mlvalues.h>
index a1096f26ba3d357235d1c37e6c966270e016891a..0b5aab4943aafa09d4e5795d959dc612e7f449fb 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: setgid.c 11156 2011-07-27 14:17:02Z doligez $ */
 
 #include <mlvalues.h>
 #include "unixsupport.h"
index e681c97647a90e83b10fca694f8c42ab2b397eb6..549a23e93ab5a92b04ba9f35d01efe8155fc6afd 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: setgroups.c 11156 2011-07-27 14:17:02Z doligez $ */
 
 #include <mlvalues.h>
 #include <alloc.h>
index 9cc89e642ce30c9bdea2d335c30ec7d08d82c0ca..1f3f761c0734ebbd6a6f6e150918941d94d64607 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: setsid.c 11156 2011-07-27 14:17:02Z doligez $ */
 
 #include <fail.h>
 #include <mlvalues.h>
index 4af0d781c95226c75e2f884e9eda4fb45d3683f9..70194d16d6aea6fb2c46853ced75c9410e9b6cb1 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: setuid.c 11156 2011-07-27 14:17:02Z doligez $ */
 
 #include <mlvalues.h>
 #include "unixsupport.h"
index abd8c07344d4b107c9bb5fcdc427dff7c0b64979..35c0eb8ba9673db958723f2f61b298b27d3178de 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: shutdown.c 11156 2011-07-27 14:17:02Z doligez $ */
 
 #include <fail.h>
 #include <mlvalues.h>
index fb3acf00bf856136d24888572b1d181fd3c7f6de..7b067d08a8e2bcc13b3788c84a02a9f2d6f0502f 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: signals.c 11156 2011-07-27 14:17:02Z doligez $ */
 
 #include <errno.h>
 #include <signal.h>
index aca1003c5cf9a96d40ee008d0be8e67551146598..05500272b471474ea7d5b2de8ce5c11ff1bc9e56 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: sleep.c 11156 2011-07-27 14:17:02Z doligez $ */
 
 #include <mlvalues.h>
 #include <signals.h>
index 7243b8f15b12e0ff70dab271a1370fcedce5f756..77f9d76aebf2cb7c25ce0a468b974cba8d4f0d1a 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: socket.c 11156 2011-07-27 14:17:02Z doligez $ */
 
 #include <fail.h>
 #include <mlvalues.h>
index caf83b785ed513bb8bd50dca04395bcc7817fb1d..ca38faa1ae31d78c09199a1f707730314c0e794e 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: socketaddr.c 11156 2011-07-27 14:17:02Z doligez $ */
 
 #include <string.h>
 #include <mlvalues.h>
index 43d7e91b4fafc0dfb23d099f952ade4a24a9292c..fb8080df24e4d5c7f426bdb4e461fb83cf437ab9 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: socketaddr.h 11156 2011-07-27 14:17:02Z doligez $ */
 
 #include <misc.h>
 #include <sys/types.h>
index 8a52dbb81b7ecd2afa3b98842266a87ca863a9ff..fcabb11d8febcd250b7a14686abb2671cdbc1c01 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: socketpair.c 11156 2011-07-27 14:17:02Z doligez $ */
 
 #include <mlvalues.h>
 #include <alloc.h>
index 6b3bfa4a4bcb48df7e6b826ca6917af095af27f2..bc406f090726826d07d28ab1c85e8de35b3eb124 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: sockopt.c 11156 2011-07-27 14:17:02Z doligez $ */
 
 #include <mlvalues.h>
 #include <memory.h>
index 17ae53c0b2cffc43aa281da7cf9115146d521f9c..48d5ed8481624db576d0528a07bdb1cc8cbf58e8 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: stat.c 11156 2011-07-27 14:17:02Z doligez $ */
 
 #include <errno.h>
 #include <mlvalues.h>
index a2c8cdc732d2c63fede5bbf22cf08038aa077b8d..5668718d44b2a0af034dd491bd8628950690d4eb 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: strofaddr.c 11156 2011-07-27 14:17:02Z doligez $ */
 
 #include <mlvalues.h>
 #include <alloc.h>
index b66c76bda10e160af787026a0ecabc7138fd2e8f..6028a8eae908b09c75da7019e51be891fb91e534 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: symlink.c 11156 2011-07-27 14:17:02Z doligez $ */
 
 #include <fail.h>
 #include <mlvalues.h>
index 99cca2b64369dc844af52b1bc6b2d3c743feaccd..d793e7bb6c139a9f98a07914d3cc17bb4f6bb1b3 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: termios.c 11156 2011-07-27 14:17:02Z doligez $ */
 
 #include <mlvalues.h>
 #include <alloc.h>
index 63eac84eb75475564aaa2c128b8d1baa127c13a5..5ac5d8dbd87870451f3ff1202836830a61cd0864 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: time.c 11156 2011-07-27 14:17:02Z doligez $ */
 
 #include <time.h>
 #include <mlvalues.h>
index 94abde8a6dc6ecf3d1f2ab906a547e2f592c30cc..bd89432c19508c7768df5a46e41dab6e553dfc26 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: times.c 11156 2011-07-27 14:17:02Z doligez $ */
 
 #include <mlvalues.h>
 #include <alloc.h>
index dfc350a3294864e7943347de73dacc689b03d1fc..6c18a5d392ead5de02c7bf8ac3cb7a8ea11b171a 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: truncate.c 11156 2011-07-27 14:17:02Z doligez $ */
 
 #include <sys/types.h>
 #include <mlvalues.h>
index cf5eaa7c0808d296af48f2789616ac2fcfb4da85..d3853215d8b90921f8b75d28cde3d159f1488213 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: umask.c 11156 2011-07-27 14:17:02Z doligez $ */
 
 #include <sys/types.h>
 #include <sys/stat.h>
index 0adc41e213b66d8063950de9a0b5336a0cb5e798..883050cc559f661fce6d1ab6f3f635a0577fcb80 100644 (file)
@@ -11,7 +11,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: unix.ml 12038 2012-01-18 09:28:05Z protzenk $ *)
 
 type error =
     E2BIG
index 0c2780999a5ffeeb41c79d478855091506c962f6..e6ba3e190d54d8f06ad8799aee1937712c851116 100644 (file)
@@ -11,7 +11,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: unix.mli 12140 2012-02-07 16:41:02Z doligez $ *)
 
 (** Interface to the Unix system *)
 
index 424fcc6e629cc359ca982c9fbb8e29122a6293c0..ef3648892c635df17f430f94c4a29cb49ea904b1 100644 (file)
@@ -11,7 +11,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: unixLabels.ml 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (* Module [UnixLabels]: labelled Unix module *)
 
index 98a58f1b90f57de39a1c141617dac33a9c14ae51..e5b073aa98f2583c93e12b72809d6bb1c3759eb9 100644 (file)
@@ -11,7 +11,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: unixLabels.mli 11307 2011-12-13 17:59:10Z frisch $ *)
 
 (** Interface to the Unix system.
    To use as replacement to default {!Unix} module,
index 4c91adb1041d2d89f6efcfe67c67a35cd7dbb800..34891ecce8e8f869a7221025af35829d07d212ec 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: unixsupport.c 11915 2011-12-21 13:08:48Z protzenk $ */
 
 #include <mlvalues.h>
 #include <alloc.h>
index a90bb2dcf20cf0aecf3dfae10396b1a178b71024..f561ce6649fe32903af9656e676e1b9bd26bda28 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: unixsupport.h 12488 2012-05-28 11:31:30Z frisch $ */
 
 #ifdef HAS_UNISTD
 #include <unistd.h>
@@ -23,6 +23,6 @@ extern value unix_error_of_code (int errcode);
 extern void unix_error (int errcode, char * cmdname, value arg) Noreturn;
 extern void uerror (char * cmdname, value arg) Noreturn;
 
-#define UNIX_BUFFER_SIZE 16384
+#define UNIX_BUFFER_SIZE 65536
 
 #define DIR_Val(v) *((DIR **) &Field(v, 0))
index 3fb5151be030b93265b8309ac8ba08a0437b1d63..8913e397a310f0afda7ed096ef7070958103f2da 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: unlink.c 11156 2011-07-27 14:17:02Z doligez $ */
 
 #include <mlvalues.h>
 #include "unixsupport.h"
index a6a2f5ebc59e226e786a480920a73d17f146ea1d..ed969897a5a5f78bc5bfaccf699514cb9cc057f1 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: utimes.c 11156 2011-07-27 14:17:02Z doligez $ */
 
 #include <fail.h>
 #include <mlvalues.h>
index fc12e5ad5c4ea255db116ee4c81149ccec194ada..10cf826fac95e2cbd872c09e8ee675fa435656c4 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: wait.c 11156 2011-07-27 14:17:02Z doligez $ */
 
 #include <mlvalues.h>
 #include <alloc.h>
index ca42d1e75be6200405bad0fc72fb5b652bc141e3..635336211c527728580cee3cf7dc561009007ffb 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: write.c 11156 2011-07-27 14:17:02Z doligez $ */
 
 #include <errno.h>
 #include <string.h>
index 453d9f3c850b5406d6902f38dbe3f43b82821031..62c4678c668f097aed61c442a7d1ec9b5ebed15e 100644 (file)
@@ -11,7 +11,7 @@
 #                                                                       #
 #########################################################################
 
-# $Id$
+# $Id: Makefile.nt 11156 2011-07-27 14:17:02Z doligez $
 
 LIBNAME=graphics
 COBJS=open.$(O) draw.$(O) events.$(O) dib.$(O)
index 8acba6f1327644536cccb1f878689bd4c93e0b07..36904368441ba761460e6f9ef4380e05a168e23c 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: dib.c 11156 2011-07-27 14:17:02Z doligez $ */
 
 //-----------------------------------------------------------------------------
 // DIB.C
index f089a01a32fa3ce8c9a3149e43054412f87e56e9..f20e8165617276919533ba85e564c38b6fa1c060 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: draw.c 11156 2011-07-27 14:17:02Z doligez $ */
 
 #include <math.h>
 #include "mlvalues.h"
index 29def467ffe5b6afd59cd118625995e292c63249..59f0b91bef90416007f351c08a283ef988a245e5 100755 (executable)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: events.c 11156 2011-07-27 14:17:02Z doligez $ */
 
 #include "mlvalues.h"
 #include "alloc.h"
index bae4b1162350cbc770136b5ce03d16e5363484cf..a041dfa7b9a84b9b58a51f5963f51eecbe596fbc 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: libgraph.h 12149 2012-02-10 16:15:24Z doligez $ */
 
 #include <stdio.h>
 #include <windows.h>
index a6bc59d45f0ef33d05a00df28f9da647fcf0c627..a024706139a4dacbb8751235747e70c94f5d9904 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: open.c 12149 2012-02-10 16:15:24Z doligez $ */
 
 #include <fcntl.h>
 #include <signal.h>
index 84f1574a3405814282c45c2efd81544c435b6cef..76a1c19fc75fd422b39a43a370659a7bf93e730d 100644 (file)
@@ -11,7 +11,7 @@
 #                                                                       #
 #########################################################################
 
-# $Id$
+# $Id: Makefile.nt 11912 2011-12-21 09:43:13Z protzenk $
 
 # Files in this directory
 WIN_FILES = accept.c bind.c channels.c close.c \
index 68c7bac7afab6965e38cecda6607782b2f4a13e9..e67eea477547187b71d310d32b7cd04b478cc0a8 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: accept.c 12480 2012-05-24 16:40:59Z xleroy $ */
 
 #include <mlvalues.h>
 #include <alloc.h>
@@ -26,15 +26,30 @@ CAMLprim value unix_accept(sock)
   SOCKET sconn = Socket_val(sock);
   SOCKET snew;
   value fd = Val_unit, adr = Val_unit, res;
+  int oldvalue, oldvaluelen, newvalue, retcode;
   union sock_addr_union addr;
   socklen_param_type addr_len;
   DWORD err = 0;
 
+  oldvaluelen = sizeof(oldvalue);
+  retcode = getsockopt(INVALID_SOCKET, SOL_SOCKET, SO_OPENTYPE,
+                       (char *) &oldvalue, &oldvaluelen);
+  if (retcode == 0) {
+    /* Set sockets to synchronous mode */
+    newvalue = SO_SYNCHRONOUS_NONALERT;
+    setsockopt(INVALID_SOCKET, SOL_SOCKET, SO_OPENTYPE,
+               (char *) &newvalue, sizeof(newvalue));
+  }
   addr_len = sizeof(sock_addr);
   enter_blocking_section();
   snew = accept(sconn, &addr.s_gen, &addr_len);
   if (snew == INVALID_SOCKET) err = WSAGetLastError ();
   leave_blocking_section();
+  if (retcode == 0) {
+    /* Restore initial mode */
+    setsockopt(INVALID_SOCKET, SOL_SOCKET, SO_OPENTYPE,
+               (char *) &oldvalue, oldvaluelen);
+  }
   if (snew == INVALID_SOCKET) {
     win32_maperr(err);
     uerror("accept", Nothing);
index 84d07570c34f99922c3da42e339b2d31b8127ade..eab979cca6e96d0a16387887bdf1f4801882423f 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: bind.c 11156 2011-07-27 14:17:02Z doligez $ */
 
 #include <mlvalues.h>
 #include "unixsupport.h"
index ea3912720d0fe6da6eaf8f820307672bfa53df63..626376bc5f0412851df53e77bd4cee81114544a5 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: channels.c 11927 2011-12-21 16:31:01Z xleroy $ */
 
 #include <mlvalues.h>
 #include <alloc.h>
index f7463690b606f02dbec690beac54a7ee174fcba1..92600b9345fc6e972cb351e76b020d5bddb35647 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: close.c 11156 2011-07-27 14:17:02Z doligez $ */
 
 #include <mlvalues.h>
 #include "unixsupport.h"
index 03ff2b894c06f27f7a3ad5ac181b390006507700..0f3245a97a2465ae0037d2fd873108c433d1a4b5 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: close_on.c 11888 2011-12-20 08:59:09Z xleroy $ */
 
 #include <mlvalues.h>
 #include <windows.h>
index bd342a2ea87d3076424b67716ed08afcbdef3889..628ed85368a78a4aaceabf9f1d25477303a7ef14 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: connect.c 11156 2011-07-27 14:17:02Z doligez $ */
 
 #include <mlvalues.h>
 #include <signals.h>
index 714513cacb8ad79c1fc5922527a0c0ae5802e292..48c0a746ae14e61e77faba73c2f7cffd766a3b53 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: createprocess.c 11156 2011-07-27 14:17:02Z doligez $ */
 
 #include <windows.h>
 #include <mlvalues.h>
index a86211bbb17a6816d8f9a0a41bef34f85de5a304..2525df73e69f529980cc61c11f29a7eb767e80df 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: dup.c 11156 2011-07-27 14:17:02Z doligez $ */
 
 #include <mlvalues.h>
 #include "unixsupport.h"
index f224fc54e716794a459f5abf3fc6b50ef95f7ed4..4c146a50675b6c6c2fec4a9379dc1e8f32923825 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: dup2.c 11156 2011-07-27 14:17:02Z doligez $ */
 
 #include <mlvalues.h>
 #include "unixsupport.h"
index 1f07e514fd8ed3e917bd3ae43fbc5782ec1eb1b6..19ea3d72f6d35a312f9f133e5494523af37d2b06 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: errmsg.c 11156 2011-07-27 14:17:02Z doligez $ */
 
 #include <stdio.h>
 #include <errno.h>
index 8517f54672d31385a54939062713c53aabf85149..cdd8aebec76ef1643bfcd8b3622fa77a9a881d66 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: getpeername.c 11156 2011-07-27 14:17:02Z doligez $ */
 
 #include <mlvalues.h>
 #include "unixsupport.h"
index 677acdc55f5beef60c71c4bf3e083bbd284c4c96..b488e9acbd219285ed79b1b705cdd1a883b8ee51 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: getpid.c 11156 2011-07-27 14:17:02Z doligez $ */
 
 #include <mlvalues.h>
 #include "unixsupport.h"
index 3af6c3412b3864d704b81e701b1b36ed01e4b949..914bfaaf67eac16d0b92a5bdb7569c0b5c3a1c9c 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: getsockname.c 11156 2011-07-27 14:17:02Z doligez $ */
 
 #include <mlvalues.h>
 #include "unixsupport.h"
index b68eeb1ad21db4f75154fed4b6e09b680ed874b4..b8433c3745fdc47111c7b2d3fac99ca50ff54292 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: gettimeofday.c 11156 2011-07-27 14:17:02Z doligez $ */
 
 #include <mlvalues.h>
 #include <alloc.h>
index 05320491ed35552fa665dacbce9aa1a9f487cba4..34f841a5dfb09301eedb5569130167616cd3d983 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: link.c 11156 2011-07-27 14:17:02Z doligez $ */
 
 #include <windows.h>
 #include <mlvalues.h>
index 402247fd0935ae9214b1469b3ac5feea90b4cc50..4926842bc544fb22525183236cb8c15baf1dd54d 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: listen.c 11156 2011-07-27 14:17:02Z doligez $ */
 
 #include <mlvalues.h>
 #include "unixsupport.h"
index 1a47824dcb16389f70a2460ccd2f584fc2544376..e785854609369902add8380ee9b169e3ea133e1c 100644 (file)
@@ -13,7 +13,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: lockf.c 11156 2011-07-27 14:17:02Z doligez $ */
 
 #include <errno.h>
 #include <fcntl.h>
index 86ea537dca65687a4d8206ef26ef67f584e0d88f..aa01dc5889600d9b4ae490ceb489c9556de4618f 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: lseek.c 11156 2011-07-27 14:17:02Z doligez $ */
 
 #include <mlvalues.h>
 #include <alloc.h>
index d47d7a28bfd71298dcbdee5eb386683b0d9feb26..abd6094ec0b201c117efcafd488e4945821d5647 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: mkdir.c 11156 2011-07-27 14:17:02Z doligez $ */
 
 #include <mlvalues.h>
 #include "unixsupport.h"
index 1f2550b05898ea46ea0b4e47dcca49e4868b5581..7bb8a3a9e2b60c853112893b7df10d6b20013155 100755 (executable)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: nonblock.c 11223 2011-10-15 09:02:22Z xleroy $ */
 
 #include <mlvalues.h>
 #include <signals.h>
index 74fe8fc924e6d5670373639059ac3803e55cd4cd..b4a5d716e0fcc0515040a438af059618d59e569d 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: open.c 11305 2011-12-13 16:21:10Z frisch $ */
 
 #include <mlvalues.h>
 #include <alloc.h>
index ca0df36996bb36fd83ddd85331d682f992f5b030..fc9069be48d0331109761c04f9770ee1372b0ca4 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: pipe.c 11156 2011-07-27 14:17:02Z doligez $ */
 
 #include <mlvalues.h>
 #include <memory.h>
index c885857bf86b8782e19e57c32d9b8719c405cadb..41e554231cee926496d45dee00fe5ad1f1ad1263 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: read.c 11156 2011-07-27 14:17:02Z doligez $ */
 
 #include <string.h>
 #include <mlvalues.h>
index 6b750eba3e789e756a12d7c37ceaa2dcc40331c1..b8a33373f7e8a26f6c015b88b5a52faf664fa272 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: rename.c 11156 2011-07-27 14:17:02Z doligez $ */
 
 #include <stdio.h>
 #include <mlvalues.h>
index 7069d140fbcf6d91ff225567233a3b5f48e4984a..cd9ad22f5cfa99240f53f8ad2a1e7885b6269146 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: select.c 12023 2012-01-14 09:40:49Z xleroy $ */
 
 #include <mlvalues.h>
 #include <alloc.h>
index 0ee96c3dd1ddf7ea78a96e64b2966afb8c49f3bf..9d4c32c4bf8712fa25c0f2dcaa80ff502fd05f9e 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: sendrecv.c 11896 2011-12-20 12:37:52Z xleroy $ */
 
 #include <mlvalues.h>
 #include <alloc.h>
index dd4e7ed3465885b0965bfec87c7266c5755e4630..73a4afa7f4ee65056a8cc081331433691f3425b0 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: shutdown.c 11156 2011-07-27 14:17:02Z doligez $ */
 
 #include <mlvalues.h>
 #include "unixsupport.h"
index 682096728ab6769004abf1ce3f1805d228fd7018..5e853f16df2cedb25fba64782d11835731b2d563 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: sleep.c 11156 2011-07-27 14:17:02Z doligez $ */
 
 #include <mlvalues.h>
 #include <signals.h>
index dc7a157c0b331f37242004cfb9b76887b3261efc..c979261fe4ba789bb1de6556511695730ed0d0a5 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: socket.c 12480 2012-05-24 16:40:59Z xleroy $ */
 
 #include <mlvalues.h>
 #include "unixsupport.h"
@@ -28,16 +28,30 @@ CAMLprim value unix_socket(domain, type, proto)
      value domain, type, proto;
 {
   SOCKET s;
+  int oldvalue, oldvaluelen, newvalue, retcode;
 
   /* IPv6 requires WinSock2, we must raise an error on PF_INET6 */
   if (Int_val(domain) >= sizeof(socket_domain_table)/sizeof(int)) {
     win32_maperr(WSAEPFNOSUPPORT);
     uerror("socket", Nothing);
   }
-
+  oldvaluelen = sizeof(oldvalue);
+  retcode = getsockopt(INVALID_SOCKET, SOL_SOCKET, SO_OPENTYPE,
+                       (char *) &oldvalue, &oldvaluelen);
+  if (retcode == 0) {
+    /* Set sockets to synchronous mode */
+    newvalue = SO_SYNCHRONOUS_NONALERT;
+    setsockopt(INVALID_SOCKET, SOL_SOCKET, SO_OPENTYPE,
+               (char *) &newvalue, sizeof(newvalue));
+  }
   s = socket(socket_domain_table[Int_val(domain)],
                    socket_type_table[Int_val(type)],
                    Int_val(proto));
+  if (retcode == 0) {
+    /* Restore initial mode */
+    setsockopt(INVALID_SOCKET, SOL_SOCKET, SO_OPENTYPE,
+               (char *) &oldvalue, oldvaluelen);
+  }
   if (s == INVALID_SOCKET) {
     win32_maperr(WSAGetLastError());
     uerror("socket", Nothing);
index 3d2c66754483b4fec778d60c7693fa6fd80784d5..5442537473d7e8ce71f66ba8161048325708d86b 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: socketaddr.h 11156 2011-07-27 14:17:02Z doligez $ */
 
 #include <misc.h>
 
index 94a6c04023f71e935c7aa250e5b2d0c42bc26833..eabab49e675dd9060fd948c871a8934bb0519aec 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: sockopt.c 11156 2011-07-27 14:17:02Z doligez $ */
 
 #include <errno.h>
 #include <mlvalues.h>
index 08ad397ca1c3e1e47dea6cc6692cacf676c0bdf3..d1cfdbb772d5afa22fdb8e3dd49199e4c96b51bf 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: stat.c 11156 2011-07-27 14:17:02Z doligez $ */
 
 #include <errno.h>
 #include <mlvalues.h>
index 8abfa6f88c9cc24ba866351c3ec1f7daed14717e..1d9a234b32b87b3093640d6b722b3ad9a6a11070 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: system.c 11156 2011-07-27 14:17:02Z doligez $ */
 
 #include <mlvalues.h>
 #include <memory.h>
index 19c278240fe4f3e098c60c7ad9e4a16ceee48511..3a607f17bec6eb6bfcd836ecca3c624b53f92b58 100644 (file)
@@ -11,7 +11,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: unix.ml 11912 2011-12-21 09:43:13Z protzenk $ *)
 
 (* Initialization *)
 
index f6431955bf4aa3187de427166739432ed0de8d59..d94bc2daebb6ff491622f1e8cebdbf157b27ddcc 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: unixsupport.c 11223 2011-10-15 09:02:22Z xleroy $ */
 
 #include <stddef.h>
 #include <mlvalues.h>
index f50d40c093771055d17f8b6c67307af2ca7201f1..dc99fe20f2545f9a8a78a15cab0251b10fff9812 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: unixsupport.h 12488 2012-05-28 11:31:30Z frisch $ */
 
 #define WIN32_LEAN_AND_MEAN
 #include <wtypes.h>
@@ -59,4 +59,4 @@ extern value unix_freeze_buffer (value);
 /* Blocking or nonblocking.  By default a filedescr is in blocking state */
 #define FLAGS_FD_IS_BLOCKING (1<<0)
 
-#define UNIX_BUFFER_SIZE 16384
+#define UNIX_BUFFER_SIZE 65536
index 0370d2de7def436903bfe574bb9503fa8d0c85f1..6904c27a164fe0d646088e79451371022fe505ce 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: windbug.c 11156 2011-07-27 14:17:02Z doligez $ */
 
 #include "windbug.h"
 
index efaeffc011865ea9095897eccb710bd63912e5ee..aba45ead8a2d09f0e1e80c5091d7f6b944a76051 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: windbug.h 12023 2012-01-14 09:40:49Z xleroy $ */
 
 #ifdef DEBUG
 
index 240b863b2b62dc845057dcb7fcc11c52a06bb23c..eb744195f08af34645da21f7d757a2d2a4493f5c 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: windir.c 11156 2011-07-27 14:17:02Z doligez $ */
 
 #include <mlvalues.h>
 #include <memory.h>
index bbb2e7cffaaebaa268a7e99855123426c3346d66..1842558feaf1e8d9d21e312728893a2964d047e0 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: winlist.c 11156 2011-07-27 14:17:02Z doligez $ */
 
 /* Basic list function in C. */
 
index 1f0a8435ab249aa081a11578285100e6bd7af805..8950abdd80e6f61521709da67b18d22705143987 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: winlist.h 11156 2011-07-27 14:17:02Z doligez $ */
 #ifndef _WINLIST_H
 #define _WINLIST_H
 
index db13231ae22e849a228605c5861c7a9c9faf1f9f..a2ac232e76f7dd692b7bc6e22adc67422a54c14a 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: winwait.c 11156 2011-07-27 14:17:02Z doligez $ */
 
 #include <windows.h>
 #include <mlvalues.h>
index 01c7dc4002b0039b174a196fd4ea9e06b521bcbd..ab47d5820567d8fa38533bb2156d6d07fa04fb63 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: winworker.c 11156 2011-07-27 14:17:02Z doligez $ */
 
 #include "winworker.h"
 #include "winlist.h"
index caf9067a61becbc8a7bccc03c1aa94efb900104d..7544a98c20bd0468e3a341be9f78f21eb441261d 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: winworker.h 11156 2011-07-27 14:17:02Z doligez $ */
 #ifndef _WINWORKER_H
 #define _WINWORKER_H
 
index 46d75ccba98cbe2384d563a55233de2c7374cd86..849f6d2d926916e254b6f6037f654233d116ed7c 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: write.c 11156 2011-07-27 14:17:02Z doligez $ */
 
 #include <errno.h>
 #include <string.h>
index d23a87fb7b7e13c5a485d6bdb74a0794dcf20a02..a5826656777e851e9bf2a82335162742e26b2b6d 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: asttypes.mli 12511 2012-05-30 13:29:48Z lefessan $ *)
 
 (* Auxiliary a.s.t. types used by parsetree and typedtree. *)
 
@@ -38,3 +38,8 @@ type override_flag = Override | Fresh
 type closed_flag = Closed | Open
 
 type label = string
+
+type 'a loc = 'a Location.loc = {
+  txt : 'a;
+  loc : Location.t;
+}
index 175eedc900a3366109ba8749a9bef32323a8e9eb..5472c8eb06974e390a40ab66e8bfecdbd6b72b87 100644 (file)
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: lexer.mli 12511 2012-05-30 13:29:48Z lefessan $ *)
 
 (* The lexical analyzer *)
 
+val init : unit -> unit
 val token: Lexing.lexbuf -> Parser.token
 val skip_sharp_bang: Lexing.lexbuf -> unit
 
 type error =
   | Illegal_character of char
   | Illegal_escape of string
-  | Unterminated_comment
+  | Unterminated_comment of Location.t
   | Unterminated_string
-  | Unterminated_string_in_comment
+  | Unterminated_string_in_comment of Location.t
   | Keyword_as_label of string
   | Literal_overflow of string
 ;;
@@ -34,3 +35,9 @@ open Format
 val report_error: formatter -> error -> unit
 
 val in_comment : unit -> bool;;
+val in_string : unit -> bool;;
+
+
+val print_warnings : bool ref
+val comments : unit -> (string * Location.t) list
+val token_with_comments : Lexing.lexbuf -> Parser.token
index 87e2a8cbce8447d7f209698ea52e0e51407635d1..9f2f4b20affef1b21fc08929190793a381a0df67 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: lexer.mll 12511 2012-05-30 13:29:48Z lefessan $ *)
 
 (* The lexer definition *)
 
@@ -22,9 +22,9 @@ open Parser
 type error =
   | Illegal_character of char
   | Illegal_escape of string
-  | Unterminated_comment
+  | Unterminated_comment of Location.t
   | Unterminated_string
-  | Unterminated_string_in_comment
+  | Unterminated_string_in_comment of Location.t
   | Keyword_as_label of string
   | Literal_overflow of string
 ;;
@@ -113,6 +113,12 @@ let store_string_char c =
   String.unsafe_set (!string_buff) (!string_index) c;
   incr string_index
 
+let store_lexeme lexbuf =
+  let s = Lexing.lexeme lexbuf in
+  for i = 0 to String.length s - 1 do
+    store_string_char s.[i];
+  done
+
 let get_stored_string () =
   let s = String.sub (!string_buff) 0 (!string_index) in
   string_buff := initial_string_buffer;
@@ -122,6 +128,9 @@ let get_stored_string () =
 let string_start_loc = ref Location.none;;
 let comment_start_loc = ref [];;
 let in_comment () = !comment_start_loc <> [];;
+let is_in_string = ref false
+let in_string () = !is_in_string
+let print_warnings = ref true
 
 (* To translate escape sequences *)
 
@@ -204,11 +213,11 @@ let report_error ppf = function
       fprintf ppf "Illegal character (%s)" (Char.escaped c)
   | Illegal_escape s ->
       fprintf ppf "Illegal backslash escape in string or character (%s)" s
-  | Unterminated_comment ->
+  | Unterminated_comment ->
       fprintf ppf "Comment not terminated"
   | Unterminated_string ->
       fprintf ppf "String literal not terminated"
-  | Unterminated_string_in_comment ->
+  | Unterminated_string_in_comment ->
       fprintf ppf "This comment contains an unterminated string literal"
   | Keyword_as_label kwd ->
       fprintf ppf "`%s' is a keyword, it cannot be used as label name" kwd
@@ -299,9 +308,11 @@ rule token = parse
           raise (Error(Literal_overflow "nativeint", Location.curr lexbuf)) }
   | "\""
       { reset_string_buffer();
+        is_in_string := true;
         let string_start = lexbuf.lex_start_p in
         string_start_loc := Location.curr lexbuf;
         string lexbuf;
+        is_in_string := false;
         lexbuf.lex_start_p <- string_start;
         STRING (get_stored_string()) }
   | "'" newline "'"
@@ -321,15 +332,24 @@ rule token = parse
         raise (Error(Illegal_escape esc, Location.curr lexbuf))
       }
   | "(*"
-      { comment_start_loc := [Location.curr lexbuf];
-        comment lexbuf;
-        token lexbuf }
+      { let start_loc = Location.curr lexbuf  in
+        comment_start_loc := [start_loc];
+        reset_string_buffer ();
+        let end_loc = comment lexbuf in
+        let s = get_stored_string () in
+        reset_string_buffer ();
+        COMMENT (s, { start_loc with Location.loc_end = end_loc.Location.loc_end })
+      }
   | "(*)"
-      { let loc = Location.curr lexbuf in
-        Location.prerr_warning loc Warnings.Comment_start;
-        comment_start_loc := [Location.curr lexbuf];
-        comment lexbuf;
-        token lexbuf
+      { let loc = Location.curr lexbuf  in
+        if !print_warnings then
+          Location.prerr_warning loc Warnings.Comment_start;
+        comment_start_loc := [loc];
+        reset_string_buffer ();
+        let end_loc = comment lexbuf in
+        let s = get_stored_string () in
+        reset_string_buffer ();
+        COMMENT (s, { loc with Location.loc_end = end_loc.Location.loc_end })
       }
   | "*)"
       { let loc = Location.curr lexbuf in
@@ -411,53 +431,64 @@ rule token = parse
 and comment = parse
     "(*"
       { comment_start_loc := (Location.curr lexbuf) :: !comment_start_loc;
+        store_lexeme lexbuf;
         comment lexbuf;
       }
   | "*)"
       { match !comment_start_loc with
         | [] -> assert false
-        | [_] -> comment_start_loc := [];
+        | [_] -> comment_start_loc := []; Location.curr lexbuf
         | _ :: l -> comment_start_loc := l;
-                    comment lexbuf;
+                  store_lexeme lexbuf;
+                  comment lexbuf;
        }
   | "\""
-      { reset_string_buffer();
+      {
         string_start_loc := Location.curr lexbuf;
+        store_string_char '"';
+        is_in_string := true;
         begin try string lexbuf
         with Error (Unterminated_string, _) ->
           match !comment_start_loc with
           | [] -> assert false
-          | loc :: _ -> comment_start_loc := [];
-                        raise (Error (Unterminated_string_in_comment, loc))
+          | loc :: _ ->
+            let start = List.hd (List.rev !comment_start_loc) in
+            comment_start_loc := [];
+            raise (Error (Unterminated_string_in_comment start, loc))
         end;
-        reset_string_buffer ();
+        is_in_string := false;
+        store_string_char '"';
         comment lexbuf }
   | "''"
-      { comment lexbuf }
+      { store_lexeme lexbuf; comment lexbuf }
   | "'" newline "'"
       { update_loc lexbuf None 1 false 1;
+        store_lexeme lexbuf;
         comment lexbuf
       }
   | "'" [^ '\\' '\'' '\010' '\013' ] "'"
-      { comment lexbuf }
+      { store_lexeme lexbuf; comment lexbuf }
   | "'\\" ['\\' '"' '\'' 'n' 't' 'b' 'r' ' '] "'"
-      { comment lexbuf }
+      { store_lexeme lexbuf; comment lexbuf }
   | "'\\" ['0'-'9'] ['0'-'9'] ['0'-'9'] "'"
-      { comment lexbuf }
+      { store_lexeme lexbuf; comment lexbuf }
   | "'\\" 'x' ['0'-'9' 'a'-'f' 'A'-'F'] ['0'-'9' 'a'-'f' 'A'-'F'] "'"
-      { comment lexbuf }
+      { store_lexeme lexbuf; comment lexbuf }
   | eof
       { match !comment_start_loc with
         | [] -> assert false
-        | loc :: _ -> comment_start_loc := [];
-                      raise (Error (Unterminated_comment, loc))
+        | loc :: _ ->
+          let start = List.hd (List.rev !comment_start_loc) in
+          comment_start_loc := [];
+          raise (Error (Unterminated_comment start, loc))
       }
   | newline
       { update_loc lexbuf None 1 false 0;
+        store_lexeme lexbuf;
         comment lexbuf
       }
   | _
-      { comment lexbuf }
+      { store_lexeme lexbuf; comment lexbuf }
 
 and string = parse
     '"'
@@ -494,14 +525,12 @@ and string = parse
       { if not (in_comment ()) then
           Location.prerr_warning (Location.curr lexbuf) Warnings.Eol_in_string;
         update_loc lexbuf None 1 false 0;
-        let s = Lexing.lexeme lexbuf in
-        for i = 0 to String.length s - 1 do
-          store_string_char s.[i];
-        done;
+        store_lexeme lexbuf;
         string lexbuf
       }
   | eof
-      { raise (Error (Unterminated_string, !string_start_loc)) }
+      { is_in_string := false;
+        raise (Error (Unterminated_string, !string_start_loc)) }
   | _
       { store_string_char(Lexing.lexeme_char lexbuf 0);
         string lexbuf }
@@ -512,3 +541,21 @@ and skip_sharp_bang = parse
   | "#!" [^ '\n']* '\n'
        { update_loc lexbuf None 1 false 0 }
   | "" { () }
+
+{
+  let token_with_comments = token
+
+  let last_comments = ref []
+  let rec token lexbuf =
+    match token_with_comments lexbuf with
+        COMMENT (s, comment_loc) ->
+          last_comments := (s, comment_loc) :: !last_comments;
+          token lexbuf
+      | tok -> tok
+  let comments () = List.rev !last_comments
+  let init () =
+    is_in_string := false;
+    last_comments := [];
+    comment_start_loc := []
+
+}
index 561a9060c48d6bddd99e7d00a44eeb40919974da..947c1a6f56ff78ba55cb877e1765aba1334b8259 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: location.ml 12511 2012-05-30 13:29:48Z lefessan $ *)
 
 open Lexing
 
@@ -276,3 +276,11 @@ let prerr_warning loc w = print_warning loc err_formatter w;;
 let echo_eof () =
   print_newline ();
   incr num_loc_lines
+
+type 'a loc = {
+  txt : 'a;
+  loc : t;
+}
+
+let mkloc txt loc = { txt ; loc }
+let mknoloc txt = mkloc txt none
index 2b1a5a8fa5a67253931a051534f451a8a0aeca2c..3576b0002d649a6935c31f632dfefbd0ad7c0566 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: location.mli 12511 2012-05-30 13:29:48Z lefessan $ *)
 
 (* Source code locations (ranges of positions), used in parsetree. *)
 
@@ -41,6 +41,9 @@ val curr : Lexing.lexbuf -> t
 
 val symbol_rloc: unit -> t
 val symbol_gloc: unit -> t
+
+(** [rhs_loc n] returns the location of the symbol at position [n], starting
+  at 1, in the current parser rule. *)
 val rhs_loc: int -> t
 
 val input_name: string ref
@@ -57,6 +60,14 @@ val reset: unit -> unit
 
 val highlight_locations: formatter -> t -> t -> bool
 
+type 'a loc = {
+  txt : 'a;
+  loc : t;
+}
+
+val mknoloc : 'a -> 'a loc
+val mkloc : 'a -> t -> 'a loc
+
 val print: formatter -> t -> unit
 val print_filename: formatter -> string -> unit
 
@@ -66,3 +77,4 @@ val show_filename: string -> string
 
 
 val absname: bool ref
+
index 612f9df197301683724b2674919eb3f75f426465..3e780be49aaf0c3001e54dcfdb8dba5a5d5376fe 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: longident.ml 11252 2011-10-28 21:21:55Z weis $ *)
 
 type t =
     Lident of string
index a802049b96109c1d119051c4b272af77950954d6..ba21778d8710624e3e2f93554cc018d4377c72da 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: longident.mli 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (* Long identifiers, used in parsetree. *)
 
index cf862af3f1668ee03f7bd58281935cdf25a5a65d..3d00603c1518da8d80bdb0654373f8fb6142c88a 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: parse.ml 12511 2012-05-30 13:29:48Z lefessan $ *)
 
 (* Entry points in the parser *)
 
@@ -24,9 +24,9 @@ let rec skip_phrase lexbuf =
       Parser.SEMISEMI | Parser.EOF -> ()
     | _ -> skip_phrase lexbuf
   with
-    | Lexer.Error (Lexer.Unterminated_comment, _) -> ()
+    | Lexer.Error (Lexer.Unterminated_comment _, _) -> ()
     | Lexer.Error (Lexer.Unterminated_string, _) -> ()
-    | Lexer.Error (Lexer.Unterminated_string_in_comment, _) -> ()
+    | Lexer.Error (Lexer.Unterminated_string_in_comment _, _) -> ()
     | Lexer.Error (Lexer.Illegal_character _, _) -> skip_phrase lexbuf
 ;;
 
@@ -38,13 +38,14 @@ let maybe_skip_phrase lexbuf =
 
 let wrap parsing_fun lexbuf =
   try
+    Lexer.init ();
     let ast = parsing_fun Lexer.token lexbuf in
     Parsing.clear_parser();
     ast
   with
-  | Lexer.Error(Lexer.Unterminated_comment, _) as err -> raise err
+  | Lexer.Error(Lexer.Unterminated_comment _, _) as err -> raise err
   | Lexer.Error(Lexer.Unterminated_string, _) as err -> raise err
-  | Lexer.Error(Lexer.Unterminated_string_in_comment, _) as err -> raise err
+  | Lexer.Error(Lexer.Unterminated_string_in_comment _, _) as err -> raise err
   | Lexer.Error(Lexer.Illegal_character _, _) as err ->
       if !Location.input_name = "//toplevel//" then skip_phrase lexbuf;
       raise err
index 85e08bc48231fa2a47a608cfd9877aa890934e26..d53b63ab049427add471f0ee1990e85ddaea7102 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: parse.mli 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (* Entry points in the parser *)
 
index a5065b5cfd105e9279a624814b74ca067a1bf78e..f20f77dec68c55cf38c434c85acc07525ef542a8 100644 (file)
@@ -10,7 +10,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: parser.mly 12511 2012-05-30 13:29:48Z lefessan $ */
 
 /* The parser definition */
 
@@ -40,15 +40,24 @@ let mkclass d =
   { pcl_desc = d; pcl_loc = symbol_rloc() }
 let mkcty d =
   { pcty_desc = d; pcty_loc = symbol_rloc() }
+let mkctf d =
+  { pctf_desc = d; pctf_loc = symbol_rloc () }
+let mkcf d =
+  { pcf_desc = d; pcf_loc = symbol_rloc () }
+let mkrhs rhs pos = mkloc rhs (rhs_loc pos)
+let mkoption d =
+  { ptyp_desc = Ptyp_constr(mknoloc (Ldot (Lident "*predef*", "option")), [d]);
+    ptyp_loc = d.ptyp_loc}
 
 let reloc_pat x = { x with ppat_loc = symbol_rloc () };;
 let reloc_exp x = { x with pexp_loc = symbol_rloc () };;
 
 let mkoperator name pos =
-  { pexp_desc = Pexp_ident(Lident name); pexp_loc = rhs_loc pos }
+  let loc = rhs_loc pos in
+  { pexp_desc = Pexp_ident(mkloc (Lident name) loc); pexp_loc = loc }
 
 let mkpatvar name pos =
-  { ppat_desc = Ppat_var name; ppat_loc = rhs_loc pos }
+  { ppat_desc = Ppat_var (mkrhs name pos); ppat_loc = rhs_loc pos }
 
 (*
   Ghost expressions and patterns:
@@ -73,9 +82,9 @@ let ghtyp d = { ptyp_desc = d; ptyp_loc = symbol_gloc () };;
 
 let mkassert e =
   match e with
-  | { pexp_desc = Pexp_construct (Lident "false", None, false);
-      pexp_loc = _ } ->
-      mkexp (Pexp_assertfalse)
+  | {pexp_desc = Pexp_construct ({ txt = Lident "false" }, None , false);
+     pexp_loc = _ } ->
+         mkexp (Pexp_assertfalse)
   | _ -> mkexp (Pexp_assert (e))
 ;;
 
@@ -113,9 +122,17 @@ let mkuplus name arg =
   | _ ->
       mkexp(Pexp_apply(mkoperator ("~" ^ name) 1, ["", arg]))
 
+let mkexp_cons args loc =
+  {pexp_desc = Pexp_construct(mkloc (Lident "::") Location.none,
+                              Some args, false); pexp_loc = loc}
+
+let mkpat_cons args loc =
+  {ppat_desc = Ppat_construct(mkloc (Lident "::") Location.none,
+                              Some args, false); ppat_loc = loc}
+
 let rec mktailexp = function
     [] ->
-      ghexp(Pexp_construct(Lident "[]", None, false))
+      ghexp(Pexp_construct(mkloc (Lident "[]") Location.none, None, false))
   | e1 :: el ->
       let exp_el = mktailexp el in
       let l = {loc_start = e1.pexp_loc.loc_start;
@@ -123,11 +140,11 @@ let rec mktailexp = function
                loc_ghost = true}
       in
       let arg = {pexp_desc = Pexp_tuple [e1; exp_el]; pexp_loc = l} in
-      {pexp_desc = Pexp_construct(Lident "::", Some arg, false); pexp_loc = l}
+      mkexp_cons arg l
 
 let rec mktailpat = function
     [] ->
-      ghpat(Ppat_construct(Lident "[]", None, false))
+      ghpat(Ppat_construct(mkloc (Lident "[]") Location.none, None, false))
   | p1 :: pl ->
       let pat_pl = mktailpat pl in
       let l = {loc_start = p1.ppat_loc.loc_start;
@@ -135,13 +152,13 @@ let rec mktailpat = function
                loc_ghost = true}
       in
       let arg = {ppat_desc = Ppat_tuple [p1; pat_pl]; ppat_loc = l} in
-      {ppat_desc = Ppat_construct(Lident "::", Some arg, false); ppat_loc = l}
+      mkpat_cons arg l
 
 let ghstrexp e =
   { pstr_desc = Pstr_eval e; pstr_loc = {e.pexp_loc with loc_ghost = true} }
 
 let array_function str name =
-  Ldot(Lident str, (if !Clflags.fast then "unsafe_" ^ name else name))
+  mknoloc (Ldot(Lident str, (if !Clflags.fast then "unsafe_" ^ name else name)))
 
 let rec deep_mkrangepat c1 c2 =
   if c1 = c2 then ghpat(Ppat_constant(Const_char c1)) else
@@ -161,7 +178,7 @@ let unclosed opening_name opening_num closing_name closing_num =
                                            rhs_loc closing_num, closing_name)))
 
 let bigarray_function str name =
-  Ldot(Ldot(Lident "Bigarray", str), name)
+  mkloc (Ldot(Ldot(Lident "Bigarray", str), name)) Location.none
 
 let bigarray_untuplify = function
     { pexp_desc = Pexp_tuple explist; pexp_loc = _ } -> explist
@@ -206,11 +223,11 @@ let lapply p1 p2 =
   then Lapply(p1, p2)
   else raise (Syntaxerr.Error(Syntaxerr.Applicative_path (symbol_rloc())))
 
-let exp_of_label lbl =
-  mkexp (Pexp_ident(Lident(Longident.last lbl)))
+let exp_of_label lbl pos =
+  mkexp (Pexp_ident(mkrhs (Lident(Longident.last lbl)) pos))
 
-let pat_of_label lbl =
-  mkpat (Ppat_var(Longident.last lbl))
+let pat_of_label lbl pos =
+  mkpat (Ppat_var (mkrhs (Longident.last lbl) pos))
 
 let check_variable vl loc v =
   if List.mem v vl then
@@ -227,7 +244,7 @@ let varify_constructors var_names t =
       | Ptyp_arrow (label,core_type,core_type') ->
           Ptyp_arrow(label, loop core_type, loop core_type')
       | Ptyp_tuple lst -> Ptyp_tuple (List.map loop lst)
-      | Ptyp_constr(Lident s, []) when List.mem s var_names ->
+      | Ptyp_constr( { txt = Lident s }, []) when List.mem s var_names ->
           Ptyp_var s
       | Ptyp_constr(longident, lst) ->
           Ptyp_constr(longident, List.map loop lst)
@@ -389,6 +406,7 @@ let wrap_type_annotation newtypes core_type body =
 %token WHEN
 %token WHILE
 %token WITH
+%token <string * Location.t> COMMENT
 
 /* Precedences and associativities.
 
@@ -461,7 +479,8 @@ The precedences must be listed from low to high.
 %type <Parsetree.toplevel_phrase> toplevel_phrase
 %start use_file                         /* for the #use directive */
 %type <Parsetree.toplevel_phrase list> use_file
-
+%start any_longident
+%type <Longident.t> any_longident
 %%
 
 /* Entry points */
@@ -500,13 +519,13 @@ use_file_tail:
 
 module_expr:
     mod_longident
-      { mkmod(Pmod_ident $1) }
+      { mkmod(Pmod_ident (mkrhs $1 1)) }
   | STRUCT structure END
       { mkmod(Pmod_structure($2)) }
   | STRUCT structure error
       { unclosed "struct" 1 "end" 3 }
   | FUNCTOR LPAREN UIDENT COLON module_type RPAREN MINUSGREATER module_expr
-      { mkmod(Pmod_functor($3, $5, $8)) }
+      { mkmod(Pmod_functor(mkrhs $3 3, $5, $8)) }
   | module_expr LPAREN module_expr RPAREN
       { mkmod(Pmod_apply($1, $3)) }
   | module_expr LPAREN module_expr error
@@ -555,21 +574,22 @@ structure_item:
           [{ ppat_desc = Ppat_any; ppat_loc = _ }, exp] -> mkstr(Pstr_eval exp)
         | _ -> mkstr(Pstr_value($2, List.rev $3)) }
   | EXTERNAL val_ident COLON core_type EQUAL primitive_declaration
-      { mkstr(Pstr_primitive($2, {pval_type = $4; pval_prim = $6})) }
+      { mkstr(Pstr_primitive(mkrhs $2 2, {pval_type = $4; pval_prim = $6;
+          pval_loc = symbol_rloc ()})) }
   | TYPE type_declarations
       { mkstr(Pstr_type(List.rev $2)) }
   | EXCEPTION UIDENT constructor_arguments
-      { mkstr(Pstr_exception($2, $3)) }
+      { mkstr(Pstr_exception(mkrhs $2 2, $3)) }
   | EXCEPTION UIDENT EQUAL constr_longident
-      { mkstr(Pstr_exn_rebind($2, $4)) }
+      { mkstr(Pstr_exn_rebind(mkrhs $2 2, mkloc $4 (rhs_loc 4))) }
   | MODULE UIDENT module_binding
-      { mkstr(Pstr_module($2, $3)) }
+      { mkstr(Pstr_module(mkrhs $2 2, $3)) }
   | MODULE REC module_rec_bindings
       { mkstr(Pstr_recmodule(List.rev $3)) }
   | MODULE TYPE ident EQUAL module_type
-      { mkstr(Pstr_modtype($3, $5)) }
+      { mkstr(Pstr_modtype(mkrhs $3 3, $5)) }
   | OPEN mod_longident
-      { mkstr(Pstr_open $2) }
+      { mkstr(Pstr_open (mkrhs $2 2)) }
   | CLASS class_declarations
       { mkstr(Pstr_class (List.rev $2)) }
   | CLASS TYPE class_type_declarations
@@ -583,28 +603,28 @@ module_binding:
   | COLON module_type EQUAL module_expr
       { mkmod(Pmod_constraint($4, $2)) }
   | LPAREN UIDENT COLON module_type RPAREN module_binding
-      { mkmod(Pmod_functor($2, $4, $6)) }
+      { mkmod(Pmod_functor(mkrhs $2 2, $4, $6)) }
 ;
 module_rec_bindings:
     module_rec_binding                            { [$1] }
   | module_rec_bindings AND module_rec_binding    { $3 :: $1 }
 ;
 module_rec_binding:
-    UIDENT COLON module_type EQUAL module_expr    { ($1, $3, $5) }
+    UIDENT COLON module_type EQUAL module_expr    { (mkrhs $1 1, $3, $5) }
 ;
 
 /* Module types */
 
 module_type:
     mty_longident
-      { mkmty(Pmty_ident $1) }
+      { mkmty(Pmty_ident (mkrhs $1 1)) }
   | SIG signature END
       { mkmty(Pmty_signature(List.rev $2)) }
   | SIG signature error
       { unclosed "sig" 1 "end" 3 }
   | FUNCTOR LPAREN UIDENT COLON module_type RPAREN MINUSGREATER module_type
       %prec below_WITH
-      { mkmty(Pmty_functor($3, $5, $8)) }
+      { mkmty(Pmty_functor(mkrhs $3 3, $5, $8)) }
   | module_type WITH with_constraints
       { mkmty(Pmty_with($1, List.rev $3)) }
   | MODULE TYPE OF module_expr
@@ -621,23 +641,25 @@ signature:
 ;
 signature_item:
     VAL val_ident COLON core_type
-      { mksig(Psig_value($2, {pval_type = $4; pval_prim = []})) }
+      { mksig(Psig_value(mkrhs $2 2, {pval_type = $4; pval_prim = [];
+          pval_loc = symbol_rloc()})) }
   | EXTERNAL val_ident COLON core_type EQUAL primitive_declaration
-      { mksig(Psig_value($2, {pval_type = $4; pval_prim = $6})) }
+      { mksig(Psig_value(mkrhs $2 2, {pval_type = $4; pval_prim = $6;
+          pval_loc = symbol_rloc()})) }
   | TYPE type_declarations
       { mksig(Psig_type(List.rev $2)) }
   | EXCEPTION UIDENT constructor_arguments
-      { mksig(Psig_exception($2, $3)) }
+      { mksig(Psig_exception(mkrhs $2 2, $3)) }
   | MODULE UIDENT module_declaration
-      { mksig(Psig_module($2, $3)) }
+      { mksig(Psig_module(mkrhs $2 2, $3)) }
   | MODULE REC module_rec_declarations
       { mksig(Psig_recmodule(List.rev $3)) }
   | MODULE TYPE ident
-      { mksig(Psig_modtype($3, Pmodtype_abstract)) }
+      { mksig(Psig_modtype(mkrhs $3 3, Pmodtype_abstract)) }
   | MODULE TYPE ident EQUAL module_type
-      { mksig(Psig_modtype($3, Pmodtype_manifest $5)) }
+      { mksig(Psig_modtype(mkrhs $3 3, Pmodtype_manifest $5)) }
   | OPEN mod_longident
-      { mksig(Psig_open $2) }
+      { mksig(Psig_open (mkrhs $2 2)) }
   | INCLUDE module_type
       { mksig(Psig_include $2) }
   | CLASS class_descriptions
@@ -650,14 +672,14 @@ module_declaration:
     COLON module_type
       { $2 }
   | LPAREN UIDENT COLON module_type RPAREN module_declaration
-      { mkmty(Pmty_functor($2, $4, $6)) }
+      { mkmty(Pmty_functor(mkrhs $2 2, $4, $6)) }
 ;
 module_rec_declarations:
     module_rec_declaration                              { [$1] }
   | module_rec_declarations AND module_rec_declaration  { $3 :: $1 }
 ;
 module_rec_declaration:
-    UIDENT COLON module_type                            { ($1, $3) }
+    UIDENT COLON module_type                            { (mkrhs $1 1, $3) }
 ;
 
 /* Class expressions */
@@ -670,7 +692,7 @@ class_declaration:
     virtual_flag class_type_parameters LIDENT class_fun_binding
       { let params, variance = List.split (fst $2) in
         {pci_virt = $1; pci_params = params, snd $2;
-         pci_name = $3; pci_expr = $4; pci_variance = variance;
+         pci_name = mkrhs $3 3; pci_expr = $4; pci_variance = variance;
          pci_loc = symbol_rloc ()} }
 ;
 class_fun_binding:
@@ -703,9 +725,9 @@ class_expr:
 ;
 class_simple_expr:
     LBRACKET core_type_comma_list RBRACKET class_longident
-      { mkclass(Pcl_constr($4, List.rev $2)) }
+      { mkclass(Pcl_constr(mkloc $4 (rhs_loc 4), List.rev $2)) }
   | class_longident
-      { mkclass(Pcl_constr($1, [])) }
+      { mkclass(Pcl_constr(mkrhs $1 1, [])) }
   | OBJECT class_structure END
       { mkclass(Pcl_structure($2)) }
   | OBJECT class_structure error
@@ -721,7 +743,7 @@ class_simple_expr:
 ;
 class_structure:
     class_self_pattern class_fields
-      { $1, List.rev $2 }
+      { { pcstr_pat = $1; pcstr_fields = List.rev $2 } }
 ;
 class_self_pattern:
     LPAREN pattern RPAREN
@@ -734,20 +756,24 @@ class_self_pattern:
 class_fields:
     /* empty */
       { [] }
-  | class_fields INHERIT override_flag class_expr parent_binder
-      { Pcf_inher ($3, $4, $5) :: $1 }
-  | class_fields VAL virtual_value
-      { Pcf_valvirt $3 :: $1 }
-  | class_fields VAL value
-      { Pcf_val $3 :: $1 }
-  | class_fields virtual_method
-      { Pcf_virt $2 :: $1 }
-  | class_fields concrete_method
-      { Pcf_meth $2 :: $1 }
-  | class_fields CONSTRAINT constrain
-      { Pcf_cstr $3 :: $1 }
-  | class_fields INITIALIZER seq_expr
-      { Pcf_init $3 :: $1 }
+  | class_fields class_field
+      { $2 :: $1 }
+;
+class_field:
+  | INHERIT override_flag class_expr parent_binder
+      { mkcf (Pcf_inher ($2, $3, $4)) }
+  | VAL virtual_value
+      { mkcf (Pcf_valvirt $2) }
+  | VAL value
+      { mkcf (Pcf_val $2) }
+  | virtual_method
+      { mkcf (Pcf_virt $1) }
+  | concrete_method
+      { mkcf (Pcf_meth $1) }
+  | CONSTRAINT constrain_field
+      { mkcf (Pcf_constr $2) }
+  | INITIALIZER seq_expr
+      { mkcf (Pcf_init $2) }
 ;
 parent_binder:
     AS LIDENT
@@ -758,34 +784,33 @@ parent_binder:
 virtual_value:
     override_flag MUTABLE VIRTUAL label COLON core_type
       { if $1 = Override then syntax_error ();
-        $4, Mutable, $6, symbol_rloc () }
+        mkloc $4 (rhs_loc 4), Mutable, $6 }
   | VIRTUAL mutable_flag label COLON core_type
-      { $3, $2, $5, symbol_rloc () }
+      { mkrhs $3 3, $2, $5 }
 ;
 value:
     override_flag mutable_flag label EQUAL seq_expr
-      { $3, $2, $1, $5, symbol_rloc () }
+      { mkrhs $3 3, $2, $1, $5 }
   | override_flag mutable_flag label type_constraint EQUAL seq_expr
-      { $3, $2, $1, (let (t, t') = $4 in ghexp(Pexp_constraint($6, t, t'))),
-        symbol_rloc () }
+      { mkrhs $3 3, $2, $1, (let (t, t') = $4 in ghexp(Pexp_constraint($6, t, t'))) },
 ;
 virtual_method:
     METHOD override_flag PRIVATE VIRTUAL label COLON poly_type
       { if $2 = Override then syntax_error ();
-        $5, Private, $7, symbol_rloc () }
+        mkloc $5 (rhs_loc 5), Private, $7 }
   | METHOD override_flag VIRTUAL private_flag label COLON poly_type
       { if $2 = Override then syntax_error ();
-        $5, $4, $7, symbol_rloc () }
+        mkloc $5 (rhs_loc 5), $4, $7 }
 ;
 concrete_method :
     METHOD override_flag private_flag label strict_binding
-      { $4, $3, $2, ghexp(Pexp_poly ($5, None)), symbol_rloc () }
+      { mkloc $4 (rhs_loc 4), $3, $2, ghexp(Pexp_poly ($5, None)) }
   | METHOD override_flag private_flag label COLON poly_type EQUAL seq_expr
-      { $4, $3, $2, ghexp(Pexp_poly($8,Some $6)), symbol_rloc () }
+      { mkloc $4 (rhs_loc 4), $3, $2, ghexp(Pexp_poly($8,Some $6)) }
   | METHOD override_flag private_flag label COLON TYPE lident_list
     DOT core_type EQUAL seq_expr
       { let exp, poly = wrap_type_annotation $7 $9 $11 in
-        $4, $3, $2, ghexp(Pexp_poly(exp, Some poly)), symbol_rloc () }
+        mkloc $4 (rhs_loc 4), $3, $2, ghexp(Pexp_poly(exp, Some poly)) }
 ;
 
 /* Class types */
@@ -794,17 +819,9 @@ class_type:
     class_signature
       { $1 }
   | QUESTION LIDENT COLON simple_core_type_or_tuple MINUSGREATER class_type
-      { mkcty(Pcty_fun("?" ^ $2 ,
-                       {ptyp_desc =
-                        Ptyp_constr(Ldot (Lident "*predef*", "option"), [$4]);
-                        ptyp_loc = $4.ptyp_loc},
-                       $6)) }
+      { mkcty(Pcty_fun("?" ^ $2 , mkoption $4, $6)) }
   | OPTLABEL simple_core_type_or_tuple MINUSGREATER class_type
-      { mkcty(Pcty_fun("?" ^ $1 ,
-                       {ptyp_desc =
-                        Ptyp_constr(Ldot (Lident "*predef*", "option"), [$2]);
-                        ptyp_loc = $2.ptyp_loc},
-                       $4)) }
+      { mkcty(Pcty_fun("?" ^ $1, mkoption $2, $4)) }
   | LIDENT COLON simple_core_type_or_tuple MINUSGREATER class_type
       { mkcty(Pcty_fun($1, $3, $5)) }
   | simple_core_type_or_tuple MINUSGREATER class_type
@@ -812,9 +829,9 @@ class_type:
 ;
 class_signature:
     LBRACKET core_type_comma_list RBRACKET clty_longident
-      { mkcty(Pcty_constr ($4, List.rev $2)) }
+      { mkcty(Pcty_constr (mkloc $4 (rhs_loc 4), List.rev $2)) }
   | clty_longident
-      { mkcty(Pcty_constr ($1, [])) }
+      { mkcty(Pcty_constr (mkrhs $1 1, [])) }
   | OBJECT class_sig_body END
       { mkcty(Pcty_signature $2) }
   | OBJECT class_sig_body error
@@ -822,7 +839,8 @@ class_signature:
 ;
 class_sig_body:
     class_self_type class_sig_fields
-      { $1, List.rev $2 }
+    { { pcsig_self = $1; pcsig_fields = List.rev $2;
+      pcsig_loc = symbol_rloc(); } }
 ;
 class_self_type:
     LPAREN core_type RPAREN
@@ -832,32 +850,38 @@ class_self_type:
 ;
 class_sig_fields:
     /* empty */                                 { [] }
-  | class_sig_fields INHERIT class_signature    { Pctf_inher $3 :: $1 }
-  | class_sig_fields VAL value_type             { Pctf_val   $3 :: $1 }
-  | class_sig_fields virtual_method_type        { Pctf_virt  $2 :: $1 }
-  | class_sig_fields method_type                { Pctf_meth  $2 :: $1 }
-  | class_sig_fields CONSTRAINT constrain       { Pctf_cstr  $3 :: $1 }
+| class_sig_fields class_sig_field     { $2 :: $1 }
+;
+class_sig_field:
+    INHERIT class_signature       { mkctf (Pctf_inher $2) }
+  | VAL value_type              { mkctf (Pctf_val $2) }
+  | virtual_method_type         { mkctf (Pctf_virt $1) }
+  | method_type                 { mkctf (Pctf_meth $1) }
+  | CONSTRAINT constrain_field        { mkctf (Pctf_cstr $2) }
 ;
 value_type:
     VIRTUAL mutable_flag label COLON core_type
-      { $3, $2, Virtual, $5, symbol_rloc () }
+      { $3, $2, Virtual, $5 }
   | MUTABLE virtual_flag label COLON core_type
-      { $3, Mutable, $2, $5, symbol_rloc () }
+      { $3, Mutable, $2, $5 }
   | label COLON core_type
-      { $1, Immutable, Concrete, $3, symbol_rloc () }
+      { $1, Immutable, Concrete, $3 }
 ;
 method_type:
     METHOD private_flag label COLON poly_type
-      { $3, $2, $5, symbol_rloc () }
+      { $3, $2, $5 }
 ;
 virtual_method_type:
     METHOD PRIVATE VIRTUAL label COLON poly_type
-      { $4, Private, $6, symbol_rloc () }
+      { $4, Private, $6 }
   | METHOD VIRTUAL private_flag label COLON poly_type
-      { $4, $3, $6, symbol_rloc () }
+      { $4, $3, $6 }
 ;
 constrain:
-        core_type EQUAL core_type          { $1, $3, symbol_rloc () }
+        core_type EQUAL core_type          { $1, $3, symbol_rloc() }
+;
+constrain_field:
+        core_type EQUAL core_type          { $1, $3 }
 ;
 class_descriptions:
     class_descriptions AND class_description    { $3 :: $1 }
@@ -867,7 +891,7 @@ class_description:
     virtual_flag class_type_parameters LIDENT COLON class_type
       { let params, variance = List.split (fst $2) in
         {pci_virt = $1; pci_params = params, snd $2;
-         pci_name = $3; pci_expr = $5; pci_variance = variance;
+         pci_name = mkrhs $3 3; pci_expr = $5; pci_variance = variance;
          pci_loc = symbol_rloc ()} }
 ;
 class_type_declarations:
@@ -878,7 +902,7 @@ class_type_declaration:
     virtual_flag class_type_parameters LIDENT EQUAL class_signature
       { let params, variance = List.split (fst $2) in
         {pci_virt = $1; pci_params = params, snd $2;
-         pci_name = $3; pci_expr = $5; pci_variance = variance;
+         pci_name = mkrhs $3 3; pci_expr = $5; pci_variance = variance;
          pci_loc = symbol_rloc ()} }
 ;
 
@@ -908,7 +932,7 @@ labeled_simple_pattern:
       { ("", None, $1) }
 ;
 pattern_var:
-    LIDENT            { mkpat(Ppat_var $1) }
+    LIDENT            { mkpat(Ppat_var (mkrhs $1 1)) }
   | UNDERSCORE        { mkpat Ppat_any }
 ;
 opt_default:
@@ -922,7 +946,7 @@ label_let_pattern:
       { let (lab, pat) = $1 in (lab, mkpat(Ppat_constraint(pat, $3))) }
 ;
 label_var:
-    LIDENT    { ($1, mkpat(Ppat_var $1)) }
+    LIDENT    { ($1, mkpat(Ppat_var (mkrhs $1 1))) }
 ;
 let_pattern:
     pattern
@@ -938,9 +962,9 @@ expr:
   | LET rec_flag let_bindings IN seq_expr
       { mkexp(Pexp_let($2, List.rev $3, $5)) }
   | LET MODULE UIDENT module_binding IN seq_expr
-      { mkexp(Pexp_letmodule($3, $4, $6)) }
+      { mkexp(Pexp_letmodule(mkrhs $3 3, $4, $6)) }
   | LET OPEN mod_longident IN seq_expr
-      { mkexp(Pexp_open($3, $5)) }
+      { mkexp(Pexp_open(mkrhs $3 3, $5)) }
   | FUNCTION opt_bar match_cases
       { mkexp(Pexp_function("", None, List.rev $3)) }
   | FUN labeled_simple_pattern fun_def
@@ -956,7 +980,7 @@ expr:
   | expr_comma_list %prec below_COMMA
       { mkexp(Pexp_tuple(List.rev $1)) }
   | constr_longident simple_expr %prec below_SHARP
-      { mkexp(Pexp_construct($1, Some $2, false)) }
+      { mkexp(Pexp_construct(mkrhs $1 1, Some $2, false)) }
   | name_tag simple_expr %prec below_SHARP
       { mkexp(Pexp_variant($1, Some $2)) }
   | IF seq_expr THEN expr ELSE expr
@@ -966,15 +990,11 @@ expr:
   | WHILE seq_expr DO seq_expr DONE
       { mkexp(Pexp_while($2, $4)) }
   | FOR val_ident EQUAL seq_expr direction_flag seq_expr DO seq_expr DONE
-      { mkexp(Pexp_for($2, $4, $6, $5, $8)) }
+      { mkexp(Pexp_for(mkrhs $2 2, $4, $6, $5, $8)) }
   | expr COLONCOLON expr
-      { mkexp(Pexp_construct(Lident "::",
-                             Some(ghexp(Pexp_tuple[$1;$3])),
-                             false)) }
+      { mkexp_cons (ghexp(Pexp_tuple[$1;$3])) (symbol_rloc()) }
   | LPAREN COLONCOLON RPAREN LPAREN expr COMMA expr RPAREN
-      { mkexp(Pexp_construct(Lident "::",
-                             Some(ghexp(Pexp_tuple[$5;$7])),
-                             false)) }
+      { mkexp_cons (ghexp(Pexp_tuple[$5;$7])) (symbol_rloc()) }
   | expr INFIXOP0 expr
       { mkinfix $1 $2 $3 }
   | expr INFIXOP1 expr
@@ -1016,7 +1036,7 @@ expr:
   | additive expr %prec prec_unary_plus
       { mkuplus $1 $2 }
   | simple_expr DOT label_longident LESSMINUS expr
-      { mkexp(Pexp_setfield($1, $3, $5)) }
+      { mkexp(Pexp_setfield($1, mkrhs $3 3, $5)) }
   | simple_expr DOT LPAREN seq_expr RPAREN LESSMINUS expr
       { mkexp(Pexp_apply(ghexp(Pexp_ident(array_function "Array" "set")),
                          ["",$1; "",$4; "",$7])) }
@@ -1026,7 +1046,7 @@ expr:
   | simple_expr DOT LBRACE expr RBRACE LESSMINUS expr
       { bigarray_set $1 $4 $7 }
   | label LESSMINUS expr
-      { mkexp(Pexp_setinstvar($1, $3)) }
+      { mkexp(Pexp_setinstvar(mkrhs $1 1, $3)) }
   | ASSERT simple_expr %prec below_SHARP
       { mkassert $2 }
   | LAZY simple_expr %prec below_SHARP
@@ -1038,11 +1058,11 @@ expr:
 ;
 simple_expr:
     val_longident
-      { mkexp(Pexp_ident $1) }
+      { mkexp(Pexp_ident (mkrhs $1 1)) }
   | constant
       { mkexp(Pexp_constant $1) }
   | constr_longident %prec prec_constant_constructor
-      { mkexp(Pexp_construct($1, None, false)) }
+      { mkexp(Pexp_construct(mkrhs $1 1, None, false)) }
   | name_tag %prec prec_constant_constructor
       { mkexp(Pexp_variant($1, None)) }
   | LPAREN seq_expr RPAREN
@@ -1052,15 +1072,15 @@ simple_expr:
   | BEGIN seq_expr END
       { reloc_exp $2 }
   | BEGIN END
-      { mkexp (Pexp_construct (Lident "()", None, false)) }
+      { mkexp (Pexp_construct (mkloc (Lident "()") (symbol_rloc ()), None, false)) }
   | BEGIN seq_expr error
       { unclosed "begin" 1 "end" 3 }
   | LPAREN seq_expr type_constraint RPAREN
       { let (t, t') = $3 in mkexp(Pexp_constraint($2, t, t')) }
   | simple_expr DOT label_longident
-      { mkexp(Pexp_field($1, $3)) }
+      { mkexp(Pexp_field($1, mkrhs $3 3)) }
   | mod_longident DOT LPAREN seq_expr RPAREN
-      { mkexp(Pexp_open($1, $4)) }
+      { mkexp(Pexp_open(mkrhs $1 1, $4)) }
   | mod_longident DOT LPAREN seq_expr error
       { unclosed "(" 3 ")" 5 }
   | simple_expr DOT LPAREN seq_expr RPAREN
@@ -1096,7 +1116,7 @@ simple_expr:
   | BANG simple_expr
       { mkexp(Pexp_apply(mkoperator "!" 1, ["",$2])) }
   | NEW class_longident
-      { mkexp(Pexp_new($2)) }
+      { mkexp(Pexp_new(mkrhs $2 2)) }
   | LBRACELESS field_expr_list opt_semi GREATERRBRACE
       { mkexp(Pexp_override(List.rev $2)) }
   | LBRACELESS field_expr_list opt_semi error
@@ -1136,7 +1156,7 @@ label_expr:
       { ("?" ^ $1, $2) }
 ;
 label_ident:
-    LIDENT   { ($1, mkexp(Pexp_ident(Lident $1))) }
+    LIDENT   { ($1, mkexp(Pexp_ident(mkrhs (Lident $1) 1))) }
 ;
 let_bindings:
     let_binding                                 { [$1] }
@@ -1197,19 +1217,19 @@ record_expr:
 ;
 lbl_expr_list:
     label_longident EQUAL expr
-      { [$1,$3] }
+      { [mkrhs $1 1,$3] }
   | label_longident
-      { [$1, exp_of_label $1] }
+      { [mkrhs $1 1, exp_of_label $1 1] }
   | lbl_expr_list SEMI label_longident EQUAL expr
-      { ($3, $5) :: $1 }
+      { (mkrhs $3 3, $5) :: $1 }
   | lbl_expr_list SEMI label_longident
-      { ($3, exp_of_label $3) :: $1 }
+      { (mkrhs $3 3, exp_of_label $3 3) :: $1 }
 ;
 field_expr_list:
     label EQUAL expr
-      { [$1,$3] }
+      { [mkrhs $1 1,$3] }
   | field_expr_list SEMI label EQUAL expr
-      { ($3, $5) :: $1 }
+      { (mkrhs $3 3, $5) :: $1 }
 ;
 expr_semi_list:
     expr                                        { [$1] }
@@ -1229,19 +1249,17 @@ pattern:
     simple_pattern
       { $1 }
   | pattern AS val_ident
-      { mkpat(Ppat_alias($1, $3)) }
+      { mkpat(Ppat_alias($1, mkrhs $3 3)) }
   | pattern_comma_list  %prec below_COMMA
       { mkpat(Ppat_tuple(List.rev $1)) }
   | constr_longident pattern %prec prec_constr_appl
-      { mkpat(Ppat_construct($1, Some $2, false)) }
+      { mkpat(Ppat_construct(mkrhs $1 1, Some $2, false)) }
   | name_tag pattern %prec prec_constr_appl
       { mkpat(Ppat_variant($1, Some $2)) }
   | pattern COLONCOLON pattern
-      { mkpat(Ppat_construct(Lident "::", Some(ghpat(Ppat_tuple[$1;$3])),
-                             false)) }
+      { mkpat_cons (ghpat(Ppat_tuple[$1;$3])) (symbol_rloc()) },
   | LPAREN COLONCOLON RPAREN LPAREN pattern COMMA pattern RPAREN
-      { mkpat(Ppat_construct(Lident "::", Some(ghpat(Ppat_tuple[$5;$7])),
-                             false)) }
+      { mkpat_cons (ghpat(Ppat_tuple[$5;$7])) (symbol_rloc()) }
   | pattern BAR pattern
       { mkpat(Ppat_or($1, $3)) }
   | LAZY simple_pattern
@@ -1249,7 +1267,7 @@ pattern:
 ;
 simple_pattern:
     val_ident %prec below_EQUAL
-      { mkpat(Ppat_var $1) }
+      { mkpat(Ppat_var (mkrhs $1 1)) }
   | UNDERSCORE
       { mkpat(Ppat_any) }
   | signed_constant
@@ -1257,11 +1275,11 @@ simple_pattern:
   | CHAR DOTDOT CHAR
       { mkrangepat $1 $3 }
   | constr_longident
-      { mkpat(Ppat_construct($1, None, false)) }
+      { mkpat(Ppat_construct(mkrhs $1 1, None, false)) }
   | name_tag
       { mkpat(Ppat_variant($1, None)) }
   | SHARP type_longident
-      { mkpat(Ppat_type $2) }
+      { mkpat(Ppat_type (mkrhs $2 2)) }
   | LBRACE lbl_pattern_list record_pattern_end RBRACE
       { mkpat(Ppat_record(List.rev $2, $3)) }
   | LBRACE lbl_pattern_list opt_semi error
@@ -1285,9 +1303,9 @@ simple_pattern:
   | LPAREN pattern COLON core_type error
       { unclosed "(" 1 ")" 5 }
   | LPAREN MODULE UIDENT RPAREN
-      { mkpat(Ppat_unpack $3) }
+      { mkpat(Ppat_unpack (mkrhs $3 3)) }
   | LPAREN MODULE UIDENT COLON package_type RPAREN
-      { mkpat(Ppat_constraint(mkpat(Ppat_unpack $3),ghtyp(Ptyp_package $5))) }
+      { mkpat(Ppat_constraint(mkpat(Ppat_unpack (mkrhs $3 3)),ghtyp(Ptyp_package $5))) }
   | LPAREN MODULE UIDENT COLON package_type error
       { unclosed "(" 1 ")" 6 }
 ;
@@ -1301,10 +1319,10 @@ pattern_semi_list:
   | pattern_semi_list SEMI pattern              { $3 :: $1 }
 ;
 lbl_pattern_list:
-    label_longident EQUAL pattern               { [($1, $3)] }
-  | label_longident                             { [($1, pat_of_label $1)] }
-  | lbl_pattern_list SEMI label_longident EQUAL pattern { ($3, $5) :: $1 }
-  | lbl_pattern_list SEMI label_longident       { ($3, pat_of_label $3) :: $1 }
+    label_longident EQUAL pattern               { [(mkrhs $1 1, $3)] }
+  | label_longident                             { [(mkrhs $1 1, pat_of_label $1 1)] }
+  | lbl_pattern_list SEMI label_longident EQUAL pattern { (mkrhs $3 3, $5) :: $1 }
+  | lbl_pattern_list SEMI label_longident       { (mkrhs $3 3, pat_of_label $3 3) :: $1 }
 ;
 record_pattern_end:
     opt_semi                                    { Closed }
@@ -1329,7 +1347,7 @@ type_declaration:
     optional_type_parameters LIDENT type_kind constraints
       { let (params, variance) = List.split $1 in
         let (kind, private_flag, manifest) = $3 in
-        ($2, {ptype_params = params;
+        (mkrhs $2 2, {ptype_params = params;
               ptype_cstrs = List.rev $4;
               ptype_kind = kind;
               ptype_private = private_flag;
@@ -1367,7 +1385,7 @@ optional_type_parameters:
   | LPAREN optional_type_parameter_list RPAREN  { List.rev $2 }
 ;
 optional_type_parameter:
-    type_variance QUOTE ident                   { Some $3, $1 }
+    type_variance QUOTE ident                   { Some (mkrhs $3 3), $1 }
   | type_variance UNDERSCORE                    { None, $1 }
 ;
 optional_type_parameter_list:
@@ -1383,7 +1401,7 @@ type_parameters:
   | LPAREN type_parameter_list RPAREN           { List.rev $2 }
 ;
 type_parameter:
-    type_variance QUOTE ident                   { $3, $1 }
+    type_variance QUOTE ident                   { mkrhs $3 3, $1 }
 ;
 type_variance:
     /* empty */                                 { false, false }
@@ -1402,7 +1420,7 @@ constructor_declaration:
 
   | constr_ident generalized_constructor_arguments
       { let arg_types,ret_type = $2 in
-        ($1, arg_types,ret_type, symbol_rloc()) }
+       (mkrhs $1 1, arg_types,ret_type, symbol_rloc()) }
 ;
 
 constructor_arguments:
@@ -1425,7 +1443,7 @@ label_declarations:
   | label_declarations SEMI label_declaration   { $3 :: $1 }
 ;
 label_declaration:
-    mutable_flag label COLON poly_type          { ($2, $1, $4, symbol_rloc()) }
+    mutable_flag label COLON poly_type          { (mkrhs $2 2, $1, $4, symbol_rloc()) }
 ;
 
 /* "with" constraints (additional type equations over signature components) */
@@ -1437,7 +1455,7 @@ with_constraints:
 with_constraint:
     TYPE type_parameters label_longident with_type_binder core_type constraints
       { let params, variance = List.split $2 in
-        ($3, Pwith_type {ptype_params = List.map (fun x -> Some x) params;
+        (mkrhs $3 3,  Pwith_type {ptype_params = List.map (fun x -> Some x) params;
                          ptype_cstrs = List.rev $6;
                          ptype_kind = Ptype_abstract;
                          ptype_manifest = Some $5;
@@ -1448,7 +1466,7 @@ with_constraint:
        functor applications in type path */
   | TYPE type_parameters label_longident COLONEQUAL core_type
       { let params, variance = List.split $2 in
-        ($3, Pwith_typesubst {ptype_params = List.map (fun x -> Some x) params;
+        (mkrhs $3 3, Pwith_typesubst {ptype_params = List.map (fun x -> Some x) params;
                               ptype_cstrs = [];
                               ptype_kind = Ptype_abstract;
                               ptype_manifest = Some $5;
@@ -1456,9 +1474,9 @@ with_constraint:
                               ptype_variance = variance;
                               ptype_loc = symbol_rloc()}) }
   | MODULE mod_longident EQUAL mod_ext_longident
-      { ($2, Pwith_module $4) }
+      { (mkrhs $2 2, Pwith_module (mkrhs $4 4)) }
   | MODULE mod_longident COLONEQUAL mod_ext_longident
-      { ($2, Pwith_modsubst $4) }
+      { (mkrhs $2 2, Pwith_modsubst (mkrhs $4 4)) }
 ;
 with_type_binder:
     EQUAL          { Public }
@@ -1490,13 +1508,9 @@ core_type2:
     simple_core_type_or_tuple
       { $1 }
   | QUESTION LIDENT COLON core_type2 MINUSGREATER core_type2
-      { mktyp(Ptyp_arrow("?" ^ $2 ,
-               {ptyp_desc = Ptyp_constr(Ldot (Lident "*predef*", "option"), [$4]);
-                ptyp_loc = $4.ptyp_loc}, $6)) }
+      { mktyp(Ptyp_arrow("?" ^ $2 , mkoption $4, $6)) }
   | OPTLABEL core_type2 MINUSGREATER core_type2
-      { mktyp(Ptyp_arrow("?" ^ $1 ,
-               {ptyp_desc = Ptyp_constr(Ldot (Lident "*predef*", "option"), [$2]);
-                ptyp_loc = $2.ptyp_loc}, $4)) }
+      { mktyp(Ptyp_arrow("?" ^ $1 , mkoption $2, $4)) }
   | LIDENT COLON core_type2 MINUSGREATER core_type2
       { mktyp(Ptyp_arrow($1, $3, $5)) }
   | core_type2 MINUSGREATER core_type2
@@ -1515,21 +1529,21 @@ simple_core_type2:
   | UNDERSCORE
       { mktyp(Ptyp_any) }
   | type_longident
-      { mktyp(Ptyp_constr($1, [])) }
+      { mktyp(Ptyp_constr(mkrhs $1 1, [])) }
   | simple_core_type2 type_longident
-      { mktyp(Ptyp_constr($2, [$1])) }
+      { mktyp(Ptyp_constr(mkrhs $2 2, [$1])) }
   | LPAREN core_type_comma_list RPAREN type_longident
-      { mktyp(Ptyp_constr($4, List.rev $2)) }
+      { mktyp(Ptyp_constr(mkrhs $4 4, List.rev $2)) }
   | LESS meth_list GREATER
       { mktyp(Ptyp_object $2) }
   | LESS GREATER
       { mktyp(Ptyp_object []) }
   | SHARP class_longident opt_present
-      { mktyp(Ptyp_class($2, [], $3)) }
+      { mktyp(Ptyp_class(mkrhs $2 2, [], $3)) }
   | simple_core_type2 SHARP class_longident opt_present
-      { mktyp(Ptyp_class($3, [$1], $4)) }
+      { mktyp(Ptyp_class(mkrhs $3 3, [$1], $4)) }
   | LPAREN core_type_comma_list RPAREN SHARP class_longident opt_present
-      { mktyp(Ptyp_class($5, List.rev $2, $6)) }
+      { mktyp(Ptyp_class(mkrhs $5 5, List.rev $2, $6)) }
   | LBRACKET tag_field RBRACKET
       { mktyp(Ptyp_variant([$2], true, None)) }
 /* PR#3835: this is not LR(1), would need lookahead=2
@@ -1552,11 +1566,11 @@ simple_core_type2:
       { mktyp(Ptyp_package $3) }
 ;
 package_type:
-    mty_longident { ($1, []) }
-  | mty_longident WITH package_type_cstrs { ($1, $3) }
+    mty_longident { (mkrhs $1 1, []) }
+  | mty_longident WITH package_type_cstrs { (mkrhs $1 1, $3) }
 ;
 package_type_cstr:
-    TYPE label_longident EQUAL core_type { ($2, $4) }
+    TYPE label_longident EQUAL core_type { (mkrhs $2 2, $4) }
 ;
 package_type_cstrs:
     package_type_cstr { [$1] }
@@ -1724,6 +1738,14 @@ class_longident:
     LIDENT                                      { Lident $1 }
   | mod_longident DOT LIDENT                    { Ldot($1, $3) }
 ;
+any_longident:
+    val_ident                                   { Lident $1 }
+  | mod_ext_longident DOT val_ident             { Ldot ($1, $3) }
+  | mod_ext_longident                           { $1 }
+  | LBRACKET RBRACKET                           { Lident "[]" }
+  | LPAREN RPAREN                               { Lident "()" }
+  | FALSE                                       { Lident "false" }
+  | TRUE                                        { Lident "true" }
 
 /* Toplevel directives */
 
index 663ae7c55b5ac0f30776353625ace44e127038c0..5d7765c900180f6b0a4c88195e42ee6019b843fb 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: parsetree.mli 12511 2012-05-30 13:29:48Z lefessan $ *)
 
 (* Abstract syntax tree produced by parsing *)
 
@@ -27,15 +27,16 @@ and core_type_desc =
   | Ptyp_var of string
   | Ptyp_arrow of label * core_type * core_type
   | Ptyp_tuple of core_type list
-  | Ptyp_constr of Longident.t * core_type list
+  | Ptyp_constr of Longident.t loc * core_type list
   | Ptyp_object of core_field_type list
-  | Ptyp_class of Longident.t * core_type list * label list
+  | Ptyp_class of Longident.t loc * core_type list * label list
   | Ptyp_alias of core_type * string
   | Ptyp_variant of row_field list * bool * label list option
   | Ptyp_poly of string list * core_type
   | Ptyp_package of package_type
 
-and package_type = Longident.t * (Longident.t * core_type) list
+
+and package_type = Longident.t loc * (Longident.t loc * core_type) list
 
 and core_field_type =
   { pfield_desc: core_field_desc;
@@ -53,8 +54,8 @@ and row_field =
 
 type 'a class_infos =
   { pci_virt: virtual_flag;
-    pci_params: string list * Location.t;
-    pci_name: string;
+    pci_params: string loc list * Location.t;
+    pci_name: string loc;
     pci_expr: 'a;
     pci_variance: (bool * bool) list;
     pci_loc: Location.t }
@@ -67,26 +68,26 @@ type pattern =
 
 and pattern_desc =
     Ppat_any
-  | Ppat_var of string
-  | Ppat_alias of pattern * string
+  | Ppat_var of string loc
+  | Ppat_alias of pattern * string loc
   | Ppat_constant of constant
   | Ppat_tuple of pattern list
-  | Ppat_construct of Longident.t * pattern option * bool
+  | Ppat_construct of Longident.t loc * pattern option * bool
   | Ppat_variant of label * pattern option
-  | Ppat_record of (Longident.t * pattern) list * closed_flag
+  | Ppat_record of (Longident.t loc * pattern) list * closed_flag
   | Ppat_array of pattern list
   | Ppat_or of pattern * pattern
   | Ppat_constraint of pattern * core_type
-  | Ppat_type of Longident.t
+  | Ppat_type of Longident.t loc
   | Ppat_lazy of pattern
-  | Ppat_unpack of string
+  | Ppat_unpack of string loc
 
 type expression =
   { pexp_desc: expression_desc;
     pexp_loc: Location.t }
 
 and expression_desc =
-    Pexp_ident of Longident.t
+    Pexp_ident of Longident.t loc
   | Pexp_constant of constant
   | Pexp_let of rec_flag * (pattern * expression) list * expression
   | Pexp_function of label * expression option * (pattern * expression) list
@@ -94,23 +95,23 @@ and expression_desc =
   | Pexp_match of expression * (pattern * expression) list
   | Pexp_try of expression * (pattern * expression) list
   | Pexp_tuple of expression list
-  | Pexp_construct of Longident.t * expression option * bool
+  | Pexp_construct of Longident.t loc * expression option * bool
   | Pexp_variant of label * expression option
-  | Pexp_record of (Longident.t * expression) list * expression option
-  | Pexp_field of expression * Longident.t
-  | Pexp_setfield of expression * Longident.t * expression
+  | Pexp_record of (Longident.t loc * expression) list * expression option
+  | Pexp_field of expression * Longident.t loc
+  | Pexp_setfield of expression * Longident.t loc * expression
   | Pexp_array of expression list
   | Pexp_ifthenelse of expression * expression * expression option
   | Pexp_sequence of expression * expression
   | Pexp_while of expression * expression
-  | Pexp_for of string * expression * expression * direction_flag * expression
+  | Pexp_for of string loc *  expression * expression * direction_flag * expression
   | Pexp_constraint of expression * core_type option * core_type option
   | Pexp_when of expression * expression
   | Pexp_send of expression * string
-  | Pexp_new of Longident.t
-  | Pexp_setinstvar of string * expression
-  | Pexp_override of (string * expression) list
-  | Pexp_letmodule of string * module_expr * expression
+  | Pexp_new of Longident.t loc
+  | Pexp_setinstvar of string loc * expression
+  | Pexp_override of (string loc * expression) list
+  | Pexp_letmodule of string loc * module_expr * expression
   | Pexp_assert of expression
   | Pexp_assertfalse
   | Pexp_lazy of expression
@@ -118,18 +119,20 @@ and expression_desc =
   | Pexp_object of class_structure
   | Pexp_newtype of string * expression
   | Pexp_pack of module_expr
-  | Pexp_open of Longident.t * expression
+  | Pexp_open of Longident.t loc * expression
 
 (* Value descriptions *)
 
 and value_description =
   { pval_type: core_type;
-    pval_prim: string list }
+    pval_prim: string list;
+    pval_loc : Location.t
+    }
 
 (* Type declarations *)
 
 and type_declaration =
-  { ptype_params: string option list;
+  { ptype_params: string loc option list;
     ptype_cstrs: (core_type * core_type * Location.t) list;
     ptype_kind: type_kind;
     ptype_private: private_flag;
@@ -140,9 +143,9 @@ and type_declaration =
 and type_kind =
     Ptype_abstract
   | Ptype_variant of
-      (string * core_type list * core_type option * Location.t) list
+      (string loc * core_type list * core_type option * Location.t) list
   | Ptype_record of
-      (string * mutable_flag * core_type * Location.t) list
+      (string loc * mutable_flag * core_type * Location.t) list
 
 and exception_declaration = core_type list
 
@@ -153,18 +156,27 @@ and class_type =
     pcty_loc: Location.t }
 
 and class_type_desc =
-    Pcty_constr of Longident.t * core_type list
+    Pcty_constr of Longident.t loc * core_type list
   | Pcty_signature of class_signature
   | Pcty_fun of label * core_type * class_type
 
-and class_signature = core_type * class_type_field list
+and class_signature = {
+    pcsig_self : core_type;
+    pcsig_fields : class_type_field list;
+    pcsig_loc : Location.t;
+  }
+
+and class_type_field = {
+    pctf_desc : class_type_field_desc;
+    pctf_loc : Location.t;
+  }
 
-and class_type_field =
+and class_type_field_desc =
     Pctf_inher of class_type
-  | Pctf_val of (string * mutable_flag * virtual_flag * core_type * Location.t)
-  | Pctf_virt  of (string * private_flag * core_type * Location.t)
-  | Pctf_meth  of (string * private_flag * core_type * Location.t)
-  | Pctf_cstr  of (core_type * core_type * Location.t)
+  | Pctf_val of (string * mutable_flag * virtual_flag * core_type)
+  | Pctf_virt  of (string * private_flag * core_type)
+  | Pctf_meth  of (string * private_flag * core_type)
+  | Pctf_cstr  of (core_type * core_type)
 
 and class_description = class_type class_infos
 
@@ -177,25 +189,31 @@ and class_expr =
     pcl_loc: Location.t }
 
 and class_expr_desc =
-    Pcl_constr of Longident.t * core_type list
+    Pcl_constr of Longident.t loc * core_type list
   | Pcl_structure of class_structure
   | Pcl_fun of label * expression option * pattern * class_expr
   | Pcl_apply of class_expr * (label * expression) list
   | Pcl_let of rec_flag * (pattern * expression) list * class_expr
   | Pcl_constraint of class_expr * class_type
 
-and class_structure = pattern * class_field list
+and class_structure = {
+    pcstr_pat : pattern;
+    pcstr_fields :  class_field list;
+  }
+
+and class_field = {
+    pcf_desc : class_field_desc;
+    pcf_loc : Location.t;
+  }
 
-and class_field =
+and class_field_desc =
     Pcf_inher of override_flag * class_expr * string option
-  | Pcf_valvirt of (string * mutable_flag * core_type * Location.t)
-  | Pcf_val of
-      (string * mutable_flag * override_flag * expression * Location.t)
-  | Pcf_virt of (string * private_flag * core_type * Location.t)
-  | Pcf_meth of
-      (string * private_flag * override_flag * expression * Location.t)
-  | Pcf_cstr of (core_type * core_type * Location.t)
-  | Pcf_init of expression
+  | Pcf_valvirt of (string loc * mutable_flag * core_type)
+  | Pcf_val of (string loc * mutable_flag * override_flag * expression)
+  | Pcf_virt  of (string loc * private_flag * core_type)
+  | Pcf_meth of (string loc * private_flag *override_flag * expression)
+  | Pcf_constr  of (core_type * core_type)
+  | Pcf_init  of expression
 
 and class_declaration = class_expr class_infos
 
@@ -206,10 +224,10 @@ and module_type =
     pmty_loc: Location.t }
 
 and module_type_desc =
-    Pmty_ident of Longident.t
+    Pmty_ident of Longident.t loc
   | Pmty_signature of signature
-  | Pmty_functor of string * module_type * module_type
-  | Pmty_with of module_type * (Longident.t * with_constraint) list
+  | Pmty_functor of string loc * module_type * module_type
+  | Pmty_with of module_type * (Longident.t loc * with_constraint) list
   | Pmty_typeof of module_expr
 
 and signature = signature_item list
@@ -219,13 +237,13 @@ and signature_item =
     psig_loc: Location.t }
 
 and signature_item_desc =
-    Psig_value of string * value_description
-  | Psig_type of (string * type_declaration) list
-  | Psig_exception of string * exception_declaration
-  | Psig_module of string * module_type
-  | Psig_recmodule of (string * module_type) list
-  | Psig_modtype of string * modtype_declaration
-  | Psig_open of Longident.t
+    Psig_value of string loc * value_description
+  | Psig_type of (string loc * type_declaration) list
+  | Psig_exception of string loc * exception_declaration
+  | Psig_module of string loc * module_type
+  | Psig_recmodule of (string loc * module_type) list
+  | Psig_modtype of string loc * modtype_declaration
+  | Psig_open of Longident.t loc
   | Psig_include of module_type
   | Psig_class of class_description list
   | Psig_class_type of class_type_declaration list
@@ -236,9 +254,9 @@ and modtype_declaration =
 
 and with_constraint =
     Pwith_type of type_declaration
-  | Pwith_module of Longident.t
+  | Pwith_module of Longident.t loc
   | Pwith_typesubst of type_declaration
-  | Pwith_modsubst of Longident.t
+  | Pwith_modsubst of Longident.t loc
 
 (* Value expressions for the module language *)
 
@@ -247,9 +265,9 @@ and module_expr =
     pmod_loc: Location.t }
 
 and module_expr_desc =
-    Pmod_ident of Longident.t
+    Pmod_ident of Longident.t loc
   | Pmod_structure of structure
-  | Pmod_functor of string * module_type * module_expr
+  | Pmod_functor of string loc * module_type * module_expr
   | Pmod_apply of module_expr * module_expr
   | Pmod_constraint of module_expr * module_type
   | Pmod_unpack of expression
@@ -263,14 +281,14 @@ and structure_item =
 and structure_item_desc =
     Pstr_eval of expression
   | Pstr_value of rec_flag * (pattern * expression) list
-  | Pstr_primitive of string * value_description
-  | Pstr_type of (string * type_declaration) list
-  | Pstr_exception of string * exception_declaration
-  | Pstr_exn_rebind of string * Longident.t
-  | Pstr_module of string * module_expr
-  | Pstr_recmodule of (string * module_type * module_expr) list
-  | Pstr_modtype of string * module_type
-  | Pstr_open of Longident.t
+  | Pstr_primitive of string loc * value_description
+  | Pstr_type of (string loc * type_declaration) list
+  | Pstr_exception of string loc * exception_declaration
+  | Pstr_exn_rebind of string loc * Longident.t loc
+  | Pstr_module of string loc * module_expr
+  | Pstr_recmodule of (string loc * module_type * module_expr) list
+  | Pstr_modtype of string loc * module_type
+  | Pstr_open of Longident.t loc
   | Pstr_class of class_declaration list
   | Pstr_class_type of class_type_declaration list
   | Pstr_include of module_expr
index d5b99331138772a258e10cf4bb69d5616500b5e2..dea08e3bf158aeafdc8b20237cb14683c95130b3 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: printast.ml 12511 2012-05-30 13:29:48Z lefessan $ *)
 
 open Asttypes;;
 open Format;;
@@ -38,7 +38,8 @@ let rec fmt_longident_aux f x =
       fprintf f "%a(%a)" fmt_longident_aux y fmt_longident_aux z;
 ;;
 
-let fmt_longident f x = fprintf f "\"%a\"" fmt_longident_aux x;;
+let fmt_longident_noloc f x = fprintf f "\"%a\"" fmt_longident_aux x;;
+let fmt_longident f x = fprintf f "\"%a\"" fmt_longident_aux x.txt;;
 
 let fmt_constant f x =
   match x with
@@ -112,6 +113,7 @@ let option i f ppf x =
 
 let longident i ppf li = line i ppf "%a\n" fmt_longident li;;
 let string i ppf s = line i ppf "\"%s\"\n" s;;
+let string_loc i ppf s = line i ppf "\"%s\"\n" s.txt;;
 let bool i ppf x = line i ppf "%s\n" (string_of_bool x);;
 let label i ppf x = line i ppf "label=\"%s\"\n" x;;
 
@@ -172,9 +174,9 @@ and pattern i ppf x =
   let i = i+1 in
   match x.ppat_desc with
   | Ppat_any -> line i ppf "Ppat_any\n";
-  | Ppat_var (s) -> line i ppf "Ppat_var \"%s\"\n" s;
+  | Ppat_var (s) -> line i ppf "Ppat_var \"%s\"\n" s.txt;
   | Ppat_alias (p, s) ->
-      line i ppf "Ppat_alias \"%s\"\n" s;
+      line i ppf "Ppat_alias \"%s\"\n" s.txt;
       pattern i ppf p;
   | Ppat_constant (c) -> line i ppf "Ppat_constant %a\n" fmt_constant c;
   | Ppat_tuple (l) ->
@@ -204,11 +206,11 @@ and pattern i ppf x =
       line i ppf "Ppat_constraint";
       pattern i ppf p;
       core_type i ppf ct;
-  | Ppat_type li ->
+  | Ppat_type (li) ->
       line i ppf "Ppat_type";
       longident i ppf li
   | Ppat_unpack s ->
-      line i ppf "Ppat_unpack \"%s\"\n" s;
+      line i ppf "Ppat_unpack \"%s\"\n" s.txt;
 
 and expression i ppf x =
   line i ppf "expression %a\n" fmt_location x.pexp_loc;
@@ -276,7 +278,7 @@ and expression i ppf x =
       expression i ppf e1;
       expression i ppf e2;
   | Pexp_for (s, e1, e2, df, e3) ->
-      line i ppf "Pexp_for \"%s\" %a\n" s fmt_direction_flag df;
+      line i ppf "Pexp_for \"%s\" %a\n" s.txt fmt_direction_flag df;
       expression i ppf e1;
       expression i ppf e2;
       expression i ppf e3;
@@ -294,13 +296,13 @@ and expression i ppf x =
       expression i ppf e;
   | Pexp_new (li) -> line i ppf "Pexp_new %a\n" fmt_longident li;
   | Pexp_setinstvar (s, e) ->
-      line i ppf "Pexp_setinstvar \"%s\"\n" s;
+      line i ppf "Pexp_setinstvar \"%s\"\n" s.txt;
       expression i ppf e;
   | Pexp_override (l) ->
       line i ppf "Pexp_override\n";
       list i string_x_expression ppf l;
   | Pexp_letmodule (s, me, e) ->
-      line i ppf "Pexp_letmodule \"%s\"\n" s;
+      line i ppf "Pexp_letmodule \"%s\"\n" s.txt;
       module_expr i ppf me;
       expression i ppf e;
   | Pexp_assert (e) ->
@@ -333,10 +335,10 @@ and value_description i ppf x =
   core_type (i+1) ppf x.pval_type;
   list (i+1) string ppf x.pval_prim;
 
-and string_option_underscore i ppf = 
+and string_option_underscore i ppf =
   function
     | Some x ->
-       string i ppf x
+       string i ppf x.txt
     | None ->
        string i ppf "_"
 
@@ -381,30 +383,31 @@ and class_type i ppf x =
       core_type i ppf co;
       class_type i ppf cl;
 
-and class_signature i ppf (ct, l) =
+and class_signature i ppf { pcsig_self = ct; pcsig_fields = l } =
   line i ppf "class_signature\n";
   core_type (i+1) ppf ct;
   list (i+1) class_type_field ppf l;
 
 and class_type_field i ppf x =
-  match x with
+  let loc = x.pctf_loc in
+  match x.pctf_desc with
   | Pctf_inher (ct) ->
       line i ppf "Pctf_inher\n";
       class_type i ppf ct;
-  | Pctf_val (s, mf, vf, ct, loc) ->
+  | Pctf_val (s, mf, vf, ct) ->
       line i ppf
         "Pctf_val \"%s\" %a %a %a\n" s
         fmt_mutable_flag mf fmt_virtual_flag vf fmt_location loc;
       core_type (i+1) ppf ct;
-  | Pctf_virt (s, pf, ct, loc) ->
+  | Pctf_virt (s, pf, ct) ->
       line i ppf
         "Pctf_virt \"%s\" %a %a\n" s fmt_private_flag pf fmt_location loc;
       core_type (i+1) ppf ct;
-  | Pctf_meth (s, pf, ct, loc) ->
+  | Pctf_meth (s, pf, ct) ->
       line i ppf
         "Pctf_meth \"%s\" %a %a\n" s fmt_private_flag pf fmt_location loc;
       core_type (i+1) ppf ct;
-  | Pctf_cstr (ct1, ct2, loc) ->
+  | Pctf_cstr (ct1, ct2) ->
       line i ppf "Pctf_cstr %a\n" fmt_location loc;
       core_type i ppf ct1;
       core_type i ppf ct2;
@@ -415,7 +418,7 @@ and class_description i ppf x =
   line i ppf "pci_virt = %a\n" fmt_virtual_flag x.pci_virt;
   line i ppf "pci_params =\n";
   string_list_x_location (i+1) ppf x.pci_params;
-  line i ppf "pci_name = \"%s\"\n" x.pci_name;
+  line i ppf "pci_name = \"%s\"\n" x.pci_name.txt;
   line i ppf "pci_expr =\n";
   class_type (i+1) ppf x.pci_expr;
 
@@ -425,7 +428,7 @@ and class_type_declaration i ppf x =
   line i ppf "pci_virt = %a\n" fmt_virtual_flag x.pci_virt;
   line i ppf "pci_params =\n";
   string_list_x_location (i+1) ppf x.pci_params;
-  line i ppf "pci_name = \"%s\"\n" x.pci_name;
+  line i ppf "pci_name = \"%s\"\n" x.pci_name.txt;
   line i ppf "pci_expr =\n";
   class_type (i+1) ppf x.pci_expr;
 
@@ -458,35 +461,36 @@ and class_expr i ppf x =
       class_expr i ppf ce;
       class_type i ppf ct;
 
-and class_structure i ppf (p, l) =
+and class_structure i ppf { pcstr_pat = p; pcstr_fields = l } =
   line i ppf "class_structure\n";
   pattern (i+1) ppf p;
   list (i+1) class_field ppf l;
 
 and class_field i ppf x =
-  match x with
+  let loc = x.pcf_loc in
+  match x.pcf_desc with
   | Pcf_inher (ovf, ce, so) ->
       line i ppf "Pcf_inher %a\n" fmt_override_flag ovf;
       class_expr (i+1) ppf ce;
       option (i+1) string ppf so;
-  | Pcf_valvirt (s, mf, ct, loc) ->
+  | Pcf_valvirt (s, mf, ct) ->
       line i ppf "Pcf_valvirt \"%s\" %a %a\n"
-        s fmt_mutable_flag mf fmt_location loc;
+        s.txt fmt_mutable_flag mf fmt_location loc;
       core_type (i+1) ppf ct;
-  | Pcf_val (s, mf, ovf, e, loc) ->
+  | Pcf_val (s, mf, ovf, e) ->
       line i ppf "Pcf_val \"%s\" %a %a %a\n"
-        s fmt_mutable_flag mf fmt_override_flag ovf fmt_location loc;
+        s.txt fmt_mutable_flag mf fmt_override_flag ovf fmt_location loc;
       expression (i+1) ppf e;
-  | Pcf_virt (s, pf, ct, loc) ->
+  | Pcf_virt (s, pf, ct) ->
       line i ppf "Pcf_virt \"%s\" %a %a\n"
-        s fmt_private_flag pf fmt_location loc;
+        s.txt fmt_private_flag pf fmt_location loc;
       core_type (i+1) ppf ct;
-  | Pcf_meth (s, pf, ovf, e, loc) ->
+  | Pcf_meth (s, pf, ovf, e) ->
       line i ppf "Pcf_meth \"%s\" %a %a %a\n"
-        s fmt_private_flag pf fmt_override_flag ovf fmt_location loc;
+        s.txt fmt_private_flag pf fmt_override_flag ovf fmt_location loc;
       expression (i+1) ppf e;
-  | Pcf_cstr (ct1, ct2, loc) ->
-      line i ppf "Pcf_cstr %a\n" fmt_location loc;
+  | Pcf_constr (ct1, ct2) ->
+      line i ppf "Pcf_constr %a\n" fmt_location loc;
       core_type (i+1) ppf ct1;
       core_type (i+1) ppf ct2;
   | Pcf_init (e) ->
@@ -499,7 +503,7 @@ and class_declaration i ppf x =
   line i ppf "pci_virt = %a\n" fmt_virtual_flag x.pci_virt;
   line i ppf "pci_params =\n";
   string_list_x_location (i+1) ppf x.pci_params;
-  line i ppf "pci_name = \"%s\"\n" x.pci_name;
+  line i ppf "pci_name = \"%s\"\n" x.pci_name.txt;
   line i ppf "pci_expr =\n";
   class_expr (i+1) ppf x.pci_expr;
 
@@ -507,12 +511,12 @@ and module_type i ppf x =
   line i ppf "module_type %a\n" fmt_location x.pmty_loc;
   let i = i+1 in
   match x.pmty_desc with
-  | Pmty_ident (li) -> line i ppf "Pmty_ident %a\n" fmt_longident li;
+  | Pmty_ident li -> line i ppf "Pmty_ident %a\n" fmt_longident li;
   | Pmty_signature (s) ->
       line i ppf "Pmty_signature\n";
       signature i ppf s;
   | Pmty_functor (s, mt1, mt2) ->
-      line i ppf "Pmty_functor \"%s\"\n" s;
+      line i ppf "Pmty_functor \"%s\"\n" s.txt;
       module_type i ppf mt1;
       module_type i ppf mt2;
   | Pmty_with (mt, l) ->
@@ -530,24 +534,24 @@ and signature_item i ppf x =
   let i = i+1 in
   match x.psig_desc with
   | Psig_value (s, vd) ->
-      line i ppf "Psig_value \"%s\"\n" s;
+      line i ppf "Psig_value \"%s\"\n" s.txt;
       value_description i ppf vd;
   | Psig_type (l) ->
       line i ppf "Psig_type\n";
       list i string_x_type_declaration ppf l;
   | Psig_exception (s, ed) ->
-      line i ppf "Psig_exception \"%s\"\n" s;
+      line i ppf "Psig_exception \"%s\"\n" s.txt;
       exception_declaration i ppf ed;
   | Psig_module (s, mt) ->
-      line i ppf "Psig_module \"%s\"\n" s;
+      line i ppf "Psig_module \"%s\"\n" s.txt;
       module_type i ppf mt;
   | Psig_recmodule decls ->
       line i ppf "Psig_recmodule\n";
       list i string_x_module_type ppf decls;
   | Psig_modtype (s, md) ->
-      line i ppf "Psig_modtype \"%s\"\n" s;
+      line i ppf "Psig_modtype \"%s\"\n" s.txt;
       modtype_declaration i ppf md;
-  | Psig_open (li) -> line i ppf "Psig_open %a\n" fmt_longident li;
+  | Psig_open li -> line i ppf "Psig_open %a\n" fmt_longident li;
   | Psig_include (mt) ->
       line i ppf "Psig_include\n";
       module_type i ppf mt;
@@ -573,8 +577,8 @@ and with_constraint i ppf x =
   | Pwith_typesubst (td) ->
       line i ppf "Pwith_typesubst\n";
       type_declaration (i+1) ppf td;
-  | Pwith_module (li) -> line i ppf "Pwith_module %a\n" fmt_longident li;
-  | Pwith_modsubst (li) -> line i ppf "Pwith_modsubst %a\n" fmt_longident li;
+  | Pwith_module li -> line i ppf "Pwith_module %a\n" fmt_longident li;
+  | Pwith_modsubst li -> line i ppf "Pwith_modsubst %a\n" fmt_longident li;
 
 and module_expr i ppf x =
   line i ppf "module_expr %a\n" fmt_location x.pmod_loc;
@@ -585,7 +589,7 @@ and module_expr i ppf x =
       line i ppf "Pmod_structure\n";
       structure i ppf s;
   | Pmod_functor (s, mt, me) ->
-      line i ppf "Pmod_functor \"%s\"\n" s;
+      line i ppf "Pmod_functor \"%s\"\n" s.txt;
       module_type i ppf mt;
       module_expr i ppf me;
   | Pmod_apply (me1, me2) ->
@@ -613,26 +617,26 @@ and structure_item i ppf x =
       line i ppf "Pstr_value %a\n" fmt_rec_flag rf;
       list i pattern_x_expression_def ppf l;
   | Pstr_primitive (s, vd) ->
-      line i ppf "Pstr_primitive \"%s\"\n" s;
+      line i ppf "Pstr_primitive \"%s\"\n" s.txt;
       value_description i ppf vd;
-  | Pstr_type (l) ->
+  | Pstr_type l ->
       line i ppf "Pstr_type\n";
       list i string_x_type_declaration ppf l;
   | Pstr_exception (s, ed) ->
-      line i ppf "Pstr_exception \"%s\"\n" s;
+      line i ppf "Pstr_exception \"%s\"\n" s.txt;
       exception_declaration i ppf ed;
   | Pstr_exn_rebind (s, li) ->
-      line i ppf "Pstr_exn_rebind \"%s\" %a\n" s fmt_longident li;
+      line i ppf "Pstr_exn_rebind \"%s\" %a\n" s.txt fmt_longident li;
   | Pstr_module (s, me) ->
-      line i ppf "Pstr_module \"%s\"\n" s;
+      line i ppf "Pstr_module \"%s\"\n" s.txt;
       module_expr i ppf me;
   | Pstr_recmodule bindings ->
       line i ppf "Pstr_recmodule\n";
       list i string_x_modtype_x_module ppf bindings;
   | Pstr_modtype (s, mt) ->
-      line i ppf "Pstr_modtype \"%s\"\n" s;
+      line i ppf "Pstr_modtype \"%s\"\n" s.txt;
       module_type i ppf mt;
-  | Pstr_open (li) -> line i ppf "Pstr_open %a\n" fmt_longident li;
+  | Pstr_open li -> line i ppf "Pstr_open %a\n" fmt_longident li;
   | Pstr_class (l) ->
       line i ppf "Pstr_class\n";
       list i class_declaration ppf l;
@@ -644,15 +648,15 @@ and structure_item i ppf x =
       module_expr i ppf me
 
 and string_x_type_declaration i ppf (s, td) =
-  string i ppf s;
+  string i ppf s.txt;
   type_declaration (i+1) ppf td;
 
 and string_x_module_type i ppf (s, mty) =
-  string i ppf s;
+  string i ppf s.txt;
   module_type (i+1) ppf mty;
 
 and string_x_modtype_x_module i ppf (s, mty, modl) =
-  string i ppf s;
+  string i ppf s.txt;
   module_type (i+1) ppf mty;
   module_expr (i+1) ppf modl;
 
@@ -665,18 +669,18 @@ and core_type_x_core_type_x_location i ppf (ct1, ct2, l) =
   core_type (i+1) ppf ct1;
   core_type (i+1) ppf ct2;
 
-and string_x_core_type_list_x_location i ppf (s, l, r_opt, loc) = 
-  line i ppf "\"%s\" %a\n" s fmt_location loc;
+and string_x_core_type_list_x_location i ppf (s, l, r_opt, loc) =
+  line i ppf "\"%s\" %a\n" s.txt fmt_location loc;
   list (i+1) core_type ppf l;
   option (i+1) core_type ppf r_opt;
 
 and string_x_mutable_flag_x_core_type_x_location i ppf (s, mf, ct, loc) =
-  line i ppf "\"%s\" %a %a\n" s fmt_mutable_flag mf fmt_location loc;
+  line i ppf "\"%s\" %a %a\n" s.txt fmt_mutable_flag mf fmt_location loc;
   core_type (i+1) ppf ct;
 
 and string_list_x_location i ppf (l, loc) =
   line i ppf "<params> %a\n" fmt_location loc;
-  list (i+1) string ppf l;
+  list (i+1) string_loc ppf l;
 
 and longident_x_pattern i ppf (li, p) =
   line i ppf "%a\n" fmt_longident li;
@@ -693,7 +697,7 @@ and pattern_x_expression_def i ppf (p, e) =
   expression (i+1) ppf e;
 
 and string_x_expression i ppf (s, e) =
-  line i ppf "<override> \"%s\"\n" s;
+  line i ppf "<override> \"%s\"\n" s.txt;
   expression (i+1) ppf e;
 
 and longident_x_expression i ppf (li, e) =
@@ -728,7 +732,7 @@ and directive_argument i ppf x =
   | Pdir_none -> line i ppf "Pdir_none\n"
   | Pdir_string (s) -> line i ppf "Pdir_string \"%s\"\n" s;
   | Pdir_int (i) -> line i ppf "Pdir_int %d\n" i;
-  | Pdir_ident (li) -> line i ppf "Pdir_ident %a\n" fmt_longident li;
+  | Pdir_ident (li) -> line i ppf "Pdir_ident %a\n" fmt_longident_noloc li;
   | Pdir_bool (b) -> line i ppf "Pdir_bool %s\n" (string_of_bool b);
 ;;
 
index 096f461727099091095266073201fc983ce3e8ff..ebffd0b789f7d3142c310bc1f670de0cbc58367e 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: printast.mli 11156 2011-07-27 14:17:02Z doligez $ *)
 
 open Parsetree;;
 open Format;;
index f18e3281d37ffbd75d79a9a78303e8689cce8c7c..9658dee25db8c944ef5fda82bf4a79fb5f0d9c70 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: syntaxerr.ml 12256 2012-03-23 02:16:44Z garrigue $ *)
 
 (* Auxiliary type for reporting syntax errors *)
 
index c2f9eb07c5fd54a3b4e3007f1d9e943e7e6d12b3..cef0b13cc2bfbca5f9c41cef5f7fb026cece00dc 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: syntaxerr.mli 12256 2012-03-23 02:16:44Z garrigue $ *)
 
 (* Auxiliary type for reporting syntax errors *)
 
index 3fd2959bc4a5e7681800581d5db6e5b6f9f311d0..b8a837dbef86731388b66d3a5b2a697896a1b6a1 100644 (file)
@@ -70,9 +70,9 @@ complex.cmo : complex.cmi
 complex.cmx : complex.cmi
 digest.cmo : string.cmi printf.cmi char.cmi digest.cmi
 digest.cmx : string.cmx printf.cmx char.cmx digest.cmi
-filename.cmo : sys.cmi string.cmi random.cmi printf.cmi buffer.cmi \
+filename.cmo : sys.cmi string.cmi random.cmi printf.cmi lazy.cmi buffer.cmi \
     filename.cmi
-filename.cmx : sys.cmx string.cmx random.cmx printf.cmx buffer.cmx \
+filename.cmx : sys.cmx string.cmx random.cmx printf.cmx lazy.cmx buffer.cmx \
     filename.cmi
 format.cmo : string.cmi printf.cmi pervasives.cmi obj.cmi list.cmi \
     buffer.cmi format.cmi
@@ -82,8 +82,10 @@ gc.cmo : sys.cmi printf.cmi gc.cmi
 gc.cmx : sys.cmx printf.cmx gc.cmi
 genlex.cmo : string.cmi stream.cmi list.cmi hashtbl.cmi char.cmi genlex.cmi
 genlex.cmx : string.cmx stream.cmx list.cmx hashtbl.cmx char.cmx genlex.cmi
-hashtbl.cmo : sys.cmi obj.cmi array.cmi hashtbl.cmi
-hashtbl.cmx : sys.cmx obj.cmx array.cmx hashtbl.cmi
+hashtbl.cmo : sys.cmi string.cmi random.cmi obj.cmi lazy.cmi array.cmi \
+    hashtbl.cmi
+hashtbl.cmx : sys.cmx string.cmx random.cmx obj.cmx lazy.cmx array.cmx \
+    hashtbl.cmi
 int32.cmo : pervasives.cmi int32.cmi
 int32.cmx : pervasives.cmx int32.cmi
 int64.cmo : pervasives.cmi int64.cmi
@@ -178,9 +180,9 @@ complex.cmo : complex.cmi
 complex.p.cmx : complex.cmi
 digest.cmo : string.cmi printf.cmi char.cmi digest.cmi
 digest.p.cmx : string.p.cmx printf.p.cmx char.p.cmx digest.cmi
-filename.cmo : sys.cmi string.cmi random.cmi printf.cmi buffer.cmi \
+filename.cmo : sys.cmi string.cmi random.cmi printf.cmi lazy.cmi buffer.cmi \
     filename.cmi
-filename.p.cmx : sys.p.cmx string.p.cmx random.p.cmx printf.p.cmx buffer.p.cmx \
+filename.p.cmx : sys.p.cmx string.p.cmx random.p.cmx printf.p.cmx lazy.p.cmx buffer.p.cmx \
     filename.cmi
 format.cmo : string.cmi printf.cmi pervasives.cmi obj.cmi list.cmi \
     buffer.cmi format.cmi
@@ -190,8 +192,10 @@ gc.cmo : sys.cmi printf.cmi gc.cmi
 gc.p.cmx : sys.p.cmx printf.p.cmx gc.cmi
 genlex.cmo : string.cmi stream.cmi list.cmi hashtbl.cmi char.cmi genlex.cmi
 genlex.p.cmx : string.p.cmx stream.p.cmx list.p.cmx hashtbl.p.cmx char.p.cmx genlex.cmi
-hashtbl.cmo : sys.cmi obj.cmi array.cmi hashtbl.cmi
-hashtbl.p.cmx : sys.p.cmx obj.p.cmx array.p.cmx hashtbl.cmi
+hashtbl.cmo : sys.cmi string.cmi random.cmi obj.cmi lazy.cmi array.cmi \
+    hashtbl.cmi
+hashtbl.p.cmx : sys.p.cmx string.p.cmx random.p.cmx obj.p.cmx lazy.p.cmx array.p.cmx \
+    hashtbl.cmi
 int32.cmo : pervasives.cmi int32.cmi
 int32.p.cmx : pervasives.p.cmx int32.cmi
 int64.cmo : pervasives.cmi int64.cmi
index 80bb1b6673bd4be30d5d96c66f36c1da9740ba99..b12706957b786d6b550975e9cadfa932955842cc 100755 (executable)
@@ -12,7 +12,7 @@
 #                                                                       #
 #########################################################################
 
-# $Id$
+# $Id: Compflags 11240 2011-10-25 12:09:01Z weis $
 
 case $1 in
   pervasives.cm[iox]|pervasives.p.cmx) echo ' -nopervasives';;
index 2c8e067063f797ef6734c5e4893fd191efbea16b..fb4d56f295067aa2c0b9fab840fdd9af8da5719f 100644 (file)
@@ -11,7 +11,7 @@
 #                                                                       #
 #########################################################################
 
-# $Id$
+# $Id: Makefile 11156 2011-07-27 14:17:02Z doligez $
 
 include Makefile.shared
 
index 579391a7750b4a714eb9b8fc37683c2647c75ce9..1d9a666f7a9bc0ec297dbd5237dea95eb8eeebc4 100644 (file)
@@ -11,7 +11,7 @@
 #                                                                       #
 #########################################################################
 
-# $Id$
+# $Id: Makefile.nt 11156 2011-07-27 14:17:02Z doligez $
 
 include Makefile.shared
 
index 0752a1b5f13ef5b9f305c5f9ded6ee70f4009898..f09532db9d9dd5a0aebaabcfb4b895930473189d 100755 (executable)
@@ -11,7 +11,7 @@
 #                                                                       #
 #########################################################################
 
-# $Id$
+# $Id: Makefile.shared 12383 2012-04-19 13:12:23Z xleroy $
 
 include ../config/Makefile
 RUNTIME=../boot/ocamlrun
@@ -25,14 +25,14 @@ CAMLDEP=../boot/ocamlrun ../tools/ocamldep
 
 OBJS=pervasives.cmo $(OTHERS)
 OTHERS=array.cmo list.cmo char.cmo string.cmo sys.cmo \
-  hashtbl.cmo sort.cmo marshal.cmo obj.cmo \
+  sort.cmo marshal.cmo obj.cmo \
   int32.cmo int64.cmo nativeint.cmo \
   lexing.cmo parsing.cmo \
   set.cmo map.cmo stack.cmo queue.cmo \
   camlinternalLazy.cmo lazy.cmo stream.cmo \
-  buffer.cmo printf.cmo format.cmo scanf.cmo \
+  buffer.cmo printf.cmo \
   arg.cmo printexc.cmo gc.cmo \
-  digest.cmo random.cmo callback.cmo \
+  digest.cmo random.cmo hashtbl.cmo format.cmo scanf.cmo callback.cmo \
   camlinternalOO.cmo oo.cmo camlinternalMod.cmo \
   genlex.cmo weak.cmo \
   filename.cmo complex.cmo \
index 926e2cb5143356293abb2335af267ea96d297005..efeeb8badb819bccc4fa46327435e9d3206af339 100644 (file)
@@ -13,7 +13,7 @@
 #                                                                       #
 #########################################################################
 
-# $Id$
+# $Id: StdlibModules 11156 2011-07-27 14:17:02Z doligez $
 
 # This file lists all standard library modules.
 # It is used in particular to know what to expunge in toplevels.
index 8453058e4e7271a4e768548605a5c185a0a2cdad..797ad451be4e4200bfbb7da01a4e5ee8387c3c15 100644 (file)
@@ -11,7 +11,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: arg.ml 11946 2011-12-23 13:34:13Z protzenk $ *)
 
 type key = string
 type doc = string
index d6e0210aa133e50490d32b4000bd0581fdba8ad6..85dd8aaefff63790a1f0f5027bde0d9fc4c93cbb 100644 (file)
@@ -11,7 +11,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: arg.mli 11939 2011-12-22 14:04:18Z protzenk $ *)
 
 (** Parsing of command line arguments.
 
index 076a3af0310bc34d29b176949f09e84631049e9a..346dd9d5858d6c9b2f1e044db577705cf2de7723 100644 (file)
@@ -11,7 +11,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: array.ml 11914 2011-12-21 10:41:59Z xleroy $ *)
 
 (* Array operations *)
 
index db1f469d0e78ff1de106fbf5b7cd83b28012839e..5546369156b5957fe90f40e26deeb110fba8e6c7 100644 (file)
@@ -11,7 +11,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: array.mli 12241 2012-03-14 14:32:07Z doligez $ *)
 
 (** Array operations. *)
 
index 652f4cac422975cf41e75348fab09a9b9b9ed7a1..e7b42e9c5769d0d69efdcc42cb6fd9eb493bf62c 100644 (file)
@@ -11,7 +11,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: arrayLabels.ml 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (* Module [ArrayLabels]: labelled Array module *)
 
index 308bfa4e1cf07f602fc3b98567f6656acdeb0cd2..41f0b5d3aee849ffa1358f1bbe0d951b50b0d531 100644 (file)
@@ -11,7 +11,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: arrayLabels.mli 12241 2012-03-14 14:32:07Z doligez $ *)
 
 (** Array operations. *)
 
index 541717ade8947dfeba8f577ee702944d8355af1a..b2749acc35cdf9e9bc8a82dd304eff4fc316efea 100644 (file)
@@ -11,7 +11,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: buffer.ml 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (* Extensible buffers *)
 
index ce70c983e979f203453277a66b0f6f339b9f4b16..7d602c840a714d09335c8962fc99e25e4f532a55 100644 (file)
@@ -11,7 +11,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: buffer.mli 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (** Extensible string buffers.
 
index 5dd7894846c7ef4aa9070e3b9853c476c95eac15..e0af9d7cb371264afd74edf70e10e2844704ba3f 100644 (file)
@@ -11,7 +11,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: callback.ml 11922 2011-12-21 15:37:54Z doligez $ *)
 
 (* Registering OCaml values with the C runtime for later callbacks *)
 
index c536bf8d53db613309d85ba76d66990865b5750d..5cf00bb3d6781932baceaa8b409e72c25589abe6 100644 (file)
@@ -11,7 +11,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: callback.mli 12147 2012-02-10 14:45:41Z doligez $ *)
 
 (** Registering OCaml values with the C runtime.
 
index 042a377c9dab954b7283cdd83690c43760e96574..05aab527bfda8d6995717f74aa231383847a8b9a 100644 (file)
@@ -11,7 +11,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: camlinternalLazy.ml 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (* Internals of forcing lazy values. *)
 
index eef1c9d6fd9ffea8306e8d7b2ea17988f04ddb1d..fad5fcf6b0d9d276ad08ec5a98a332b0b17a25c0 100644 (file)
@@ -11,7 +11,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: camlinternalLazy.mli 12241 2012-03-14 14:32:07Z doligez $ *)
 
 (** Run-time support for lazy values.
     All functions in this module are for system use only, not for the
index 36d73bdcf240b396a9f9de9201bd569e3c0d9944..803acc2cef8853ba0a9f6f5e52fd7a8da3b957d3 100644 (file)
@@ -11,7 +11,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: camlinternalMod.ml 11156 2011-07-27 14:17:02Z doligez $ *)
 
 type shape =
   | Function
index bc59f1956459ed7d0ca1d0a8d5c05942c39001b5..bf1d50185fb999b29de86720e34282ed1a557298 100644 (file)
@@ -11,7 +11,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: camlinternalMod.mli 12241 2012-03-14 14:32:07Z doligez $ *)
 
 (** Run-time support for recursive modules.
     All functions in this module are for system use only, not for the
index 6d787146553667db458222f479f25c37c96b1882..06af13d6fee83efe52954a25f92193aa7e17ff48 100644 (file)
@@ -11,7 +11,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: camlinternalOO.ml 11930 2011-12-22 07:30:18Z garrigue $ *)
 
 open Obj
 
index f02b02036061faeddec433ca8e1f1c458ff05a0e..fc0f3fb3167510cb8a070e18f7556bc54e42cee8 100644 (file)
@@ -11,7 +11,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: camlinternalOO.mli 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (** Run-time support for objects and classes.
     All functions in this module are for system use only, not for the
index 6dafbad2b3938d941a75d1f098d600cfe88ae0fd..61a55faef72637ad2a05a130821d3daceab1b851 100644 (file)
@@ -11,7 +11,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: char.ml 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (* Character operations *)
 
index 05a8156d3cfd1651eba89da2631880926fc1793c..160dcc79d214c9f511ace56d61f2544fb0170af7 100644 (file)
@@ -11,7 +11,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: char.mli 12241 2012-03-14 14:32:07Z doligez $ *)
 
 (** Character operations. *)
 
index c52e647cc92ea26f4ba27e40726b3e5ee01f3c6e..ffb9794a3d3150e8a682e4f5c6ec7194f9f5ede7 100644 (file)
@@ -11,7 +11,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: complex.ml 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (* Complex numbers *)
 
index 1bfa8b7bc891182798a5c0afff30e47e5cae1b38..f57dc07fdfc4fb049cc6daccb2fae50ed5929a7d 100644 (file)
@@ -11,7 +11,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: complex.mli 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (** Complex numbers.
 
index 38df61a038875bc01a7e04da77faf84ec196a377..47e78de7651cd0974207d8daa1810bc668bf518a 100644 (file)
@@ -11,7 +11,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: digest.ml 12082 2012-01-26 22:56:48Z doligez $ *)
 
 (* Message digest (MD5) *)
 
index efc0a4773c5e24a348820184f48c8fb2cf62f444..ca3de0f481c40a3287870d056b4228c9a923c414 100644 (file)
@@ -11,7 +11,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: digest.mli 12212 2012-03-08 22:27:57Z doligez $ *)
 
 (** MD5 message digest.
 
index 3c147333e3d9aabf200ccb44b7fc1e7029893d6a..156ceacb7ecdd987c2ece9158b6b1fb384003e11 100644 (file)
@@ -11,7 +11,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: filename.ml 12383 2012-04-19 13:12:23Z xleroy $ *)
 
 let generic_quote quotequote s =
   let l = String.length s in
@@ -210,10 +210,10 @@ let chop_extension name =
 external open_desc: string -> open_flag list -> int -> int = "caml_sys_open"
 external close_desc: int -> unit = "caml_sys_close"
 
-let prng = Random.State.make_self_init ();;
+let prng = lazy(Random.State.make_self_init ());;
 
 let temp_file_name temp_dir prefix suffix =
-  let rnd = (Random.State.bits prng) land 0xFFFFFF in
+  let rnd = (Random.State.bits (Lazy.force prng)) land 0xFFFFFF in
   concat temp_dir (Printf.sprintf "%s%06x%s" prefix rnd suffix)
 ;;
 
index 499e8bb29126b81d7738e6744d5deb40d99bb458..1c6d6f13a7b0248373aecb9584ed4a6b6c060bad 100644 (file)
@@ -11,7 +11,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: filename.mli 12275 2012-03-26 17:18:30Z frisch $ *)
 
 (** Operations on file names. *)
 
index 28bb5f1c5968a9f41338d1ad5dcd52276efd342d..8087a0ed30df50487f23de495feae9e26308eed6 100644 (file)
@@ -11,7 +11,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: format.ml 11243 2011-10-25 13:13:54Z weis $ *)
 
 (* A pretty-printing facility and definition of formatters for ``parallel''
    (i.e. unrelated or independent) pretty-printing on multiple out channels. *)
index 4831fe02021b680cb04e59d90e8f67558f311e2f..07f11520ec8f79f69fff9e307b97a1c6ff6686c1 100644 (file)
@@ -11,7 +11,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: format.mli 12213 2012-03-08 22:36:21Z doligez $ *)
 
 (** Pretty printing.
 
index 16a354a35f00cf7dae2da44b129c838bd09a7bc2..2eb4f857be1c672258aeeb16431740df151cec98 100644 (file)
@@ -11,7 +11,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: gc.ml 11156 2011-07-27 14:17:02Z doligez $ *)
 
 type stat = {
   minor_words : float;
index 45d882f25a5cb01e101aa6fe57824741cc22c497..14f263a4420c673105675eb8bbd02f5d74979c80 100644 (file)
@@ -11,7 +11,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: gc.mli 12339 2012-04-11 03:51:09Z frisch $ *)
 
 (** Memory management control and statistics; finalised values. *)
 
index 1c6276c9f9466e0cbfe615e0712a684e04663af3..04e2ec80683cc118e18d3cee6484beb408d4e1d0 100644 (file)
@@ -11,7 +11,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: genlex.ml 11156 2011-07-27 14:17:02Z doligez $ *)
 
 type token =
     Kwd of string
index b1098f0977ff2c0ad115e65b537a764950048f1c..681b38bd0e7f63eca1067620615231ce2b2c3f83 100644 (file)
@@ -11,7 +11,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: genlex.mli 12210 2012-03-08 19:52:03Z doligez $ *)
 
 (** A generic lexical analyzer.
 
index 6f3ea880b619e8cf2df39a03ad2039479513f125..6356c36074b48552911bb8dddfa9547f385ecfbf 100644 (file)
@@ -11,7 +11,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: hashtbl.ml 12475 2012-05-24 14:55:00Z doligez $ *)
 
 (* Hash tables *)
 
@@ -28,26 +28,56 @@ let seeded_hash seed x = seeded_hash_param 10 100 seed x
 type ('a, 'b) t =
   { mutable size: int;                        (* number of entries *)
     mutable data: ('a, 'b) bucketlist array;  (* the buckets *)
-    mutable seed: int }                       (* for randomization *)
+    mutable seed: int;                        (* for randomization *)
+    initial_size: int;                        (* initial array size *)
+  }
 
 and ('a, 'b) bucketlist =
     Empty
   | Cons of 'a * 'b * ('a, 'b) bucketlist
 
+(* To pick random seeds if requested *)
+
+let randomized_default =
+  let params =
+    try Sys.getenv "OCAMLRUNPARAM" with Not_found ->
+    try Sys.getenv "CAMLRUNPARAM" with Not_found -> "" in
+  String.contains params 'R'
+
+let randomized = ref randomized_default
+
+let randomize () = randomized := true
+
+let prng = lazy (Random.State.make_self_init())
+
+(* Creating a fresh, empty table *)
+
 let rec power_2_above x n =
   if x >= n then x
   else if x * 2 > Sys.max_array_length then x
   else power_2_above (x * 2) n
 
-let create ?(seed = 0) initial_size =
+let create ?(random = !randomized) initial_size =
   let s = power_2_above 16 initial_size in
-  { size = 0; seed = seed; data = Array.make s Empty }
+  let seed = if random then Random.State.bits (Lazy.force prng) else 0 in
+  { initial_size = s; size = 0; seed = seed; data = Array.make s Empty }
 
 let clear h =
-  for i = 0 to Array.length h.data - 1 do
+  h.size <- 0;
+  let len = Array.length h.data in
+  for i = 0 to len - 1 do
     h.data.(i) <- Empty
-  done;
-  h.size <- 0
+  done
+
+let reset h =
+  let len = Array.length h.data in
+  if Obj.size (Obj.repr h) < 4 (* compatibility with old hash tables *)
+    || len = h.initial_size then
+    clear h
+  else begin
+    h.size <- 0;
+    h.data <- Array.make h.initial_size Empty
+  end
 
 let copy h = { h with data = Array.copy h.data }
 
@@ -58,7 +88,7 @@ let resize indexfun h =
   let osize = Array.length odata in
   let nsize = osize * 2 in
   if nsize < Sys.max_array_length then begin
-    let ndata = Array.create nsize Empty in
+    let ndata = Array.make nsize Empty in
     h.data <- ndata;          (* so that indexfun sees the new bucket count *)
     let rec insert_bucket = function
         Empty -> ()
@@ -73,7 +103,7 @@ let resize indexfun h =
 
 let key_index h key =
   (* compatibility with old hash tables *)
-  if Obj.size (Obj.repr h) = 3
+  if Obj.size (Obj.repr h) >= 3
   then (seeded_hash_param 10 100 h.seed key) land (Array.length h.data - 1)
   else (old_hash_param 10 100 key) mod (Array.length h.data)
 
@@ -221,7 +251,8 @@ module type S =
     type key
     type 'a t
     val create: int -> 'a t
-    val clear: 'a t -> unit
+    val clear : 'a t -> unit
+    val reset : 'a t -> unit
     val copy: 'a t -> 'a t
     val add: 'a t -> key -> 'a -> unit
     val remove: 'a t -> key -> unit
@@ -239,8 +270,9 @@ module type SeededS =
   sig
     type key
     type 'a t
-    val create : ?seed:int -> int -> 'a t
+    val create : ?random:bool -> int -> 'a t
     val clear : 'a t -> unit
+    val reset : 'a t -> unit
     val copy : 'a t -> 'a t
     val add : 'a t -> key -> 'a -> unit
     val remove : 'a t -> key -> unit
@@ -261,6 +293,7 @@ module MakeSeeded(H: SeededHashedType): (SeededS with type key = H.t) =
     type 'a t = 'a hashtbl
     let create = create
     let clear = clear
+    let reset = reset
     let copy = copy
 
     let key_index h key =
@@ -352,5 +385,5 @@ module Make(H: HashedType): (S with type key = H.t) =
         let equal = H.equal
         let hash (seed: int) x = H.hash x
       end)
-    let create sz = create ~seed:0 sz
+    let create sz = create ~random:false sz
   end
index 98d03198f579b4da3c72e5b444226d20cea0da51..cc052629668a8278f31f25071a654aff1f39525a 100644 (file)
@@ -11,7 +11,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: hashtbl.mli 12453 2012-05-15 08:44:18Z lefessan $ *)
 
 (** Hash tables and hash functions.
 
 type ('a, 'b) t
 (** The type of hash tables from type ['a] to type ['b]. *)
 
-val create : ?seed:int -> int -> ('a, 'b) t
+val create : ?random:bool -> int -> ('a, 'b) t
 (** [Hashtbl.create n] creates a new, empty hash table, with
    initial size [n].  For best results, [n] should be on the
    order of the expected number of elements that will be in
    the table.  The table grows as needed, so [n] is just an
    initial guess.
 
-   The optional [seed] parameter (an integer) can be given to
-   diversify the hash function used to access the returned table.
-   With high probability, hash tables created with different seeds
-   have different collision patterns.  In Web-facing applications
-   for instance, it is recommended to create hash tables with a
-   randomly-chosen seed.  This prevents a denial-of-service attack
-   whereas a malicious user sends input crafted to create many
-   collisions in the table and therefore slow the application down.
-   @before 4.00.0 the [seed] parameter was not present. *)
+   The optional [random] parameter (a boolean) controls whether
+   the internal organization of the hash table is randomized at each
+   execution of [Hashtbl.create] or deterministic over all executions.
+
+   A hash table that is created with [~random:false] uses a
+   fixed hash function ({!Hashtbl.hash}) to distribute keys among
+   buckets.  As a consequence, collisions between keys happen
+   deterministically.  In Web-facing applications or other
+   security-sensitive applications, the deterministic collision
+   patterns can be exploited by a malicious user to create a
+   denial-of-service attack: the attacker sends input crafted to
+   create many collisions in the table, slowing the application down.
+
+   A hash table that is created with [~random:true] uses the seeded
+   hash function {!Hashtbl.seeded_hash} with a seed that is randomly
+   chosen at hash table creation time.  In effect, the hash function
+   used is randomly selected among [2^{30}] different hash functions.
+   All these hash functions have different collision patterns,
+   rendering ineffective the denial-of-service attack described above.
+   However, because of randomization, enumerating all elements of the
+   hash table using {!Hashtbl.fold} or {!Hashtbl.iter} is no longer
+   deterministic: elements are enumerated in different orders at
+   different runs of the program.
+
+   If no [~random] parameter is given, hash tables are created
+   in non-random mode by default.  This default can be changed
+   either programmatically by calling {!Hashtbl.randomize} or by
+   setting the [R] flag in the [OCAMLRUNPARAM] environment variable.
+
+   @before 4.00.0 the [random] parameter was not present and all
+   hash tables were created in non-randomized mode. *)
 
 val clear : ('a, 'b) t -> unit
-(** Empty a hash table. *)
+(** Empty a hash table. Use [reset] instead of [clear] to shrink the
+    size of the bucket table to its initial size. *)
 
+val reset : ('a, 'b) t -> unit
+(** Empty a hash table and shrink the size of the bucket table
+    to its initial size. *)
+
+val copy : ('a, 'b) t -> ('a, 'b) t
+(** Return a copy of the given hashtable. *)
 
 val add : ('a, 'b) t -> 'a -> 'b -> unit
 (** [Hashtbl.add tbl x y] adds a binding of [x] to [y] in table [tbl].
@@ -53,9 +82,6 @@ val add : ('a, 'b) t -> 'a -> 'b -> unit
    the previous binding for [x], if any, is restored.
    (Same behavior as with association lists.) *)
 
-val copy : ('a, 'b) t -> ('a, 'b) t
-(** Return a copy of the given hashtable. *)
-
 val find : ('a, 'b) t -> 'a -> 'b
 (** [Hashtbl.find tbl x] returns the current binding of [x] in [tbl],
    or raises [Not_found] if no such binding exists. *)
@@ -85,10 +111,17 @@ val iter : ('a -> 'b -> unit) -> ('a, 'b) t -> unit
 (** [Hashtbl.iter f tbl] applies [f] to all bindings in table [tbl].
    [f] receives the key as first argument, and the associated value
    as second argument. Each binding is presented exactly once to [f].
+
    The order in which the bindings are passed to [f] is unspecified.
    However, if the table contains several bindings for the same key,
    they are passed to [f] in reverse order of introduction, that is,
-   the most recent binding is passed first. *)
+   the most recent binding is passed first.
+
+   If the hash table was created in non-randomized mode, the order
+   in which the bindings are enumerated is reproducible between
+   successive runs of the program, and even between minor versions
+   of OCaml.  For randomized hash tables, the order of enumeration
+   is entirely random. *)
 
 val fold : ('a -> 'b -> 'c -> 'c) -> ('a, 'b) t -> 'c -> 'c
 (** [Hashtbl.fold f tbl init] computes
@@ -96,11 +129,17 @@ val fold : ('a -> 'b -> 'c -> 'c) -> ('a, 'b) t -> 'c -> 'c
    where [k1 ... kN] are the keys of all bindings in [tbl],
    and [d1 ... dN] are the associated values.
    Each binding is presented exactly once to [f].
+
    The order in which the bindings are passed to [f] is unspecified.
    However, if the table contains several bindings for the same key,
    they are passed to [f] in reverse order of introduction, that is,
-   the most recent binding is passed first. *)
+   the most recent binding is passed first.
 
+   If the hash table was created in non-randomized mode, the order
+   in which the bindings are enumerated is reproducible between
+   successive runs of the program, and even between minor versions
+   of OCaml.  For randomized hash tables, the order of enumeration
+   is entirely random. *)
 
 val length : ('a, 'b) t -> int
 (** [Hashtbl.length tbl] returns the number of bindings in [tbl].
@@ -108,6 +147,25 @@ val length : ('a, 'b) t -> int
    [Hashtbl.length] gives the number of times [Hashtbl.iter] calls its
    first argument. *)
 
+val randomize : unit -> unit
+(** After a call to [Hashtbl.randomize()], hash tables are created in
+    randomized mode by default: {!Hashtbl.create} returns randomized
+    hash tables, unless the [~random:false] optional parameter is given.
+    The same effect can be achieved by setting the [R] parameter in
+    the [OCAMLRUNPARAM] environment variable.
+
+    It is recommended that applications or Web frameworks that need to
+    protect themselves against the denial-of-service attack described
+    in {!Hashtbl.create} call [Hashtbl.randomize()] at initialization
+    time.
+
+    Note that once [Hashtbl.randomize()] was called, there is no way
+    to revert to the non-randomized default behavior of {!Hashtbl.create}.
+    This is intentional.  Non-randomized hash tables can still be
+    created using [Hashtbl.create ~random:false].
+
+    @since 4.00.0 *)
+
 type statistics = {
   num_bindings: int;
     (** Number of bindings present in the table.
@@ -118,7 +176,7 @@ type statistics = {
     (** Maximal number of bindings per bucket. *)
   bucket_histogram: int array
     (** Histogram of bucket sizes.  This array [histo] has
-        length [hash_max_bucket_length + 1].  The value of
+        length [max_bucket_length + 1].  The value of
         [histo.(i)] is the number of buckets whose size is [i]. *)
 }
 
@@ -159,6 +217,7 @@ module type S =
     type 'a t
     val create : int -> 'a t
     val clear : 'a t -> unit
+    val reset : 'a t -> unit
     val copy : 'a t -> 'a t
     val add : 'a t -> key -> 'a -> unit
     val remove : 'a t -> key -> unit
@@ -181,7 +240,9 @@ module Make (H : HashedType) : S with type key = H.t
     The operations perform similarly to those of the generic
     interface, but use the hashing and equality functions
     specified in the functor argument [H] instead of generic
-    equality and hashing. *)
+    equality and hashing.  Since the hash function is not seeded,
+    the [create] operation of the result structure always returns
+    non-randomized hash tables. *)
 
 module type SeededHashedType =
   sig
@@ -203,8 +264,9 @@ module type SeededS =
   sig
     type key
     type 'a t
-    val create : ?seed:int -> int -> 'a t
+    val create : ?random:bool -> int -> 'a t
     val clear : 'a t -> unit
+    val reset : 'a t -> unit
     val copy : 'a t -> 'a t
     val add : 'a t -> key -> 'a -> unit
     val remove : 'a t -> key -> unit
@@ -228,7 +290,10 @@ module MakeSeeded (H : SeededHashedType) : SeededS with type key = H.t
     The operations perform similarly to those of the generic
     interface, but use the seeded hashing and equality functions
     specified in the functor argument [H] instead of generic
-    equality and hashing.
+    equality and hashing.  The [create] operation of the
+    result structure supports the [~random] optional parameter
+    and returns randomized hash tables if [~random:true] is passed
+    or if randomization is globally on (see {!Hashtbl.randomize}).
     @since 4.00.0 *)
 
 
index c82c7bc7f844d74e66cedcbb3b5b780ac62c473f..a58cc149650b2f58db50eefeebc1586f17fdd644 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: header.c 11156 2011-07-27 14:17:02Z doligez $ */
 
 /* The launcher for bytecode executables (if #! is not working) */
 
index 9972d5d5c11f0c199dd2adc0f05f951d2bdab552..0cc0a465cd3a0382f313aeaf72cb552effb11e8e 100644 (file)
@@ -11,7 +11,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: headernt.c 11156 2011-07-27 14:17:02Z doligez $ */
 
 #define STRICT
 #define WIN32_LEAN_AND_MEAN
index 15237d7f481f6c6f15f62fb869a183e54dd40310..15d5d3d31a7607bb03577b4df34edab5e98ba9f1 100644 (file)
@@ -11,7 +11,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: int32.ml 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (* Module [Int32]: 32-bit integers *)
 
index 8bc7384ff2258c90b903192636a50853036164ab..9b4e3c8158258bb429200de2881f2df18aa1587e 100644 (file)
@@ -11,7 +11,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: int32.mli 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (** 32-bit integers.
 
index d8b1c3ca328b3293ce27b457d06356db4acca882..e5d52b2a0a976f9fd12f75570ee23f15c57cf94e 100644 (file)
@@ -11,7 +11,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: int64.ml 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (* Module [Int64]: 64-bit integers *)
 
index 1f28f5c49be385e1cb2c9146428e9641ccdfbdc2..73ce56d60d37f17b51cc3a4698493f5650a09f16 100644 (file)
@@ -11,7 +11,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: int64.mli 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (** 64-bit integers.
 
index 6a114245e7e3fb8b220f35b1023126f8b56e37aa..c77264b8e5f0443e48f7e8518244bf51d7d2fb35 100644 (file)
@@ -11,7 +11,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: lazy.ml 12210 2012-03-08 19:52:03Z doligez $ *)
 
 (* Module [Lazy]: deferred computations *)
 
index 9d720d2bbc9464ce7f1a8840a94600e50d501abd..653d9ec470a02cfc80d04c2972ceb830d6ebcd17 100644 (file)
@@ -11,7 +11,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: lazy.mli 12241 2012-03-14 14:32:07Z doligez $ *)
 
 (** Deferred computations. *)
 
index 4d03ec088a64a8308976f7675059caab8bb674cf..fb83bc8f37ecbe1229d151d628b45e4e004032ce 100644 (file)
@@ -11,7 +11,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: lexing.ml 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (* The run-time library for lexers generated by camllex *)
 
index a1a0690169d070ddb6954aefac1b79c255492ff7..b5ed2f9289d016db1b0bff620e056bfeddec8421 100644 (file)
@@ -11,7 +11,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: lexing.mli 12241 2012-03-14 14:32:07Z doligez $ *)
 
 (** The run-time library for lexers generated by [ocamllex]. *)
 
index aea05b4bf3650186c1c474377a307ee70f6103a6..7c8eeeebf97d8a72e4699642e9980ef7b30acf45 100644 (file)
@@ -11,7 +11,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: list.ml 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (* List operations *)
 
index 855699d0510d45c1ec42dda5d0df676831364fd4..312cbc850a00dbfff0175f2ef7bb7a0ed50cda6b 100644 (file)
@@ -11,7 +11,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: list.mli 12212 2012-03-08 22:27:57Z doligez $ *)
 
 (** List operations.
 
index 62b6e3768781a8cd3fe4843786e822955ba2dbf9..fae79c539a38a6c145a40ce8910d8a3517b30511 100644 (file)
@@ -11,7 +11,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: listLabels.ml 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (* Module [ListLabels]: labelled List module *)
 
index b4b58045bf18a478b705de632ddeba9ef4bfa726..31469d2ed25f4fb1a9c6d1aa9f35c5f0357f7741 100644 (file)
@@ -11,7 +11,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: listLabels.mli 12212 2012-03-08 22:27:57Z doligez $ *)
 
 (** List operations.
 
index 519ef824e70e540a388f05a73b2d65c079300234..671903f5fd2bed9826b340fe371fba6f83f0fb0d 100644 (file)
@@ -11,7 +11,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: map.ml 12510 2012-05-30 11:28:51Z scherer $ *)
 
 module type OrderedType =
   sig
@@ -273,14 +273,20 @@ module Make(Ord: OrderedType) = struct
     let rec filter p = function
         Empty -> Empty
       | Node(l, v, d, r, _) ->
-          let l' = filter p l and r' = filter p r in
-          if p v d then join l' v d r' else concat l' r'
+          (* call [p] in the expected left-to-right order *)
+          let l' = filter p l in
+          let pvd = p v d in
+          let r' = filter p r in
+          if pvd then join l' v d r' else concat l' r'
 
     let rec partition p = function
         Empty -> (Empty, Empty)
       | Node(l, v, d, r, _) ->
-          let (lt, lf) = partition p l and (rt, rf) = partition p r in
-          if p v d
+          (* call [p] in the expected left-to-right order *)
+          let (lt, lf) = partition p l in
+          let pvd = p v d in
+          let (rt, rf) = partition p r in
+          if pvd
           then (join lt v d rt, concat lf rf)
           else (concat lt rt, join lf v d rf)
 
index a6374dbdf6745467207e36bc79c4b1ab6c35b2d1..0934bb738052e5fe13aefe0baa981da6eeed1892 100644 (file)
@@ -11,7 +11,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: map.mli 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (** Association tables over ordered types.
 
index 638f05434ab8b2806ab3ba9344f718c28a86b3c7..1a988cc967c26d85918ce833d8e28d788e2d3104 100644 (file)
@@ -11,7 +11,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: marshal.ml 12210 2012-03-08 19:52:03Z doligez $ *)
 
 type extern_flags =
     No_sharing
index 86e1ebd1990198dc37a7f56d8fcf0115b2ebf6d6..2b8af1dae3bb2e7d62dc9ab577a2f96004e18de1 100644 (file)
@@ -11,7 +11,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: marshal.mli 11922 2011-12-21 15:37:54Z doligez $ *)
 
 (** Marshaling of data structures.
 
index 3fda7a5b32272bec01f5379d3f411d079b1a2bce..ff1bc80981b0a71780c00dd8754a94fcaf07e64e 100644 (file)
@@ -11,7 +11,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: moreLabels.ml 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (* Module [MoreLabels]: meta-module for compatibility labelled libraries *)
 
index c2691cba5f232b1b568955ec4bd68ef47c693b13..34982247d72f8c096d3fc79f8943070f9e86bde2 100644 (file)
@@ -11,7 +11,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: moreLabels.mli 12453 2012-05-15 08:44:18Z lefessan $ *)
 
 (** Extra labeled libraries.
 
 
 module Hashtbl : sig
   type ('a, 'b) t = ('a, 'b) Hashtbl.t
-  val create : ?seed:int -> int -> ('a, 'b) t
+  val create : ?random:bool -> int -> ('a, 'b) t
   val clear : ('a, 'b) t -> unit
-  val add : ('a, 'b) t -> key:'a -> data:'b -> unit
+  val reset : ('a, 'b) t -> unit
   val copy : ('a, 'b) t -> ('a, 'b) t
+  val add : ('a, 'b) t -> key:'a -> data:'b -> unit
   val find : ('a, 'b) t -> 'a -> 'b
   val find_all : ('a, 'b) t -> 'a -> 'b list
   val mem : ('a, 'b) t -> 'a -> bool
@@ -39,6 +40,7 @@ module Hashtbl : sig
       f:(key:'a -> data:'b -> 'c -> 'c) ->
         ('a, 'b) t -> init:'c -> 'c
   val length : ('a, 'b) t -> int
+  val randomize : unit -> unit
   type statistics = Hashtbl.statistics
   val stats : ('a, 'b) t -> statistics
   module type HashedType = Hashtbl.HashedType
@@ -49,6 +51,7 @@ module Hashtbl : sig
       and 'a t
       val create : int -> 'a t
       val clear : 'a t -> unit
+      val reset : 'a t -> unit
       val copy : 'a t -> 'a t
       val add : 'a t -> key:key -> data:'a -> unit
       val remove : 'a t -> key -> unit
@@ -67,8 +70,9 @@ module Hashtbl : sig
     sig
       type key
       and 'a t
-      val create : ?seed:int -> int -> 'a t
+      val create : ?random:bool -> int -> 'a t
       val clear : 'a t -> unit
+      val reset : 'a t -> unit
       val copy : 'a t -> 'a t
       val add : 'a t -> key:key -> data:'a -> unit
       val remove : 'a t -> key -> unit
index 4bba76d566d67aec2341c33bf4234d1ce7ab3318..88a549432c67984cae9c2c5a4d19b308992854f6 100644 (file)
@@ -11,7 +11,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: nativeint.ml 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (* Module [Nativeint]: processor-native integers *)
 
index 7de11ea00d4908589eb88dfa8ec31021185bec0e..84692ef86949f8523af24601dd71848080b2d90e 100644 (file)
@@ -11,7 +11,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: nativeint.mli 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (** Processor-native integers.
 
index 96de162f6c5d2b7cef5a4aa9fa2ffbdaeaca837f..b93228890cebca8bf02e00fe6fc214c793a090bd 100644 (file)
@@ -11,7 +11,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: obj.ml 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (* Operations on internal representations of values *)
 
index 9b66723b2a75da143648e81e25ea92c9f95cd7f5..fc60e2cb529abe5cc19320e1983b65b7053f2693 100644 (file)
@@ -11,7 +11,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: obj.mli 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (** Operations on internal representations of values.
 
index 40c8ae6e4ab744888050cc6273f084dd1ca9dcc0..b08a14ac00c55257b4543bbe981a57e378d3d547 100644 (file)
@@ -11,7 +11,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: oo.ml 11156 2011-07-27 14:17:02Z doligez $ *)
 
 let copy = CamlinternalOO.copy
 external id : < .. > -> int = "%field1"
index 2a9eb2320937aa33b64f5e75f93aabe2ca6ca0d5..4ce25f9d4ceed90fed47680cf4ac2fabc9faa5b6 100644 (file)
@@ -11,7 +11,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: oo.mli 12241 2012-03-14 14:32:07Z doligez $ *)
 
 (** Operations on objects *)
 
index 55a8f53aab48a028f2175c5e7e4090cbda2ae685..9837b7fcec9486bbe7dd1569c4bcdc22e89c29a5 100644 (file)
@@ -11,7 +11,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: parsing.ml 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (* The parsing engine *)
 
index f488245992af588f9d5f6170f1d9bee49ed4a019..5dff7d8436e52f2f4eb770e9ef0233c8069ea9e1 100644 (file)
@@ -11,7 +11,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: parsing.mli 12241 2012-03-14 14:32:07Z doligez $ *)
 
 (** The run-time library for parsers generated by [ocamlyacc]. *)
 
index 17a1a9c1a8c6bb66658e8949334ea7bf91b150f2..590f5b9a80f807ab7333004ebcc77d78723ff97c 100644 (file)
@@ -11,7 +11,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: pervasives.ml 12019 2012-01-12 15:46:51Z doligez $ *)
 
 (* type 'a option = None | Some of 'a *)
 
index bf19b2aeac9413a94bbd48d4ae08ed0d619adaf9..a4cc18753dcbe3f6d1a12ab5f2ea0f7443fae377 100644 (file)
@@ -11,7 +11,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: pervasives.mli 12416 2012-05-02 14:39:52Z doligez $ *)
 
 (** The initially opened module.
 
@@ -508,7 +508,9 @@ val ( @ ) : 'a list -> 'a list -> 'a list
 (** List concatenation. *)
 
 
-(** {6 Input/output} *)
+(** {6 Input/output}
+    Note: all input/output functions can raise [Sys_error] when the system
+    calls they invoke fail. *)
 
 type in_channel
 (** The type of input channel. *)
index 062decb857908cfdbe528054785a239f6668f1ef..ab00c2a7d74d369e99f460c6322822a11e740871 100644 (file)
@@ -11,7 +11,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: printexc.ml 11187 2011-09-08 08:34:43Z xclerc $ *)
 
 open Printf;;
 
index 93ee5d6d1a9ee15ad4488aee9b7457e73453935a..f389d85c7ad060756770b7f7e637b50bbe4b0c3b 100644 (file)
@@ -11,7 +11,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: printexc.mli 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (** Facilities for printing exceptions. *)
 
index c55c64d3673fc33e0f3e1d7dd956c7e747e94504..9e0f05c5fce05f6dbb9c74e01c3e977d0991db63 100644 (file)
@@ -11,7 +11,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: printf.ml 12014 2012-01-11 15:22:51Z doligez $ *)
 
 external format_float: string -> float -> string
   = "caml_format_float"
index 6fcb45ebac2e4dd24a9a0bcfaf7f5f6ab0834d85..9dc472dc3aeaa220e2094082a0247bb36035b0b1 100644 (file)
@@ -11,7 +11,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: printf.mli 12241 2012-03-14 14:32:07Z doligez $ *)
 
 (** Formatted output functions. *)
 
index 388a46c539e1e0f2cf85c7099bc9aae90cbee40e..02c6c77abb0772e4fc1b32667e587fce5322b9a6 100644 (file)
@@ -11,7 +11,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: queue.ml 12163 2012-02-18 09:36:13Z lefessan $ *)
 
 exception Empty
 
index 5dea9244bcc1dfd99451eca0efdc764276f8a6a3..4d235d4d2a94f6ba105edb36eac6fd8fbe2474a2 100644 (file)
@@ -11,7 +11,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: queue.mli 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (** First-in first-out queues.
 
index 800c62970698b433284e2dad5b99356f18f4edd5..aa625bfbda66bd5b2f6d4bfc126d06d7cf2623cc 100644 (file)
@@ -11,7 +11,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: random.ml 12333 2012-04-10 15:08:10Z doligez $ *)
 
 (* Pseudo-random number generator
    This is a lagged-Fibonacci F(55, 24, +) with a modified addition
index d8ea01e621445185466219c23225744dad37489c..d234a07d2fbbf031dc5b427517935666f551ef42 100644 (file)
@@ -11,7 +11,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: random.mli 12352 2012-04-13 12:43:24Z doligez $ *)
 
 (** Pseudo-random number generators (PRNG). *)
 
index cac4a136a4c299a4c842c3681b6e2179227f939c..a5e137006ba868def9a16277dc36d74b96d5177f 100644 (file)
@@ -11,7 +11,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: scanf.ml 12506 2012-05-29 12:51:50Z frisch $ *)
 
 (* The run-time library for scanners. *)
 
@@ -1032,7 +1032,7 @@ let scan_range fmt j =
       scan_closing (j + 1)
     | _ -> scan_closing j in
 
-  let rec scan_first_neg j =
+  let scan_first_neg j =
     if j >= len then incomplete_format fmt else
     match Sformat.get fmt j with
     | '^' ->
index c147f7a04bebaf39ee8af2544d121b57fc2acc5b..df77b8b38f0dc1037dbfcb4efd02d7d646232fd2 100644 (file)
@@ -11,7 +11,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: scanf.mli 12230 2012-03-13 16:10:02Z doligez $ *)
 
 (** Formatted input functions. *)
 
index e61fd24b6a0e6e68cd0c342c1538e8127296ac46..00dd7945bc74060f3491410f9140de28cb13a262 100644 (file)
@@ -11,7 +11,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: set.ml 12510 2012-05-30 11:28:51Z scherer $ *)
 
 (* Sets over ordered types *)
 
@@ -320,14 +320,20 @@ module Make(Ord: OrderedType) =
     let rec filter p = function
         Empty -> Empty
       | Node(l, v, r, _) ->
-          let l' = filter p l and r' = filter p r in
-          if p v then join l' v r' else concat l' r'
+          (* call [p] in the expected left-to-right order *)
+          let l' = filter p l in
+          let pv = p v in
+          let r' = filter p r in
+          if pv then join l' v r' else concat l' r'
 
     let rec partition p = function
         Empty -> (Empty, Empty)
       | Node(l, v, r, _) ->
-          let (lt, lf) = partition p l and (rt, rf) = partition p r in
-          if p v
+          (* call [p] in the expected left-to-right order *)
+          let (lt, lf) = partition p l in
+          let pv = p v in
+          let (rt, rf) = partition p r in
+          if pv
           then (join lt v rt, concat lf rf)
           else (concat lt rt, join lf v rf)
 
index 0f1a3b7c96a3626e5e5109ef9e80e64b283755cb..19117b657370ea795ea5c7da21e12e871d36f543 100644 (file)
@@ -11,7 +11,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: set.mli 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (** Sets over ordered types.
 
index 66546b12b184623990ee9714b8956b195135b864..ac8b5119f4a82574ea6850886892eba3ca563bc5 100644 (file)
@@ -11,7 +11,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: sort.ml 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (* Merging and sorting *)
 
index 4f2a961aaaeb39182a598b724bded05d723b4c21..820f508b0339a4526e6c814b610820a1b3a8c3f2 100644 (file)
@@ -11,7 +11,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: sort.mli 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (** Sorting and merging lists.
 
index 599b10c8bb4609afc6f0ecaf56c356f5e8f2e954..75b397c23078cc442cb8b00e7ec5045762a2c70b 100644 (file)
@@ -11,7 +11,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: stack.ml 11156 2011-07-27 14:17:02Z doligez $ *)
 
 type 'a t = { mutable c : 'a list }
 
index 2d7a90066add3d73710acbd9826506abada7330d..f9cb6398b30b124fc9a8a4d85e43c5adbe7da2f1 100644 (file)
@@ -11,7 +11,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: stack.mli 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (** Last-in first-out stacks.
 
index 468dd5176e619c14d48ffbf93fee3813862a7a4c..c0e2f0a72bf01ab4371f8bfd58df6118cbd685ac 100644 (file)
@@ -11,7 +11,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: stdLabels.ml 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (* Module [StdLabels]: meta-module for labelled libraries *)
 
index 1360081a22877027b3f8780455f484cea511616b..f2a553dad721bdb4c3a77ddc37f9228051a26f29 100644 (file)
@@ -11,7 +11,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: stdLabels.mli 12210 2012-03-08 19:52:03Z doligez $ *)
 
 (** Standard labeled libraries.
 
index c56153738fd9192f43aa6d190a7f98212e57a832..68d8b0fbd5061764015223864d4fb43c75483df7 100644 (file)
@@ -11,7 +11,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: std_exit.ml 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (* Ensure that [at_exit] functions are called at the end of every program *)
 
index 91265e5da92fd62f021023e49811013085938444..803c952358cca11b1ce662f9eaeb762c604cea8b 100644 (file)
@@ -1,7 +1,7 @@
 # This file lists all standard library modules
 # (in the same order as Makefile.shared).
 # It is used in particular to know what to expunge in toplevels.
-# $Id$
+# $Id: stdlib.mllib 9540 2010-01-20 16:26:46Z doligez $
 
 Pervasives
 Array
index fc66acb3e96b8c58d4adcd3aaf4b92a4f7470355..6e6d08c71dfcc890771a3313818d4fdf307b3b4e 100644 (file)
@@ -11,7 +11,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: stream.ml 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (* The fields of type t are not mutable to preserve polymorphism of
    the empty stream. This is type safe because the empty stream is never
index 16e71179734e984ac3174d046967692bb8a08ff8..aa697e3d5522e85bd58ef158b071b6d8053aa148 100644 (file)
@@ -11,7 +11,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: stream.mli 12241 2012-03-14 14:32:07Z doligez $ *)
 
 (** Streams and parsers. *)
 
index f3906f3533bb3ae1ad2b31935b7f672c89eaa13e..b82e7fa45dec9daf8a40b16fc9a61bb85fdc728b 100644 (file)
@@ -11,7 +11,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: string.ml 12210 2012-03-08 19:52:03Z doligez $ *)
 
 (* String operations *)
 
index c248fab18a443fa6b10e92d6bb8fed2b540e991c..8cbc82757580bea789ed9d7ada160b5cc56c966d 100644 (file)
@@ -11,7 +11,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: string.mli 12241 2012-03-14 14:32:07Z doligez $ *)
 
 (** String operations.
 
index 2345d4992c73959fbd3dd2d5c74655b424b49320..210fb24d2b71c9cd362584896a56b31d127f95e2 100644 (file)
@@ -11,7 +11,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: stringLabels.ml 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (* Module [StringLabels]: labelled String module *)
 
index 59b0eb7c28113a97697366a6269d61fad23172d0..faa9a952f5663841b64f9c9f53fde555084e1676 100644 (file)
@@ -11,7 +11,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: stringLabels.mli 12241 2012-03-14 14:32:07Z doligez $ *)
 
 (** String operations. *)
 
index 6f3d57978516793ef4165e4560f8676aca89cda0..06fc69236ac16f11195e489924338a97c6dd6997 100644 (file)
@@ -11,7 +11,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: sys.mli 12212 2012-03-08 22:27:57Z doligez $ *)
 
 (** System interface. *)
 
index c7271794d073fa12554d6c2ccf97aa4308448b4b..8784a9856c3a48ffa85b1a5263e606e521322031 100644 (file)
@@ -11,7 +11,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: sys.mlp 12210 2012-03-08 19:52:03Z doligez $ *)
 
 (* WARNING: sys.ml is generated from sys.mlp.  DO NOT EDIT sys.ml or
    your changes will be lost.
index bbd3debc44acad6e52a4a0c88817d3871e6c0f3e..9b9c64cf0713003685c7ec3bf470d8864cdc852b 100644 (file)
@@ -11,7 +11,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: weak.ml 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (** Weak array operations *)
 
index add9b0abb22f9858648e17ca7f0bccd7a6b0ef95..599ab60e02d5409a2969e3cb40ad1089d4b8eb3e 100644 (file)
@@ -11,7 +11,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: weak.mli 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (** Arrays of weak pointers and hash tables of weak pointers. *)
 
index 497d7403d027e2c447b0c68748c3169d028c06d7..b8aac46eb47f61639f5a30b1c124bf6a104baed6 100644 (file)
@@ -1,4 +1,4 @@
-# $Id$
+# $Id: Makefile 11135 2011-07-21 07:13:25Z xclerc $
 
 BASEDIR=${PWD}
 NO_PRINT=`($(MAKE) empty --no-print-directory > /dev/null 2>&1) && echo '--no-print-directory' || echo ''`
index dbcb3e4fda36693ae883261c7985c502a9f86682..146785cb28d123b7d7b035b95ce52a4072ae5d15 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: alloc.ml 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (* Random allocation test *)
 
index b6fc63c207f83c30296e7c9859ccef0cb3409f95..11518f6efb132345fb3c8fe1f7c10cc9d2f56835 100644 (file)
@@ -1,4 +1,4 @@
-# $Id$
+# $Id: Makefile 12239 2012-03-14 10:22:02Z xclerc $
 
 compile: compile-targets
 
index aa8933a7899cc21d55acdefd41c0a6942521c2dd..b1ae33d48a0f985d5dccca5a6a3b73a6a3b3a9ba 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: testing.ml 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (* Testing auxilliaries. *)
 
index 18b2ea0376528a3fe417638e3d431a83d578410f..866193ff2717731089173df3facf5c502ad7e12d 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: testing.mli 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (* Testing auxilliaries. *)
 
index 983f82c2fcae14200a01db1d250955f9fa679dc7..16defec77b0d0b5335a8700015c81e7ed7648ee9 100644 (file)
@@ -1,4 +1,4 @@
-# $Id$
+# $Id: Makefile.common 12551 2012-06-04 11:40:59Z doligez $
 
 TOPDIR=$(BASEDIR)/..
 
@@ -7,15 +7,15 @@ include $(TOPDIR)/config/Makefile
 DIFF=diff -q
 BOOTDIR=$(TOPDIR)/boot
 OCAMLRUN=$(BOOTDIR)/ocamlrun$(EXE)
-OCAML=$(OCAMLRUN) $(TOPDIR)/ocaml$(EXE) -I $(TOPDIR)/stdlib
-OCAMLC=$(OCAMLRUN) $(TOPDIR)/ocamlc$(EXE) -I $(TOPDIR)/stdlib
-OCAMLOPT=$(OCAMLRUN) $(TOPDIR)/ocamlopt$(EXE) -I $(TOPDIR)/stdlib
-OCAMLDOC=$(OCAMLRUN) $(TOPDIR)/ocamldoc/ocamldoc$(EXE)
-OCAMLLEX=$(OCAMLRUN) $(TOPDIR)/lex/ocamllex$(EXE)
-OCAMLMKLIB=$(OCAMLRUN) $(TOPDIR)/tools/ocamlmklib$(EXE)
+OCAML=$(OCAMLRUN) $(TOPDIR)/ocaml -I $(TOPDIR)/stdlib
+OCAMLC=$(OCAMLRUN) $(TOPDIR)/ocamlc -I $(TOPDIR)/stdlib
+OCAMLOPT=$(OCAMLRUN) $(TOPDIR)/ocamlopt -I $(TOPDIR)/stdlib
+OCAMLDOC=$(OCAMLRUN) $(TOPDIR)/ocamldoc/ocamldoc
+OCAMLLEX=$(OCAMLRUN) $(TOPDIR)/lex/ocamllex
+OCAMLMKLIB=$(OCAMLRUN) $(TOPDIR)/tools/ocamlmklib
 OCAMLYACC=$(TOPDIR)/yacc/ocamlyacc$(EXE)
 OCAMLBUILD=$(TOPDIR)/_build/ocamlbuild/ocamlbuild.native
-DUMPOBJ=$(OCAMLRUN) $(TOPDIR)/tool/dumpobj$(EXE)
+DUMPOBJ=$(OCAMLRUN) $(TOPDIR)/tool/dumpobj
 BYTECODE_ONLY=`if [ "$(ARCH)" = "none" -o "$(ASM)" = "none" ]; then echo 'YES'; else echo ''; fi`
 #COMPFLAGS=
 #FORTRAN_COMPILER=
index 9016dab3fe84189d1b7492ec887a68cae6538469..7501aeabb7f7c6897ff6f9a6135d01a399994ad1 100644 (file)
@@ -1,4 +1,4 @@
-# $Id$
+# $Id: Makefile.okbad 11965 2011-12-28 08:47:03Z xleroy $
 
 default: compile
 
index ca07bf16da726e719745610da134149ba68854e5..7b2521604da14b7b6f38ffb1c3e4db6f6741decd 100644 (file)
@@ -1,4 +1,4 @@
-# $Id$
+# $Id: Makefile.one 12551 2012-06-04 11:40:59Z doligez $
 
 CMI_FILES=$(MODULES:=.cmi)
 CMO_FILES=$(MODULES:=.cmo)
@@ -24,8 +24,10 @@ compile: $(ML_FILES) $(CMO_FILES) $(CMX_FILES) $(MAIN_MODULE).cmo $(MAIN_MODULE)
        @for file in $(C_FILES); do \
          $(NATIVECC) $(NATIVECCCOMPOPTS) -c -I$(TOPDIR)/byterun $$file.c; \
        done;
+       @rm -f program.byte program.byte.exe
        @$(OCAMLC) $(ADD_COMPFLAGS) $(ADD_CFLAGS) -o program.byte $(O_FILES) $(CMA_FILES) $(CMO_FILES) $(ADD_CMO_FILES) $(MAIN_MODULE).cmo
        @if [ -z "$(BYTECODE_ONLY)" ]; then \
+         rm -f program.native program.native.exe; \
          $(OCAMLOPT) $(ADD_COMPFLAGS) -o program.native $(O_FILES) $(CMXA_FILES) $(CMX_FILES) $(ADD_CMX_FILES) $(MAIN_MODULE).cmx; \
        fi
 
index e5bd430a1ca8f4360d6c24b5363e6c5a1dcd2dff..66a7674b793b70a7682aba36c0e2c51efd7a2ea1 100644 (file)
@@ -1,4 +1,4 @@
-# $Id$
+# $Id: Makefile.several 12551 2012-06-04 11:40:59Z doligez $
 
 CC=$(NATIVECC) $(NATIVECCCOMPOPTS)
 FC=$(FORTAN_COMPILER)
@@ -41,6 +41,7 @@ run-all:
 
 run-file:
        @printf " $(DESC)"
+       @rm -f program program.exe
        @$(COMP) $(COMPFLAGS) $(FILE) -o program
        @if [ -f `basename $(FILE) ml`runner ]; then \
          sh `basename $(FILE) ml`runner; \
@@ -56,4 +57,4 @@ run-file:
 promote: defaultpromote
 
 clean: defaultclean
-       @rm -f *.result ./program
+       @rm -f *.result ./program program.exe
index 532763f431c9449f58fa2e74ec85d42657893e3b..b50dc1bf374a6663f724efef7949229d5190fef7 100644 (file)
@@ -1,4 +1,4 @@
-# $Id$
+# $Id: Makefile.toplevel 11965 2011-12-28 08:47:03Z xleroy $
 
 default:
        @for file in *.ml; do \
index 2161b856e45ff9386b7b144d743e59be65ff8c0a..fb1af49c965749e4713cce856df2c9b37b22b427 100644 (file)
@@ -33,6 +33,7 @@ OTHEROBJS=\
   $(TOPDIR)/typing/subst.cmo \
   $(TOPDIR)/typing/predef.cmo \
   $(TOPDIR)/typing/datarepr.cmo \
+  $(TOPDIR)/typing/cmi_format.cmo \
   $(TOPDIR)/typing/env.cmo \
   $(TOPDIR)/typing/typedtree.cmo \
   $(TOPDIR)/typing/ctype.cmo \
@@ -43,6 +44,7 @@ OTHEROBJS=\
   $(TOPDIR)/typing/includemod.cmo \
   $(TOPDIR)/typing/parmatch.cmo \
   $(TOPDIR)/typing/typetexp.cmo \
+  $(TOPDIR)/typing/cmt_format.cmo \
   $(TOPDIR)/typing/stypes.cmo \
   $(TOPDIR)/typing/typecore.cmo \
   $(TOPDIR)/typing/typedecl.cmo \
index 10e33886374f58f47047ae59d4e122b36de12fbc..1caf0c6be21cad4ca38ac6e06723bd022b29e3dd 100644 (file)
@@ -10,7 +10,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: alpha.S 11156 2011-07-27 14:17:02Z doligez $ */
 
         .globl  call_gen_code
         .ent    call_gen_code
index 26db8722a969954a411c472eecb046f1cc89e2d4..b71e79658f0e152c4a0305fe311293c63500f3c1 100644 (file)
@@ -10,7 +10,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: amd64.S 11156 2011-07-27 14:17:02Z doligez $ */
 
 #ifdef SYS_macosx
 #define ALIGN 4
index a8bc613c77e2e33583d2ee0c1ff6e6c508124ad0..984e9e4000a72cd514846d518e1ca2d9920198ae 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: arith.cmm 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (* Regression test for arithmetic instructions *)
 
index 0fd1a29fe6660723a5c6217e881778c758b82267..be89133e58f86675321f4f59d19f745d90beb070 100644 (file)
@@ -10,7 +10,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: arm.S 11156 2011-07-27 14:17:02Z doligez $ */
 
         .text
 
index c20740c113f7ca23646845b3c341a67155c7a2ee..da8abdf4d586729e1bb3f1aa1bdea2f0946e0a9e 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: checkbound.cmm 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (function "checkbound2" (x: int y: int)
   (checkbound x y))
index d21260448b062a7e65c1a8d7356f1de1aa80dc69..fba4e329250de4b1f6d8e8783d6b3683fb7f8d38 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: fib.cmm 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (function "fib" (n: int)
   (if (< n 2)
index 02f457dc75ac94ede75673f95e36820a8d6e01c0..87a96da9446a7118174e916ec4f7a9f8f46e943d 100644 (file)
@@ -10,7 +10,7 @@
 ;*                                                                   *
 ;*********************************************************************
 
-; $Id$
+; $Id: hppa.S 11156 2011-07-27 14:17:02Z doligez $
 ; Must be preprocessed by cpp
 
 #ifdef SYS_hpux
index fc75b1f1f8157083d92c27928654a59f383d925a..fdda4de4ce08d940afc5740cb34bfa78e7059320 100644 (file)
@@ -10,7 +10,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: i386.S 11156 2011-07-27 14:17:02Z doligez $ */
 
 /* Linux with ELF binaries does not prefix identifiers with _.
    Linux with a.out binaries, FreeBSD, and NextStep do. */
index 75ae8ce737db9683c9185d6876c7426f17ab6796..4e9b62f7d256149acc9416d3571f3b28bb027ddb 100644 (file)
@@ -10,7 +10,7 @@
 ;                                                                     
 ;*********************************************************************
 
-; $Id$
+; $Id: i386nt.asm 11156 2011-07-27 14:17:02Z doligez $
 
        .386
        .MODEL FLAT
index 028c622f9d31551b87c76582f5d62a27822c5985..c5a44117559826d5365828a88a5f3b9f435c3b35 100644 (file)
@@ -10,7 +10,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: ia64.S 12149 2012-02-10 16:15:24Z doligez $ */
 
 #define ST8OFF(a,b,d) st8 [a] = b, d
 #define LD8OFF(a,b,d) ld8 a = [b], d
index 504bb0db5a146084e61affc7b466281d1db364ee..771fdc9c982b0c8a10aad2b544d05af5b1dfb7dd 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: integr.cmm 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (function "square" (x: float)
    ( *f x x))
index a4998ca1274c75bd2528a539136da115d487aa98..30a9c9a55ae497c172396453dc9092a7eaad4708 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: lexcmm.mli 11156 2011-07-27 14:17:02Z doligez $ *)
 
 val token: Lexing.lexbuf -> Parsecmm.token
 
index eb2f2c8296f99260bcb56383d028e0d5ebcbea85..1e0072651682cfca00babf0f1e415bc03999068e 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: lexcmm.mll 11156 2011-07-27 14:17:02Z doligez $ *)
 
 {
 open Parsecmm
index f15ddcbb40915b9c458bdb44f32973190793d800..409f8d32e9b1642dd7d6a51260951828519fe38b 100644 (file)
@@ -10,7 +10,7 @@
 |*                                                                     *
 |***********************************************************************
 
-| $Id$
+| $Id: m68k.S 11156 2011-07-27 14:17:02Z doligez $
 
 | call_gen_code is used with the following types:
 |       unit -> int
index 33fd8a98a48e5452eff5c537a532cebc4e9ebd4a..1a3660e9772caec92db37ab50398635dcc0a926a 100644 (file)
@@ -10,7 +10,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: main.c 11156 2011-07-27 14:17:02Z doligez $ */
 
 #include <stddef.h>
 #include <stdio.h>
index 0555daed8d9d8f52c1fa3f7d61924d263f7a12d9..607a9b18d8ad4819f8b29564ca10c116f37e0a0e 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: main.ml 11156 2011-07-27 14:17:02Z doligez $ *)
 
 open Clflags
 
index a71be4961cf25624f89a62f198783dcc9bb7aebe..e1b7ded45a66cc7e5116293ad8d7858123a14eaa 100644 (file)
@@ -10,7 +10,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: mainarith.c 11156 2011-07-27 14:17:02Z doligez $ */
 
 #include <stdio.h>
 #include <math.h>
index ec6931bf7199cf67c9fc7ab86c20ae20e208c80e..7a9dc3f85394271ff926ce921211609d019fb4c2 100644 (file)
@@ -10,7 +10,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: mips.s 11156 2011-07-27 14:17:02Z doligez $ */
 
         .globl  call_gen_code
         .ent    call_gen_code
index b0aeec879fdb4b92da5789961ec4de076c4ba66d..70337e256f9eaa6eb29a4a67280dca651fd584bc 100644 (file)
@@ -10,7 +10,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: parsecmm.mly 12235 2012-03-14 09:24:19Z xleroy $ */
 
 /* A simple parser for C-- */
 
index 5aa2ea05b5d8c2084f17d38bc482be2a9d5334d2..1895c6475b58d1d76dbc421a8a8cdcbc73f70b76 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: parsecmmaux.ml 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (* Auxiliary functions for parsing *)
 
index d488db1f5d19cd5b8a4c229890f73a80a13f00db..f3b7238331f5212a16f664bbeaf69a378a7c4673 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: parsecmmaux.mli 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (* Auxiliary functions for parsing *)
 
index 0752100f59929fac11d7903a87913cd91130a757..b634f3c0484fea1a18866b04d570d7d362532689 100644 (file)
@@ -10,7 +10,7 @@
 #*                                                                   *
 #*********************************************************************
 
-# $Id$
+# $Id: power-aix.S 12149 2012-02-10 16:15:24Z doligez $
 
         .csect  .text[PR]
 
index 7fee4aa1bf4db34463717c03330ad8e3f479e184..ee5d9207e9d9c3cbb1caee6ebe4e9937cdf4bba6 100644 (file)
@@ -10,7 +10,7 @@
 /*                                                                   */
 /*********************************************************************/
 
-/* $Id$ */
+/* $Id: power-elf.S 11156 2011-07-27 14:17:02Z doligez $ */
 
 /* Save and restore all callee-save registers */
 /* GPR 14 at sp+16 ... GPR 31 at sp+84
index 06788a8c47765670ea553fea951b0e4da0da309e..3ad2a72db5b548a22cc8e81b4d87be16eeae927e 100644 (file)
@@ -10,7 +10,7 @@
 /*                                                                   */
 /*********************************************************************/
 
-/* $Id$ */
+/* $Id: power-rhapsody.S 11156 2011-07-27 14:17:02Z doligez $ */
 
 /* Save and restore all callee-save registers */
 /* GPR 14 at sp+16 ... GPR 31 at sp+84
index 21b1add57096c4e96cdf7aa362a5c00abf69c8d5..b82c2f993e37aeff5294b285379aea2e447c5212 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: quicksort.cmm 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (function "quicksort" (lo: int hi: int a: addr)
   (if (< lo hi)
index 08988573afd3c2889f2eaa3bdd11b42f87dd9008..fcea6043016e85c7eef1ab64b9df37935bddf95b 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: quicksort2.cmm 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (function "cmp" (i: int j: int)
   (- i j))
index af4d39fc6ad0724cdc80df1d6b493a8dde3d0427..fb67bde42ea3b08665e2e7e089448d33607a5f1d 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: soli.cmm 11156 2011-07-27 14:17:02Z doligez $ *)
 
 ("d1": int 0 int 1
  "d2": int 1 int 0
index 5f83bf0f220130f2ec1920596e39c267fd64970e..7d17548d784501a64767e2d4f3255d4033f688b5 100644 (file)
@@ -10,7 +10,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: sparc.S 11156 2011-07-27 14:17:02Z doligez $ */
 
 #ifndef SYS_solaris
 #define Call_gen_code _call_gen_code
index 5ee234d9fffb58bcc1b7f97e07549e6ab0832433..6f3501e220c94e61c1d17a865ac181ee01c720f8 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: tagged-fib.cmm 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (function "fib" (n: int)
   (if (< n 5)
index 6f7562878ea116025964e8f13a2c3a6c6b00e103..d03b00a879529486c1a92f99392b78fb0478022b 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: tagged-integr.cmm 11156 2011-07-27 14:17:02Z doligez $ *)
 
 ("res_square": skip 8)
 ("h": skip 8)
index 73fca1017107025cf64182971abf6886974ef4dd..3c0fde0777e1347df1d54d52a689055ef59ee294 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: tagged-quicksort.cmm 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (function "quick" (lo: int hi: int a: addr)
   (if (< lo hi)
index 2bda22385ec05ffaac63fe55d668702b17b999d9..c7c1702eb63d0fb08a4628dd0bf36217b11c4cea 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: tagged-tak.cmm 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (function "tak" (x:int y:int z:int)
   (if (> x y)
index 26bbd96817cbaa68525466c2a6c198e35f3c5262..a2f2249068ee78b584e160a351a4787b62e4a449 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: tak.cmm 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (function "tak" (x:int y:int z:int)
   (if (> x y)
index f843e708465835a637cb27ad7afb26e9fd6de910..c457054dc78ade9e22bfebf6b315dcf3693fc8ae 100644 (file)
@@ -11,8 +11,8 @@ let test msg funct f1 f2 =
 (* File copy with constant-sized chunks *)
 
 let copy_file sz infile ofile =
-  let ic = open_in infile in
-  let oc = open_out ofile in
+  let ic = open_in_bin infile in
+  let oc = open_out_bin ofile in
   let buffer = String.create sz in
   let rec copy () =
     let n = input ic buffer 0 sz in
@@ -27,8 +27,8 @@ let copy_file sz infile ofile =
 (* File copy with random-sized chunks *)
 
 let copy_random sz infile ofile =
-  let ic = open_in infile in
-  let oc = open_out ofile in
+  let ic = open_in_bin infile in
+  let oc = open_out_bin ofile in
   let buffer = String.create sz in
   let rec copy () =
     let s = 1 + Random.int sz in
@@ -44,8 +44,8 @@ let copy_random sz infile ofile =
 (* File copy line per line *)
 
 let copy_line infile ofile =
-  let ic = open_in infile in
-  let oc = open_out ofile in
+  let ic = open_in_bin infile in
+  let oc = open_out_bin ofile in
   try
     while true do
       output_string oc (input_line ic); output_char oc '\n'
@@ -73,7 +73,7 @@ let copy_seek chunksize infile ofile =
 (* Create long lines of text *)
 
 let make_lines ofile =
-  let oc = open_out ofile in
+  let oc = open_out_bin ofile in
   for i = 1 to 256 do
     output_string oc (String.make (i*64) '.'); output_char oc '\n'
   done;
index 77d30ac34d71dca19458cf535ac2144dc4071b72..1b129dfb1f47a090be25caa6afab5b52d5f467fa 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                       *)
 (*************************************************************************)
 
-(* $Id$
+(* $Id: tformat.ml 11156 2011-07-27 14:17:02Z doligez $
 
 A testbed file for the module Format.
 
index 318e98cb11a504a94f5e8143538f14b9410b6bd3..fcab2635747fd72153eb5eb22fc97fe37a2a12c4 100644 (file)
@@ -1,4 +1,4 @@
-(* $Id$
+(* $Id: length.ml 11123 2011-07-20 09:17:07Z doligez $
 
 A testbed file for private type abbreviation definitions.
 
index 6cd7e12142c613901519a4d62bd9c7d3a729ce39..d1ca0f0a97ca9fd38d54581710b7b4c969afd514 100644 (file)
@@ -1,4 +1,4 @@
-(* $Id$
+(* $Id: length.mli 11123 2011-07-20 09:17:07Z doligez $
 
 A testbed file for private type abbreviation definitions.
 
index f1fd91af948f0600abc8b6a8aaa8842803f906aa..9fd5c90b092388d0d128063ec0b4ae112864d512 100644 (file)
@@ -1,4 +1,4 @@
-(* $Id$
+(* $Id: tlength.ml 11123 2011-07-20 09:17:07Z doligez $
 
 A testbed file for private type abbreviation definitions.
 
index 0b101ffa1f919c970bd0b203f35419d8a24e6d4e..23e571c3fc2d24a8d84fb290339f6da6696a05dd 100644 (file)
@@ -1,12 +1,25 @@
 let _ =
-  print_int 1000000000; print_newline();
-  print_int 10000000000; print_newline();
-  print_int 100000000000; print_newline();
-  print_int 1000000000000; print_newline();
-  print_int 10000000000000; print_newline();
-  print_int 100000000000000; print_newline();
-  print_int 1000000000000000; print_newline();
-  print_int 10000000000000000; print_newline();
-  print_int 100000000000000000; print_newline();
-  print_int 1000000000000000000; print_newline()
-
+  match Sys.word_size with
+  | 32 ->
+     print_int (1 * 1000000000); print_newline();
+     print_string "10000000000"; print_newline();
+     print_string "100000000000"; print_newline();
+     print_string "1000000000000"; print_newline();
+     print_string "10000000000000"; print_newline();
+     print_string "100000000000000"; print_newline();
+     print_string "1000000000000000"; print_newline();
+     print_string "10000000000000000"; print_newline();
+     print_string "100000000000000000"; print_newline();
+     print_string "1000000000000000000"; print_newline();
+  | 64 ->
+     print_int (1 * 1000000000); print_newline();
+     print_int (10 * 1000000000); print_newline();
+     print_int (100 * 1000000000); print_newline();
+     print_int (1000 * 1000000000); print_newline();
+     print_int (10000 * 1000000000); print_newline();
+     print_int (100000 * 1000000000); print_newline();
+     print_int (1000000 * 1000000000); print_newline();
+     print_int (10000000 * 1000000000); print_newline();
+     print_int (100000000 * 1000000000); print_newline();
+     print_int (1000000000 * 1000000000); print_newline()
+  | _ -> assert false
index ffbaa041cb000163ea29d493c8924296aebbe068..932ecbe7ae2919d75016665ee280f208829f65c1 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: maps.ml 11156 2011-07-27 14:17:02Z doligez $ *)
 
 module IntMap = Map.Make(struct type t = int let compare x y = x-y end)
 
index f2fa158c38c683849f2c8b2e14d147180a07b759..918f1ac690c6b9bf2a2eade9c19770b1a85a28ee 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: sets.ml 11156 2011-07-27 14:17:02Z doligez $ *)
 
 module IntSet = Set.Make(struct type t = int let compare x y = x-y end)
 
index 28ed9af6f495f7d377b299a7448fbe7322ff31a2..85901400eb56162a478baad4d0da80d29b740578 100644 (file)
@@ -384,12 +384,6 @@ let _ =
   test 12 true (test_blit_fill complex64 [Complex.zero; Complex.one; Complex.i]
                              Complex.i 1 1);
 
-  testing_function "release";
-  let a = from_list int [1;2;3;4;5] in
-  test 1 (Array1.dim a) 5;
-  Array1.release a;
-  test 2 (Array1.dim a) 0;
-  
 (* Bi-dimensional arrays *)
 
   print_newline();
@@ -539,14 +533,6 @@ let _ =
   test 7 (Array2.slice_right a 2) (from_list_fortran int [1002;2002;3002;4002;5002]);
   test 8 (Array2.slice_right a 3) (from_list_fortran int [1003;2003;3003;4003;5003]);
 
-  testing_function "release";
-  let a = (make_array2 int c_layout 0 4 6 id) in
-  test 1 (Array2.dim1 a) 4;
-  test 2 (Array2.dim2 a) 6;
-  Array2.release a;
-  test 3 (Array2.dim1 a) 0;
-  test 4 (Array2.dim2 a) 0;
-
 (* Tri-dimensional arrays *)
 
   print_newline();
@@ -668,16 +654,6 @@ let _ =
   test 6 (Array3.slice_right_1 a 1 2) (from_list_fortran int [112;212;312]);
   test 7 (Array3.slice_right_1 a 3 1) (from_list_fortran int [131;231;331]);
 
-  testing_function "release";
-  let a = (make_array3 int c_layout 0 4 5 6 id) in
-  test 1 (Array3.dim1 a) 4;
-  test 2 (Array3.dim2 a) 5;
-  test 3 (Array3.dim3 a) 6;
-  Array3.release a;
-  test 4 (Array3.dim1 a) 0;
-  test 5 (Array3.dim2 a) 0;
-  test 6 (Array3.dim3 a) 0;
-
 (* Reshaping *)
   print_newline();
   testing_function "------ Reshaping --------";
@@ -741,7 +717,6 @@ let _ =
     let a = Array1.map_file fd float64 c_layout true 10000 in
     Unix.close fd;
     for i = 0 to 9999 do a.{i} <- float i done;
-    Array1.release a;
     let fd = Unix.openfile mapped_file [Unix.O_RDONLY] 0 in
     let b = Array2.map_file fd float64 fortran_layout false 100 (-1) in
     Unix.close fd;
@@ -752,8 +727,7 @@ let _ =
       done
     done;
     test 1 !ok true;
-    b.{50,50} <- (-1.0);         (* private mapping -> no effect on file *)
-    Array2.release b;
+    b.{50,50} <- (-1.0);
     let fd = Unix.openfile mapped_file [Unix.O_RDONLY] 0 in
     let c = Array2.map_file fd float64 c_layout false (-1) 100 in
     Unix.close fd;
@@ -764,7 +738,6 @@ let _ =
       done
     done;
     test 2 !ok true;
-    Array2.release c;
     let fd = Unix.openfile mapped_file [Unix.O_RDONLY] 0 in
     let c = Array2.map_file fd ~pos:800L float64 c_layout false (-1) 100 in
     Unix.close fd;
@@ -775,7 +748,6 @@ let _ =
       done
     done;
     test 3 !ok true;
-    Array2.release c;
     let fd = Unix.openfile mapped_file [Unix.O_RDONLY] 0 in
     let c = Array2.map_file fd ~pos:79200L float64 c_layout false (-1) 100 in
     Unix.close fd;
@@ -783,13 +755,12 @@ let _ =
     for j = 0 to 99 do
       if c.{0,j} <> float (100 * 99 + j) then ok := false
     done;
-    test 4 !ok true;
-    Array2.release c;
-    test 5 (Array2.dim1 c) 0;        
-    test 5 (Array2.dim2 c) 0
+    test 4 !ok true
   end;
-  (* Win32 doesn't let us erase the file if any mapping on the file is
-     still active.  Normally, they have all been released explicitly. *)
+  (* Force garbage collection of the mapped bigarrays above, otherwise
+     Win32 doesn't let us erase the file.  Notice the begin...end above
+     so that the VM doesn't keep stack references to the mapped bigarrays. *)
+  Gc.full_major();
   Sys.remove mapped_file;
 
   ()
index def96fe4c50bdd15cdcbe77f885da386957a7c2d..bdc7beae23f589f8b61ed1dfc0b975af600cdcda 100644 (file)
@@ -17,8 +17,6 @@ sub
  1... 2... 3... 4... 5... 6... 7... 8... 9...
 blit, fill
  1... 2... 3... 4... 5... 6... 7... 8... 9... 10... 11... 12...
-release
- 1... 2...
 
 ------ Array2 --------
 
@@ -34,8 +32,6 @@ sub
  1... 2...
 slice
  1... 2... 3... 4... 5... 6... 7... 8...
-release
- 1... 2... 3... 4...
 
 ------ Array3 --------
 
@@ -49,8 +45,6 @@ dim
  1... 2... 3... 4... 5... 6...
 slice1
  1... 2... 3... 4... 5... 6... 7...
-release
- 1... 2... 3... 4... 5... 6...
 
 ------ Reshaping --------
 
@@ -64,4 +58,4 @@ reshape_2
 output_value/input_value
  1... 2... 3... 4... 5... 6... 7... 8... 9... 10... 11... 12... 13... 14...
 map_file
- 1... 2... 3... 4... 5... 5...
+ 1... 2... 3... 4...
index 10c22f1db44710e081bfd3238e0a035f9792668d..bd010e924db6390c4ae71202ddd2b6784cca067d 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: fftba.ml 11156 2011-07-27 14:17:02Z doligez $ *)
 
 open Bigarray
 
index 098ab51e1a5012e1fddcabee472c1c1b905a9a60..789e3e0531e68d71b654c5335ef4d00901f35fd5 100644 (file)
@@ -1,4 +1,5 @@
 main
 static
 custom
+custom.exe
 marshal.data
index c65b044e8edf4d3f870bd2f4b36f619682357782..b202772728e38d3807fd214e5dd896b673615877 100644 (file)
@@ -14,7 +14,7 @@ prepare:
 
 bytecode:
        @printf " ... testing 'bytecode':"
-       @if [ ! `which $(CSC) > /dev/null` ]; then \
+       @if [ ! `which $(CSC) > /dev/null 2>&1` ]; then \
          echo " => passed"; \
        else \
          $(OCAMLC) -output-obj -o main.dll dynlink.cma main.ml entry.c; \
@@ -25,7 +25,7 @@ bytecode:
 
 bytecode-dll:
        @printf " ... testing 'bytecode-dll':"
-       @if [ ! `which $(CSC) > /dev/null` ]; then \
+       @if [ ! `which $(CSC) > /dev/null 2>&1` ]; then \
          echo " => passed"; \
        else \
          $(OCAMLC) -output-obj -o main_obj.$(O) dynlink.cma entry.c main.ml; \
@@ -37,7 +37,7 @@ bytecode-dll:
 
 native:
        @printf " ... testing 'native':"
-       @if [ ! `which $(CSC) > /dev/null` ]; then \
+       @if [ ! `which $(CSC) > /dev/null 2>&1` ]; then \
          echo " => passed"; \
        else \
          $(OCAMLOPT) -output-obj -o main.dll dynlink.cmxa entry.c main.ml; \
@@ -48,7 +48,7 @@ native:
 
 native-dll:
        @printf " ... testing 'native-dll':"
-       @if [ ! `which $(CSC) > /dev/null` ]; then \
+       @if [ ! `which $(CSC) > /dev/null 2>&1` ]; then \
          echo " => passed"; \
        else \
          $(OCAMLOPT) -output-obj -o main_obj.$(O) dynlink.cmxa entry.c main.ml; \
index 601ed1ffb669b99e18c9d7eb14a11d67c4aa77d2..775ccb418fba59bc89cb7f0e7f4c5874dcf7d637 100644 (file)
@@ -1,4 +1,5 @@
 mypack.pack.s
 result
 main
+main.exe
 marshal.data
index 84a71beb77395493fc668237dbf2aa725009c750..6bed1fd5e8152c57fdf91c07020b969a97b95ffe 100644 (file)
@@ -78,6 +78,7 @@ module HofM (M: Map.S) : Hashtbl.S with type key = M.key =
     type 'a t = (key, 'a) Hashtbl.t
     let create s = Hashtbl.create s
     let clear = Hashtbl.clear
+    let reset = Hashtbl.reset
     let copy = Hashtbl.copy
     let add = Hashtbl.add
     let remove = Hashtbl.remove
@@ -189,4 +190,4 @@ let _ =
   TSP.test (pair_data d);
   printf "-- Lists of strings\n%!";
   TSL.test (list_data d)
+
index 5af1e252e3537854dc99d4e7d93651093f3e2b6c..af59734b20180a6a7b73d7cd81d8b04de642f971 100644 (file)
@@ -1,5 +1,7 @@
 (* Test for output_value / input_value *)
 
+let max_data_depth = 500000
+
 type t = A | B of int | C of float | D of string | E of char
        | F of t | G of t * t | H of int * t | I of t * float | J
 
@@ -425,6 +427,103 @@ let rec check_big n x =
     | _       -> false
   end
 
+(* Test for really deep data structures *)
+let test_deep () =
+  (* Right-leaning *)
+  let rec loop acc i =
+    if i < max_data_depth
+    then loop (i :: acc) (i+1)
+    else acc in
+  let x = loop [] 0 in
+  let s = Marshal.to_string x [] in
+  test 425 (Marshal.from_string s 0 = x);
+  (* Left-leaning *)
+  let rec loop acc i =
+    if i < max_data_depth
+    then loop (G(acc, B i)) (i+1)
+    else acc in
+  let x = loop A 0 in
+  let s = Marshal.to_string x [] in
+  test 426 (Marshal.from_string s 0 = x)
+
+(* Test for objects *)
+class foo = object (self : 'self) 
+  val data1 = "foo"
+  val data2 = "bar"
+  val data3 = 42L
+  method test1 = data1 ^ data2
+  method test2 = false
+  method test3 = self#test1
+  method test4 = data3
+end
+
+class bar = object (self : 'self)
+  inherit foo as super
+  val! data2 = "test5"
+  val data4 = "test3"
+  val data5 = "test4"
+  method test1 = 
+    data1 
+  ^ data2 
+  ^ data4 
+  ^ data5 
+  ^ Int64.to_string self#test4
+end
+
+class foobar = object (self : 'self)
+  inherit foo as super
+  inherit! bar
+end
+
+(* Test for objects *)
+let test_objects () =
+  let x = new foo in
+  let s = Marshal.to_string x [Marshal.Closures] in
+  let x = Marshal.from_string s 0 in
+  test 500 (x#test1 = "foobar");
+  test 501 (x#test2 = false);
+  test 502 (x#test3 = "foobar");
+  test 503 (x#test4 = 42L);
+  let x = new bar in
+  let s = Marshal.to_string x [Marshal.Closures] in
+  let x = Marshal.from_string s 0 in
+  test 504 (x#test1 = "footest5test3test442");
+  test 505 (x#test2 = false);
+  test 506 (x#test3 = "footest5test3test442");
+  test 507 (x#test4 = 42L);
+  let x0 = new foobar in
+  let s = Marshal.to_string x0 [Marshal.Closures] in
+  let x = Marshal.from_string s 0 in
+  test 508 (x#test1 = "footest5test3test442");
+  test 509 (x#test2 = false);
+  test 510 (x#test3 = "footest5test3test442");
+  test 511 (x#test4 = 42L);
+  test 512 (Oo.id x = Oo.id x0 + 1)     (* PR#5610 *)
+
+(* Test for infix pointers *)
+let test_infix () =
+  let t = true and
+      f = false in
+  let rec odd n =
+    if n = 0
+    then f
+    else even (n-1)
+  and even n =
+    if n = 0
+    then t
+    else odd (n-1)
+  in
+  let s = Marshal.to_string (odd, even) [Marshal.Closures] in
+  let (odd', even': (int -> bool) * (int -> bool)) = Marshal.from_string s 0 in
+  test 600 (odd' 41 = true);
+  test 601 (odd' 41 = odd 41);
+  test 602 (odd' 142 = false);
+  test 603 (odd' 142 = odd 142);
+  test 604 (even' 41 = false);
+  test 605 (even' 41 = even 41);
+  test 606 (even' 142 = true);
+  test 607 (even' 142 = even 142)
+  
 let main() =
   if Array.length Sys.argv <= 2 then begin
     test_out "intext.data"; test_in "intext.data";
@@ -433,7 +532,10 @@ let main() =
     test_string();
     test_buffer();
     test_size();
-    test_block()
+    test_block();
+    test_deep();
+    test_objects();
+    test_infix ()
   end else
   if Sys.argv.(1) = "make" then begin
     let n = int_of_string Sys.argv.(2) in
index 8def6706e75f8a3a34fa811eb5f032049f0c3c54..6933ef3512f9c71ec2b3d551f1d217f191fa7355 100644 (file)
@@ -147,3 +147,26 @@ Test 421 passed.
 Test 422 passed.
 Test 423 passed.
 Test 424 passed.
+Test 425 passed.
+Test 426 passed.
+Test 500 passed.
+Test 501 passed.
+Test 502 passed.
+Test 503 passed.
+Test 504 passed.
+Test 505 passed.
+Test 506 passed.
+Test 507 passed.
+Test 508 passed.
+Test 509 passed.
+Test 510 passed.
+Test 511 passed.
+Test 512 passed.
+Test 600 passed.
+Test 601 passed.
+Test 602 passed.
+Test 603 passed.
+Test 604 passed.
+Test 605 passed.
+Test 606 passed.
+Test 607 passed.
diff --git a/testsuite/tests/lib-scanf/.ignore b/testsuite/tests/lib-scanf/.ignore
new file mode 100644 (file)
index 0000000..a940814
--- /dev/null
@@ -0,0 +1 @@
+tscanf_data
index 64e144264791c31094fe056c766b0689efef04e3..98209011fae2ee58d3d7ae0792abd28b614e1a7d 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                       *)
 (*************************************************************************)
 
-(* $Id$
+(* $Id: tscanf.ml 12210 2012-03-08 19:52:03Z doligez $
 
 A testbed file for the module Scanf.
 
diff --git a/testsuite/tests/lib-scanf/tscanf_data b/testsuite/tests/lib-scanf/tscanf_data
deleted file mode 100644 (file)
index e4ae5b6..0000000
+++ /dev/null
@@ -1 +0,0 @@
-"Objective" -> "Caml";
index 0e368a924526e78f890a33b744035b0b6ef4e96a..e215ec6ed49cccdfd3d98851095008464b399b4c 100644 (file)
@@ -3,4 +3,4 @@ pid=$!
 sleep 3
 kill -INT $pid
 sleep 1
-kill -9 $pid || true
+kill -9 $pid 2>&- || true
index 5617bc4f9d23681d5b58dc0bb77cb4db7472bc15..0045504df98a44d26bd010d6f361f5c90ee89cee 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: equations.ml 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (****************** Equation manipulations *************)
 
index 0db190b858af2be928d319c2bfaf840353faabfd..01b9dcd2c364a9dcff781096242a7f518053ee4b 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: equations.mli 11156 2011-07-27 14:17:02Z doligez $ *)
 
 open Terms
 
index ff357b3ff86f88647b71a6ab7a31d66885b44cef..4cbc37719d87db3725ded32fe93e3ebb2b5221b6 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: kb.ml 11156 2011-07-27 14:17:02Z doligez $ *)
 
 open Terms
 open Equations
index 27aa2e9862e737b7a4fa61f7512cbee458899f6f..405aae5efe775acc9113e3176eb2d5dad9fe7826 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: kb.mli 11156 2011-07-27 14:17:02Z doligez $ *)
 
 open Terms
 open Equations
index 580b71504031de7a96cb5cd9b6b05b427e741400..8592ab0842b888ad96be6c0382ded1de8dd5d152 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: kbmain.ml 11156 2011-07-27 14:17:02Z doligez $ *)
 
 open Terms
 open Equations
index c81746e30931627d3276ed4946ec91a7d27f4765..245f9b406ae24119a085e0c9a892baa099441618 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: orderings.ml 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (*********************** Recursive Path Ordering ****************************)
 
index bb44f0832dc4eb3393e029647dfe33a7d06b9fb7..eb9dde132ff779b349f60e9af3f2222b6f7d59e5 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: orderings.mli 11156 2011-07-27 14:17:02Z doligez $ *)
 
 open Terms
 
index 86604f9c5a6592dbc340a6decc73f57ce50ade45..899750a27380979630a9551a2ec12223f2bc901b 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: terms.ml 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (****************** Term manipulations *****************)
 
index 0f6be4c8e8c655c209e9e29a277aeb354c06cd23..7dc6c286f6c898ad096422e995e17c41d240a189 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: terms.mli 11156 2011-07-27 14:17:02Z doligez $ *)
 
 type term = 
     Var of int
index f0a2ed3289ec9caf01e29431a8295b365b0b6df3..f513e5ad5b147efc079c5b0dfc983c4808e61029 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: fft.ml 11156 2011-07-27 14:17:02Z doligez $ *)
 
 let pi = 3.14159265358979323846
 
index d5d8fb4dd347485a6c20ed0113b79561323077cb..99cc56c1e82550e487228db591c89930376d039f 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: quicksort.ml 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (* Good test for loops. Best compiled with -unsafe. *)
 
index 163939860868e33ec259b731fc1ddb606f6fa4a3..05a220fbb4628a31ff5de48a0a842548c0aed65a 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: soli.ml 11156 2011-07-27 14:17:02Z doligez $ *)
 
 
 type peg = Out | Empty | Peg
index b2a3d7059917780d1bff6f14d345338ae47d3419..70c0c1f6fd7483ab352ca6c584afa8dd334f9490 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: bdd.ml 12149 2012-02-10 16:15:24Z doligez $ *)
 
 (* Translated to OCaml by Xavier Leroy *)
 (* Original code written in SML by ... *)
index 4f4e0813009ab3202e785ca36ff4bf9b013292f0..e3dafa38b4ae1c6d613b119f4431aea4ecc4b335 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: boyer.ml 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (* Manipulations over terms *)
 
index 4160004ea45f396df391b5c9631c7d0aa7d42475..7919670c9ef5b68ff725e08181c46fbdf3b745c7 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: fib.ml 11156 2011-07-27 14:17:02Z doligez $ *)
 
 let rec fib n =
   if n < 2 then 1 else fib(n-1) + fib(n-2)
index 872454401c56cc93173ce191e182f0180e11f2d8..29b209b49a1eeab2cbe737203486d36e7b0c006d 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: hamming.ml 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (* We cannot use bignums because we don't do custom runtimes, but
    int64 is a bit short, so we roll our own 37-digit numbers...
index b35360a8827d33a9e86bf0f5edd063d2da44a530..542c9579a8ae6bf07acb1ba3d6a1fa58653cdac5 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: nucleic.ml 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (* Use floating-point arithmetic *)
 
index 7f0295bb674fa5e4802beda878939d5dfbce9c30..c36f304d69bc1b885f08c8ed4431971fa93194ed 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: sieve.ml 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (* Eratosthene's sieve *)
 
index 7ae00beff9fcf11676e57c19477752122e3a233e..a457761f3218bd1242110d3ad5a2722dc506c956 100644 (file)
@@ -4476,4 +4476,4 @@ let main () =
 
 if not !Sys.interactive then Printexc.catch main ();;
 
-(* $Id$ *)
+(* $Id: sorts.ml 11123 2011-07-20 09:17:07Z doligez $ *)
index 8f9400ebdfa86b237608d7772bc5df43de7f3e43..deec040cbb8e86309a14e663cbfefdc31bdb1ab0 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: takc.ml 11156 2011-07-27 14:17:02Z doligez $ *)
 
 let rec tak x y z =
   if x > y then tak (tak (x-1) y z) (tak (y-1) z x) (tak (z-1) x y)
index 31e617eed70f3ff91edc53a0580a450a671fae58..cb7f7e66992be958746ec78bb59d0efa67964d55 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: taku.ml 11156 2011-07-27 14:17:02Z doligez $ *)
 
 let rec tak (x, y, z) =
   if x > y then tak(tak (x-1, y, z), tak (y-1, z, x), tak (z-1, x, y))
index 92ab5576d3cbe03162031a1fa8c054c0f9eee36e..047e130be1893be56faf03b1e0e0dcb6f3bcf3fb 100644 (file)
@@ -1,4 +1,4 @@
-(* $Id$ *)
+(* $Id: weaktest.ml 11123 2011-07-20 09:17:07Z doligez $ *)
 
 let debug = false;;
 
index c00fa9bfe167d67ce11e88794356afc1b3753938..c382320bf37d2d6fb660d4eed66b2a2ae430f27a 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: gram_aux.ml 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (* Auxiliaries for the parser. *)
 
index 8d1346f8e30ca8f8c9e29cd607d3d69dc63b6995..7e5a1dce0ffb920da774a536e3d70093a0c44c09 100644 (file)
@@ -10,7 +10,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: grammar.mly 11156 2011-07-27 14:17:02Z doligez $ */
 
 /* The grammar for lexer definitions */
 
index b6fdfee8dfe819e4d58cffff8bd01cd4f7684c7c..2381a98935d364daa6f4d46361aee747559faf07 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: input 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (* The lexical analyzer for lexer definitions. *)
 
index d4b6f9a96e311d79f5726d46ed2bd03a9574318a..a4eb6a967a24a339f08a59167b59e600e32f47c3 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: lexgen.ml 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (* Compiling a lexer definition *)
 
index a9337d4b9b1d6f6a452140f8af7f27b3d0a39382..1b8793734ed6a14b8dc4a23fb932dcb7dac1765b 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: main.ml 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (* The lexer generator. Command-line parsing. *)
 
index 141510c4451ee6d7f51f6f00e0cd5f0e5bceed42..9d3948a84fc7cf9c2c483bdda987468e9ae7921e 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: output.ml 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (* Generating a DFA as a set of mutually recursive functions *)
 
index 7c796f353c34d4e781f1ecdd7ec8d8106a345eb9..cdadcfe8268c76185075310b9d113cf1e68e0877 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: scan_aux.ml 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (* Auxiliaries for the lexical analyzer *)
 
index f791feaf24bfc2689a8cd1d036e1705311def46e..251f04c2d4f33d50b1f91c733b14b4c85c8b966d 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: scanner.mll 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (* The lexical analyzer for lexer definitions. *)
 
index e2ff025eee4530d125d4345aab106018e7f5561c..9a1e275b177dac1e94e657a6731605a96d83d48b 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: syntax.ml 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (* The shallow abstract syntax *)
 
index 557fc04ad2bd757f37b85e906f7d27704f0a8fa0..a55972832f61a94ed22ebb86e4a237e481291cd1 100644 (file)
@@ -1,4 +1,4 @@
-(* file $Id$ *)
+(* file $Id: lib.ml 11123 2011-07-20 09:17:07Z doligez $ *)
 
 external raise : exn -> 'a = "%raise"
 
@@ -43,4 +43,4 @@ external weak_get: 'a weak_t -> int -> 'a option = "caml_weak_get";;
 
 let x = 42;;
 
-(* eof $Id$ *)
+(* eof $Id: lib.ml 11123 2011-07-20 09:17:07Z doligez $ *)
index 5b053c00641dc3e0e180d0de3fd6a70ea9213d06..59a15398ba24fdbb166334ff7635a08761b5b1c4 100644 (file)
@@ -7,7 +7,7 @@ ocamlc -nostdlib -I ../../stdlib \
   t301-object.ml -o t301-object.byte
 
 ***)
-(* $Id$ *)
+(* $Id: t301-object.ml 11123 2011-07-20 09:17:07Z doligez $ *)
 
 
 class c = object (self)
@@ -26,4 +26,4 @@ let (x,y,z) = f () in
   if y <> 2 then raise Not_found;
   if z <> 4 then raise Not_found;;
 
-(**** eof $Id$ *)
+(**** eof $Id: t301-object.ml 11123 2011-07-20 09:17:07Z doligez $ *)
index d112f568cdce934bb6582dcc56c1dbd571e00270..2af4d3477006b03da3a2f43739d1339e127f8bd2 100644 (file)
@@ -2,11 +2,14 @@ BASEDIR=../..
 CUSTOM_MODULE=odoc_test
 ADD_COMPFLAGS=-I +ocamldoc
 
+DIFF_OPT=--strip-trailing-cr
+#DIFF_OPT=-b
+
 run: $(CUSTOM_MODULE).cmo
        @for file in t*.ml; do \
          printf " ... testing '$$file'"; \
          $(OCAMLDOC) -hide-warnings -g $(CUSTOM_MODULE).cmo -o `basename $$file ml`result $$file; \
-         $(DIFF) `basename $$file ml`reference `basename $$file ml`result > /dev/null && echo " => passed" || (echo " => failed" && exit 1); \
+         $(DIFF) $(DIFF_OPT) `basename $$file ml`reference `basename $$file ml`result > /dev/null && echo " => passed" || (echo " => failed" && exit 1); \
        done;
        @$(OCAMLDOC) -hide-warnings -html t*.ml 2>&1 | grep -v test_types_display || true
        @$(OCAMLDOC) -hide-warnings -latex t*.ml 2>&1 | grep -v test_types_display || true
index b5cc55626bfd833543d2bca7c23d3336c099c4bc..4dd76258f2e285a11ad522cf92f20b00e35d50f0 100644 (file)
@@ -9,7 +9,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: odoc_test.ml 12354 2012-04-13 13:49:23Z doligez $ *)
 
 (** Custom generator to perform test on ocamldoc. *)
 
index 9add15574f085c06eee00ba0f8fcc28747d1a387..5f42b70577daa3d318645ab760281a30482bdb48 100644 (file)
@@ -1,3 +1,4 @@
-include ../../makefiles/Makefile.toplevel
-include ../../makefiles/Makefile.common
+BASEDIR=../..
+include $(BASEDIR)/makefiles/Makefile.toplevel
+include $(BASEDIR)/makefiles/Makefile.common
 
index 83e7571f82626c88d20ed5a311a1aa7ffd4d1650..6823372692ce541339b75fb479f08c47becfcd65 100644 (file)
@@ -1,4 +1,4 @@
-(* $Id$ *)
+(* $Id: mixin.ml 11123 2011-07-20 09:17:07Z doligez $ *)
 
 open StdLabels
 open MoreLabels
index 34d6bf50a9ae70e53242c22e42362edd3eb85885..b10b8a03f1bc04f432bd5924fabde27716fe068f 100644 (file)
@@ -1,4 +1,4 @@
-(* $Id$ *)
+(* $Id: mixin2.ml 11123 2011-07-20 09:17:07Z doligez $ *)
 
 (* Full fledge version, using objects to structure code *)
 
index d8b037b7aa4a93d85af06056a15c28eac3f4d572..b6d15b9011989071b4e674405c073680566622bf 100644 (file)
@@ -1,4 +1,4 @@
-(* $Id$ *)
+(* $Id: mixin3.ml 11123 2011-07-20 09:17:07Z doligez $ *)
 
 (* Full fledge version, using objects to structure code *)
 
index 77c9d097023268b9fad8d3f84dd47cba5bad5912..afc170545f3f4fa07addd709ecc482529575b7d7 100644 (file)
@@ -1,11 +1,40 @@
+(* with module *)
+
 module type S = sig type t and s = t end;;
 module type S' = S with type t := int;;
 
 module type S = sig module rec M : sig end and N : sig end end;;
 module type S' = S with module M := String;;
 
+(* with module type *)
+(*
+module type S = sig module type T module F(X:T) : T end;;
+module type T0 = sig type t end;;
+module type S1 = S with module type T = T0;;
+module type S2 = S with module type T := T0;;
+module type S3 = S with module type T := sig type t = int end;;
+module H = struct
+  include (Hashtbl : module type of Hashtbl with
+           type statistics := Hashtbl.statistics
+           and module type S := Hashtbl.S
+           and module Make := Hashtbl.Make
+           and module MakeSeeded := Hashtbl.MakeSeeded
+           and module type SeededS := Hashtbl.SeededS
+           and module type HashedType := Hashtbl.HashedType
+           and module type SeededHashedType := Hashtbl.SeededHashedType)
+end;;
+*)
+
 (* A subtle problem appearing with -principal *)
 type -'a t
 class type c = object method m : [ `A ] t end;;
 module M : sig val v : (#c as 'a) -> 'a end =
   struct let v x = ignore (x :> c); x end;;
+
+(* PR#4838 *)
+
+let id = let module M = struct end in fun x -> x;;
+
+(* PR#4511 *)
+
+let ko = let module M = struct end in fun _ -> ();;
index 258b3ee3de48d0c2f47a35184bee6ef5fd063c54..c4ad0a05bc61eab1182f00c089dc6de5f3000db4 100644 (file)
@@ -1,9 +1,11 @@
 
-# module type S = sig type t and s = t end
+#     module type S = sig type t and s = t end
 # module type S' = sig type s = int end
 #   module type S = sig module rec M : sig  end and N : sig  end end
 # module type S' = sig module rec N : sig  end end
-#       type -'a t
+#     * * * * * * * * * * * * * * * *         type -'a t
 class type c = object method m : [ `A ] t end
 #   module M : sig val v : (#c as 'a) -> 'a end
+#       val id : 'a -> 'a = <fun>
+#       val ko : 'a -> unit = <fun>
 # 
index 258b3ee3de48d0c2f47a35184bee6ef5fd063c54..c4ad0a05bc61eab1182f00c089dc6de5f3000db4 100644 (file)
@@ -1,9 +1,11 @@
 
-# module type S = sig type t and s = t end
+#     module type S = sig type t and s = t end
 # module type S' = sig type s = int end
 #   module type S = sig module rec M : sig  end and N : sig  end end
 # module type S' = sig module rec N : sig  end end
-#       type -'a t
+#     * * * * * * * * * * * * * * * *         type -'a t
 class type c = object method m : [ `A ] t end
 #   module M : sig val v : (#c as 'a) -> 'a end
+#       val id : 'a -> 'a = <fun>
+#       val ko : 'a -> unit = <fun>
 # 
index 1f891253020950ace12becf6508d82944612fd84..34a5071d783d5780796a634a6111054f3273716a 100644 (file)
@@ -168,9 +168,9 @@ Error: This expression has type bool but an expression was expected of type
 Warning 13: the following instance variables are overridden by the class c :
   x
 The behaviour changed in ocaml 3.10 (previous behaviour was hiding.)
-Characters 53-58:
+Characters 53-54:
     val y = 3
-        ^^^^^
+        ^
 Warning 13: the instance variable y is overridden.
 The behaviour changed in ocaml 3.10 (previous behaviour was hiding.)
 Characters 81-84:
@@ -179,9 +179,9 @@ Characters 81-84:
 Warning 13: the following instance variables are overridden by the class d :
   t z
 The behaviour changed in ocaml 3.10 (previous behaviour was hiding.)
-Characters 91-96:
+Characters 91-92:
     val u = 3
-        ^^^^^
+        ^
 Warning 13: the instance variable u is overridden.
 The behaviour changed in ocaml 3.10 (previous behaviour was hiding.)
 class e :
index cbeaa61424148ce9edc1e8f87ed0de8ebf4f404f..45130d58c3b054388cf135e500045fd3e6ecbe15 100644 (file)
@@ -168,9 +168,9 @@ Error: This expression has type bool but an expression was expected of type
 Warning 13: the following instance variables are overridden by the class c :
   x
 The behaviour changed in ocaml 3.10 (previous behaviour was hiding.)
-Characters 53-58:
+Characters 53-54:
     val y = 3
-        ^^^^^
+        ^
 Warning 13: the instance variable y is overridden.
 The behaviour changed in ocaml 3.10 (previous behaviour was hiding.)
 Characters 81-84:
@@ -179,9 +179,9 @@ Characters 81-84:
 Warning 13: the following instance variables are overridden by the class d :
   t z
 The behaviour changed in ocaml 3.10 (previous behaviour was hiding.)
-Characters 91-96:
+Characters 91-92:
     val u = 3
-        ^^^^^
+        ^
 Warning 13: the instance variable u is overridden.
 The behaviour changed in ocaml 3.10 (previous behaviour was hiding.)
 class e :
diff --git a/testsuite/tests/typing-objects/pr5619_bad.ml b/testsuite/tests/typing-objects/pr5619_bad.ml
new file mode 100644 (file)
index 0000000..fbecc92
--- /dev/null
@@ -0,0 +1,29 @@
+class type foo_t =
+  object
+    method foo: string
+  end
+
+type 'a name = 
+    Foo: foo_t name
+  | Int: int name
+;;
+
+class foo =
+  object(self)
+    method foo = "foo"
+    method cast =
+      function
+          Foo -> (self :> <foo : string>)
+        | _ -> raise Exit
+  end
+;;
+
+class foo: foo_t =
+  object(self)
+    method foo = "foo"
+    method cast: type a. a name -> a =
+      function
+          Foo -> (self :> foo_t)
+        | _ -> ((raise Exit) : a)
+  end
+;;
diff --git a/testsuite/tests/typing-objects/pr5619_bad.ml.principal.reference b/testsuite/tests/typing-objects/pr5619_bad.ml.principal.reference
new file mode 100644 (file)
index 0000000..4877722
--- /dev/null
@@ -0,0 +1,18 @@
+
+#                 class type foo_t = object method foo : string end
+type 'a name = Foo : foo_t name | Int : int name
+#                   class foo :
+  object method cast : foo_t name -> < foo : string > method foo : string end
+#                   Characters 22-184:
+  ..object(self)
+      method foo = "foo"
+      method cast: type a. a name -> a =
+        function
+            Foo -> (self :> foo_t)
+          | _ -> ((raise Exit) : a)
+    end
+Error: The class type
+         object method cast : 'a name -> 'a method foo : string end
+       is not matched by the class type foo_t
+       The public method cast cannot be hidden
+# 
diff --git a/testsuite/tests/typing-objects/pr5619_bad.ml.reference b/testsuite/tests/typing-objects/pr5619_bad.ml.reference
new file mode 100644 (file)
index 0000000..4877722
--- /dev/null
@@ -0,0 +1,18 @@
+
+#                 class type foo_t = object method foo : string end
+type 'a name = Foo : foo_t name | Int : int name
+#                   class foo :
+  object method cast : foo_t name -> < foo : string > method foo : string end
+#                   Characters 22-184:
+  ..object(self)
+      method foo = "foo"
+      method cast: type a. a name -> a =
+        function
+            Foo -> (self :> foo_t)
+          | _ -> ((raise Exit) : a)
+    end
+Error: The class type
+         object method cast : 'a name -> 'a method foo : string end
+       is not matched by the class type foo_t
+       The public method cast cannot be hidden
+# 
index 2456780f71615e4df8d3e991cefe90c7e38fb6e3..7efe4eb29960bc6fb03bcc3dca33f6b21375997f 100644 (file)
@@ -1,4 +1,4 @@
-(* $Id$ *)
+(* $Id: poly.ml 12534 2012-06-01 05:24:38Z garrigue $ *)
 (*
    Polymorphic methods are now available in the main branch.
    Enjoy.
@@ -651,3 +651,7 @@ type t = { foo : int }
 let {foo} = (raise Exit : t);;
 type s = A of int
 let (A x) = (raise Exit : s);;
+
+(* PR#5224 *)
+
+type 'x t = < f : 'y. 'y t >;;
index 55bfd0f4ccb8ac72f06321a4e6835713e09dd863..f7dc11e26442291c4a2baca650b330738545fd99 100644 (file)
@@ -300,7 +300,7 @@ and 'a v = 'a u t constraint 'a = int
 Error: Constraints are not satisfied in this type.
        Type 'a u t should be an instance of g t
 # type 'a u = 'a constraint 'a = g
-and 'a v = 'a u t constraint 'a = int
+and 'a v = 'a u t constraint 'a = g
 #     Characters 38-58:
   type 'a u = < m : 'a v > and 'a v = 'a list u;;
       ^^^^^^^^^^^^^^^^^^^^
@@ -635,4 +635,8 @@ Error: This field value has type unit -> unit which is less general than
 #       Exception: Pervasives.Exit.
 #   Exception: Pervasives.Exit.
 #   Exception: Pervasives.Exit.
+#       Characters 20-44:
+  type 'x t = < f : 'y. 'y t >;;
+      ^^^^^^^^^^^^^^^^^^^^^^^^
+Error: In the definition of t, type 'y t should be 'x t
 # 
index 89d050b374c638cc352bc4ce3f324fee909f1f99..0f0448e674031f3a0763be326bc77044ff4a2843 100644 (file)
@@ -283,7 +283,7 @@ and 'a v = 'a u t constraint 'a = int
 Error: Constraints are not satisfied in this type.
        Type 'a u t should be an instance of g t
 # type 'a u = 'a constraint 'a = g
-and 'a v = 'a u t constraint 'a = int
+and 'a v = 'a u t constraint 'a = g
 #     Characters 38-58:
   type 'a u = < m : 'a v > and 'a v = 'a list u;;
       ^^^^^^^^^^^^^^^^^^^^
@@ -441,12 +441,7 @@ Error: Type < m : 'a. 'a -> ('a * (< m : 'c. 'c -> 'b as 'e > as 'd) as 'b) >
   = struct let f (x : <m : 'a. 'a * ('a * 'foo)> as 'foo) = () end;;
     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 Error: Signature mismatch:
-       Modules do not match:
-         sig val f : (< m : 'a. 'a * ('a * 'b) > as 'b) -> unit end
-       is not included in
-         sig
-           val f : < m : 'b. 'b * ('b * < m : 'c. 'c * 'a > as 'a) > -> unit
-         end
+       ...
        Values do not match:
          val f : (< m : 'a. 'a * ('a * 'b) > as 'b) -> unit
        is not included in
@@ -598,4 +593,8 @@ Error: This field value has type unit -> unit which is less general than
 #       Exception: Pervasives.Exit.
 #   Exception: Pervasives.Exit.
 #   Exception: Pervasives.Exit.
+#       Characters 20-44:
+  type 'x t = < f : 'y. 'y t >;;
+      ^^^^^^^^^^^^^^^^^^^^^^^^
+Error: In the definition of t, type 'y t should be 'x t
 # 
index ecb74f69be5ff1d5d3bed319bd8d55edd71f6f05..c7531b29f60acb1091dbd1a7b5109bdc410d1aa5 100644 (file)
@@ -1,15 +1,30 @@
 depend.cmi : ../parsing/parsetree.cmi
 profiling.cmi :
+typedtreeIter.cmi : ../typing/typedtree.cmi ../parsing/asttypes.cmi
+untypeast.cmi : ../typing/typedtree.cmi ../typing/path.cmi \
+    ../parsing/parsetree.cmi ../parsing/longident.cmi
 addlabels.cmo : ../parsing/parsetree.cmi ../parsing/parse.cmi \
     ../parsing/longident.cmi ../parsing/location.cmi ../parsing/asttypes.cmi
 addlabels.cmx : ../parsing/parsetree.cmi ../parsing/parse.cmx \
     ../parsing/longident.cmx ../parsing/location.cmx ../parsing/asttypes.cmi
+cmt2annot.cmo : untypeast.cmi typedtreeIter.cmi ../typing/typedtree.cmi \
+    ../typing/stypes.cmi pprintast.cmo ../typing/path.cmi \
+    ../typing/oprint.cmi ../parsing/location.cmi ../typing/ident.cmi \
+    ../typing/env.cmi ../typing/cmt_format.cmi ../parsing/asttypes.cmi \
+    ../typing/annot.cmi
+cmt2annot.cmx : untypeast.cmx typedtreeIter.cmx ../typing/typedtree.cmx \
+    ../typing/stypes.cmx pprintast.cmx ../typing/path.cmx \
+    ../typing/oprint.cmx ../parsing/location.cmx ../typing/ident.cmx \
+    ../typing/env.cmx ../typing/cmt_format.cmx ../parsing/asttypes.cmi \
+    ../typing/annot.cmi
 cvt_emit.cmo :
 cvt_emit.cmx :
 depend.cmo : ../parsing/parsetree.cmi ../utils/misc.cmi \
-    ../parsing/longident.cmi ../parsing/location.cmi depend.cmi
+    ../parsing/longident.cmi ../parsing/location.cmi ../parsing/asttypes.cmi \
+    depend.cmi
 depend.cmx : ../parsing/parsetree.cmi ../utils/misc.cmx \
-    ../parsing/longident.cmx ../parsing/location.cmx depend.cmi
+    ../parsing/longident.cmx ../parsing/location.cmx ../parsing/asttypes.cmi \
+    depend.cmi
 dumpobj.cmo : ../utils/tbl.cmi opnames.cmo ../bytecomp/opcodes.cmo \
     ../utils/misc.cmi ../parsing/location.cmi ../bytecomp/lambda.cmi \
     ../bytecomp/instruct.cmi ../typing/ident.cmi ../bytecomp/emitcode.cmi \
@@ -24,10 +39,12 @@ myocamlbuild_config.cmo :
 myocamlbuild_config.cmx :
 objinfo.cmo : ../utils/misc.cmi ../utils/config.cmi \
     ../asmcomp/cmx_format.cmi ../bytecomp/cmo_format.cmi \
-    ../asmcomp/clambda.cmi ../bytecomp/bytesections.cmi
+    ../typing/cmi_format.cmi ../asmcomp/clambda.cmi \
+    ../bytecomp/bytesections.cmi
 objinfo.cmx : ../utils/misc.cmx ../utils/config.cmx \
     ../asmcomp/cmx_format.cmi ../bytecomp/cmo_format.cmi \
-    ../asmcomp/clambda.cmx ../bytecomp/bytesections.cmx
+    ../typing/cmi_format.cmx ../asmcomp/clambda.cmx \
+    ../bytecomp/bytesections.cmx
 ocaml299to3.cmo :
 ocaml299to3.cmx :
 ocamlcp.cmo : ../driver/main_args.cmi
@@ -56,9 +73,25 @@ ocamlprof.cmx : ../utils/warnings.cmx ../parsing/syntaxerr.cmx \
     ../utils/clflags.cmx
 opnames.cmo :
 opnames.cmx :
+pprintast.cmo : ../parsing/parsetree.cmi ../parsing/longident.cmi \
+    ../parsing/location.cmi ../parsing/asttypes.cmi
+pprintast.cmx : ../parsing/parsetree.cmi ../parsing/longident.cmx \
+    ../parsing/location.cmx ../parsing/asttypes.cmi
 primreq.cmo : ../utils/config.cmi ../bytecomp/cmo_format.cmi
 primreq.cmx : ../utils/config.cmx ../bytecomp/cmo_format.cmi
 profiling.cmo : profiling.cmi
 profiling.cmx : profiling.cmi
+read_cmt.cmo : ../typing/cmt_format.cmi cmt2annot.cmo ../utils/clflags.cmi
+read_cmt.cmx : ../typing/cmt_format.cmx cmt2annot.cmx ../utils/clflags.cmx
 scrapelabels.cmo :
 scrapelabels.cmx :
+typedtreeIter.cmo : ../typing/typedtree.cmi ../utils/misc.cmi \
+    ../parsing/asttypes.cmi typedtreeIter.cmi
+typedtreeIter.cmx : ../typing/typedtree.cmx ../utils/misc.cmx \
+    ../parsing/asttypes.cmi typedtreeIter.cmi
+untypeast.cmo : ../typing/typedtree.cmi ../typing/path.cmi \
+    ../parsing/parsetree.cmi ../utils/misc.cmi ../parsing/longident.cmi \
+    ../typing/ident.cmi ../parsing/asttypes.cmi untypeast.cmi
+untypeast.cmx : ../typing/typedtree.cmx ../typing/path.cmx \
+    ../parsing/parsetree.cmi ../utils/misc.cmx ../parsing/longident.cmx \
+    ../typing/ident.cmx ../parsing/asttypes.cmi untypeast.cmi
index 04ea00a029571630812720456530aa20dee9b024..1ddcc256016bcfd276796b058a14836a7a448fc0 100644 (file)
@@ -24,3 +24,6 @@ scrapelabels
 addlabels
 myocamlbuild_config.ml
 objinfo_helper
+objinfo_helper.exe
+read_cmt
+read_cmt.bak
index da87fa99e5b1c46cb48e8c1815161f6474fcd062..9122f6bf9e59e28b8b7c2fc651f6f0b9793de608 100644 (file)
@@ -10,7 +10,7 @@
 #                                                                       #
 #########################################################################
 
-# $Id$
+# $Id: Makefile 11184 2011-09-07 14:28:24Z xclerc $
 
 include Makefile.shared
 
index b22e35d28027b351e64f4fb74eb9a83ed1580a62..887976b0024f0cfc2843af37d52dfad881b015d9 100644 (file)
@@ -10,7 +10,7 @@
 #                                                                       #
 #########################################################################
 
-# $Id$
+# $Id: Makefile.nt 11184 2011-09-07 14:28:24Z xclerc $
 
 include Makefile.shared
 
index 1390ac6a9df2bc7ea898241272a4268dbcfefb23..f6818d3d32922fcbc8b1aa1e426a5349da089c63 100644 (file)
@@ -10,7 +10,7 @@
 #                                                                       #
 #########################################################################
 
-# $Id$
+# $Id: Makefile.shared 12526 2012-05-31 12:41:49Z lefessan $
 
 include ../config/Makefile
 
@@ -23,7 +23,8 @@ INCLUDES=-I ../utils -I ../parsing -I ../typing -I ../bytecomp -I ../asmcomp \
 COMPFLAGS= -warn-error A $(INCLUDES)
 LINKFLAGS=$(INCLUDES)
 
-all: ocamldep ocamlprof ocamlcp ocamloptp ocamlmktop ocamlmklib dumpobj objinfo
+all: ocamldep ocamlprof ocamlcp ocamloptp ocamlmktop ocamlmklib dumpobj \
+     objinfo read_cmt
 # scrapelabels addlabels
 
 .PHONY: all
@@ -194,6 +195,47 @@ clean::
 
 beforedepend:: cvt_emit.ml
 
+
+# Reading cmt files
+
+READ_CMT= \
+          ../utils/misc.cmo \
+          ../utils/warnings.cmo \
+          ../utils/tbl.cmo \
+          ../utils/consistbl.cmo \
+          ../utils/config.cmo \
+          ../utils/clflags.cmo \
+          ../parsing/location.cmo \
+          ../parsing/longident.cmo \
+          ../parsing/lexer.cmo \
+          ../typing/ident.cmo \
+          ../typing/path.cmo \
+          ../typing/types.cmo \
+          ../typing/typedtree.cmo \
+          ../typing/btype.cmo \
+          ../typing/subst.cmo \
+          ../typing/predef.cmo \
+          ../typing/datarepr.cmo \
+          ../typing/cmi_format.cmo \
+          ../typing/env.cmo \
+          ../typing/ctype.cmo \
+          ../typing/oprint.cmo \
+          ../typing/primitive.cmo \
+          ../typing/printtyp.cmo \
+          ../typing/cmt_format.cmo \
+          ../typing/stypes.cmo \
+          \
+          pprintast.cmo untypeast.cmo typedtreeIter.cmo  \
+          cmt2annot.cmo read_cmt.cmo
+
+read_cmt: $(READ_CMT)
+       $(CAMLC) $(LINKFLAGS) -o read_cmt $(READ_CMT)
+
+clean::
+       rm -f read_cmt
+
+beforedepend::
+
 # The bytecode disassembler
 
 DUMPOBJ=opnames.cmo dumpobj.cmo
@@ -229,7 +271,9 @@ objinfo_helper$(EXE): objinfo_helper.c ../config/s.h
        $(BYTECC) -o objinfo_helper$(EXE) $(BYTECCCOMPOPTS) \
           objinfo_helper.c $(LIBBFD_LINK)
 
-OBJINFO=../utils/misc.cmo ../utils/config.cmo ../bytecomp/bytesections.cmo \
+OBJINFO=../utils/misc.cmo ../utils/config.cmo \
+        ../utils/warnings.cmo ../parsing/location.cmo \
+        ../typing/cmi_format.cmo ../bytecomp/bytesections.cmo \
         objinfo.cmo
 
 objinfo: objinfo_helper$(EXE) $(OBJINFO)
index c057e72ca868193960b4b2ac80575dada08fb295..a098124bbdc846ce3e5328b0af8ccce4d54c363c 100644 (file)
@@ -11,7 +11,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: addlabels.ml 12511 2012-05-30 13:29:48Z lefessan $ *)
 
 open StdLabels
 open Asttypes
@@ -49,11 +49,11 @@ let rec labels_of_cty cty =
     Pcty_fun (lab, _, rem) ->
       let (labs, meths) = labels_of_cty rem in
       (lab :: labs, meths)
-  | Pcty_signature (_, fields) ->
+  | Pcty_signature { pcsig_fields = fields } ->
       ([],
        List.fold_left fields ~init:[] ~f:
           begin fun meths -> function
-              Pctf_meth (s, _, sty, _) -> (s, labels_of_sty sty)::meths
+          { pctf_desc = Pctf_meth (s, _, sty) } -> (s, labels_of_sty sty)::meths
             | _ -> meths
           end)
   |  _ ->
@@ -61,9 +61,9 @@ let rec labels_of_cty cty =
 
 let rec pattern_vars pat =
   match pat.ppat_desc with
-    Ppat_var s -> [s]
+    Ppat_var s -> [s.txt]
   | Ppat_alias (pat, s) ->
-      s :: pattern_vars pat
+      s.txt :: pattern_vars pat
   | Ppat_tuple l
   | Ppat_array l ->
       List.concat (List.map pattern_vars l)
@@ -124,7 +124,7 @@ let rec insert_labels ~labels ~text expr =
         let start_c = pat.ppat_loc.Location.loc_start.Lexing.pos_cnum in
         let pos = insertion_point start_c ~text in
         match pattern_name pat with
-        | Some name when l = name -> add_insertion pos "~"
+        | Some name when l = name.txt -> add_insertion pos "~"
         | _ -> add_insertion pos ("~" ^ l ^ ":")
       end;
       insert_labels ~labels ~text rem
@@ -164,7 +164,7 @@ let rec insert_labels_class ~labels ~text expr =
         let start_c = pat.ppat_loc.Location.loc_start.Lexing.pos_cnum in
         let pos = insertion_point start_c ~text in
         match pattern_name pat with
-        | Some name when l = name -> add_insertion pos "~"
+        | Some name when l = name.txt -> add_insertion pos "~"
         | _ -> add_insertion pos ("~" ^ l ^ ":")
       end;
       insert_labels_class ~labels ~text rem
@@ -192,7 +192,7 @@ let rec insert_labels_app ~labels ~text args =
         let pos0 = arg.pexp_loc.Location.loc_start.Lexing.pos_cnum in
         let pos = insertion_point pos0 ~text in
         match arg.pexp_desc with
-        | Pexp_ident(Longident.Lident name) when l = name && pos = pos0 ->
+        | Pexp_ident({ txt = Longident.Lident name }) when l = name && pos = pos0 ->
             add_insertion pos "~"
         | _ -> add_insertion pos ("~" ^ l ^ ":")
       end;
@@ -218,7 +218,7 @@ let rec add_labels_expr ~text ~values ~classes expr =
   let add_labels_rec ?(values=values) expr =
     add_labels_expr ~text ~values ~classes expr in
   match expr.pexp_desc with
-    Pexp_apply ({pexp_desc=Pexp_ident(Longident.Lident s)}, args) ->
+    Pexp_apply ({pexp_desc=Pexp_ident({ txt = Longident.Lident s })}, args) ->
       begin try
         let labels = SMap.find s values in
         insert_labels_app ~labels ~text args
@@ -226,14 +226,14 @@ let rec add_labels_expr ~text ~values ~classes expr =
       end;
       List.iter args ~f:(fun (_,e) -> add_labels_rec e)
   | Pexp_apply ({pexp_desc=Pexp_send
-                   ({pexp_desc=Pexp_ident(Longident.Lident s)},meth)}, args) ->
+                   ({pexp_desc=Pexp_ident({ txt = Longident.Lident s })},meth)}, args) ->
       begin try
         if SMap.find s values = ["<object>"] then
           let labels = SMap.find (s ^ "#" ^ meth) values in
           insert_labels_app ~labels ~text args
       with Not_found -> ()
       end
-  | Pexp_apply ({pexp_desc=Pexp_new (Longident.Lident s)}, args) ->
+  | Pexp_apply ({pexp_desc=Pexp_new ({ txt = Longident.Lident s })}, args) ->
       begin try
         let labels = SMap.find s classes in
         insert_labels_app ~labels ~text args
@@ -288,7 +288,7 @@ let rec add_labels_expr ~text ~values ~classes expr =
       add_labels_rec e1; add_labels_rec e2; add_labels_rec e3
   | Pexp_for (s, e1, e2, _, e3) ->
       add_labels_rec e1; add_labels_rec e2;
-      add_labels_rec e3 ~values:(SMap.removes [s] values)
+      add_labels_rec e3 ~values:(SMap.removes [s.txt] values)
   | Pexp_override lst ->
       List.iter lst ~f:(fun (_,e) -> add_labels_rec e)
   | Pexp_ident _ | Pexp_constant _ | Pexp_construct _ | Pexp_variant _
@@ -298,23 +298,23 @@ let rec add_labels_expr ~text ~values ~classes expr =
 let rec add_labels_class ~text ~classes ~values ~methods cl =
   match cl.pcl_desc with
     Pcl_constr _ -> ()
-  | Pcl_structure (p, l) ->
+  | Pcl_structure { pcstr_pat = p; pcstr_fields = l } ->
       let values = SMap.removes (pattern_vars p) values in
       let values =
         match pattern_name p with None -> values
         | Some s ->
             List.fold_left methods
-              ~init:(SMap.add s ["<object>"] values)
-              ~f:(fun m (k,l) -> SMap.add (s^"#"^k) l m)
+              ~init:(SMap.add s.txt ["<object>"] values)
+              ~f:(fun m (k,l) -> SMap.add (s.txt^"#"^k) l m)
       in
       ignore (List.fold_left l ~init:values ~f:
-        begin fun values -> function
-          | Pcf_val (s, _, _, e, _) ->
+        begin fun values -> function e -> match e.pcf_desc with
+          | Pcf_val (s, _, _, e) ->
               add_labels_expr ~text ~classes ~values e;
-              SMap.removes [s] values
-          | Pcf_meth (s, _, _, e, _) ->
+              SMap.removes [s.txt] values
+          | Pcf_meth (s, _, _, e) ->
               begin try
-                let labels = List.assoc s methods in
+                let labels = List.assoc s.txt methods in
                 insert_labels ~labels ~text e
               with Not_found -> ()
               end;
@@ -323,7 +323,7 @@ let rec add_labels_class ~text ~classes ~values ~methods cl =
           | Pcf_init e ->
               add_labels_expr ~text ~classes ~values e;
               values
-          | Pcf_inher _ | Pcf_valvirt _ | Pcf_virt _ | Pcf_cstr _ -> values
+          | Pcf_inher _ | Pcf_valvirt _ | Pcf_virt _ | Pcf_constr _ -> values
         end)
   | Pcl_fun (_, opt, pat, cl) ->
       begin match opt with None -> ()
@@ -353,12 +353,12 @@ let add_labels ~intf ~impl ~file =
       begin fun (values, classes as acc) item ->
         match item.psig_desc with
           Psig_value (name, {pval_type = sty}) ->
-            (SMap.add name (labels_of_sty sty) values, classes)
+            (SMap.add name.txt (labels_of_sty sty) values, classes)
         | Psig_class l ->
           (values,
            List.fold_left l ~init:classes ~f:
              begin fun classes {pci_name=name; pci_expr=cty} ->
-               SMap.add name (labels_of_cty cty) classes
+               SMap.add name.txt (labels_of_cty cty) classes
              end)
         | _ ->
             acc
@@ -376,7 +376,7 @@ let add_labels ~intf ~impl ~file =
               begin match pattern_name pat with
               | Some s ->
                   begin try
-                    let labels = SMap.find s values in
+                    let labels = SMap.find s.txt values in
                     insert_labels ~labels ~text expr;
                     if !norec then () else
                     let values =
@@ -393,17 +393,17 @@ let add_labels ~intf ~impl ~file =
           (SMap.removes names values, classes)
       | Pstr_primitive (s, {pval_type=sty}) ->
           begin try
-            let labels = SMap.find s values in
+            let labels = SMap.find s.txt values in
             insert_labels_type ~labels ~text sty;
-            (SMap.removes [s] values, classes)
+            (SMap.removes [s.txt] values, classes)
           with Not_found -> acc
           end
       | Pstr_class l ->
-          let names = List.map l ~f:(fun pci -> pci.pci_name) in
+          let names = List.map l ~f:(fun pci -> pci.pci_name.txt) in
           List.iter l ~f:
             begin fun {pci_name=name; pci_expr=expr} ->
               try
-                let (labels, methods) = SMap.find name classes in
+                let (labels, methods) = SMap.find name.txt classes in
                 insert_labels_class ~labels ~text expr;
                 if !norec then () else
                 let classes =
index 9289c678cae23f381b707a308364fb540f5b9a69..3e0a8002d026ba91110cf503baa60c318405fe2b 100644 (file)
@@ -10,7 +10,7 @@
 /*                                                                     */
 /***********************************************************************/
 
-/* $Id$ */
+/* $Id: checkstack.c 11156 2011-07-27 14:17:02Z doligez $ */
 
 #include <stdio.h>
 #include <stdlib.h>
diff --git a/tools/cmt2annot.ml b/tools/cmt2annot.ml
new file mode 100644 (file)
index 0000000..917ab2f
--- /dev/null
@@ -0,0 +1,290 @@
+(***********************************************************************)
+(*                                                                     *)
+(*                           Objective Caml                            *)
+(*                                                                     *)
+(*                  Fabrice Le Fessant, INRIA Saclay                   *)
+(*                                                                     *)
+(*  Copyright 2012 Institut National de Recherche en Informatique et   *)
+(*  en Automatique.  All rights reserved.  This file is distributed    *)
+(*  under the terms of the Q Public License version 1.0.               *)
+(*                                                                     *)
+(***********************************************************************)
+(*
+Generate .annot file from a .types files.
+*)
+
+open Typedtree
+open TypedtreeIter
+
+let pattern_scopes = ref []
+
+let push_None () =
+  pattern_scopes := None :: !pattern_scopes
+let push_Some annot =
+  pattern_scopes := (Some annot) :: !pattern_scopes
+let pop_scope () =
+  match !pattern_scopes with
+    [] -> assert false
+  | _ :: scopes -> pattern_scopes := scopes
+
+module ForIterator = struct
+    open Asttypes
+
+    include DefaultIteratorArgument
+
+    let structure_begin_scopes = ref []
+    let structure_end_scopes = ref []
+
+    let rec find_last list =
+      match list with
+        [] -> assert false
+      | [x] -> x
+      | _ :: tail -> find_last tail
+
+    let enter_structure str =
+      match str.str_items with
+        [] -> ()
+      | _ ->
+          let loc =
+            match !structure_end_scopes with
+              [] -> Location.none
+            | _ ->
+                let s = find_last str.str_items in
+                s.str_loc
+          in
+          structure_end_scopes := loc :: !structure_end_scopes;
+
+          let rec iter list =
+            match list with
+              [] -> assert false
+            | [ { str_desc = Tstr_value (Nonrecursive, _); str_loc = loc } ] ->
+                structure_begin_scopes := loc.Location.loc_end
+                  :: !structure_begin_scopes
+            | [ _ ] -> ()
+            | item :: tail ->
+                iter tail;
+                match item, tail with
+                  { str_desc = Tstr_value (Nonrecursive,_) },
+                  { str_loc = loc } :: _ ->
+                    structure_begin_scopes := loc.Location.loc_start
+                      :: !structure_begin_scopes
+                | _ -> ()
+          in
+          iter str.str_items
+
+    let leave_structure str =
+      match str.str_items with
+        [] -> ()
+      | _ ->
+          match !structure_end_scopes with
+            [] -> assert false
+          | _ :: scopes -> structure_end_scopes := scopes
+
+    let enter_class_expr node =
+      Stypes.record (Stypes.Ti_class node)
+    let enter_module_expr node =
+      Stypes.record (Stypes.Ti_mod node)
+
+    let add_variable pat id =
+      match !pattern_scopes with
+      | [] -> assert false
+      | None :: _ -> ()
+      | (Some s) :: _ ->
+          Stypes.record (Stypes.An_ident (pat.pat_loc, Ident.name id, s))
+
+    let enter_pattern pat =
+      match pat.pat_desc with
+      | Tpat_var (id, _)
+      | Tpat_alias (_, id,_)
+        -> add_variable pat id
+      | Tpat_any -> ()
+      | Tpat_constant _
+      | Tpat_tuple _
+      | Tpat_construct _
+      | Tpat_lazy _
+      | Tpat_or _
+      | Tpat_array _
+      | Tpat_record _
+      | Tpat_variant _
+        -> ()
+
+    let leave_pattern pat =
+      Stypes.record (Stypes.Ti_pat pat)
+
+    let rec name_of_path = function
+      | Path.Pident id -> Ident.name id
+      | Path.Pdot(p, s, pos) ->
+          if Oprint.parenthesized_ident s then
+            name_of_path p ^ ".( " ^ s ^ " )"
+          else
+            name_of_path p ^ "." ^ s
+      | Path.Papply(p1, p2) -> name_of_path p1 ^ "(" ^ name_of_path p2 ^ ")"
+
+    let enter_expression exp =
+      match exp.exp_desc with
+        Texp_ident (path, _, _) ->
+          let full_name = name_of_path path in
+          begin
+            try
+              let annot = Env.find_annot path exp.exp_env in
+              Stypes.record
+                (Stypes.An_ident (exp.exp_loc, full_name , annot))
+            with Not_found ->
+              Stypes.record
+                (Stypes.An_ident (exp.exp_loc, full_name , Annot.Iref_external))
+          end
+
+      | Texp_let (rec_flag, _, body) ->
+          begin
+            match rec_flag with
+            | Recursive -> push_Some (Annot.Idef exp.exp_loc)
+            | Nonrecursive -> push_Some (Annot.Idef body.exp_loc)
+            | Default -> push_None ()
+          end
+      | Texp_function _ -> push_None ()
+      | Texp_match _ -> push_None ()
+      | Texp_try _ -> push_None ()
+      | _ -> ()
+
+    let leave_expression exp =
+      if not exp.exp_loc.Location.loc_ghost then
+        Stypes.record (Stypes.Ti_expr exp);
+      match exp.exp_desc with
+      | Texp_let _
+      | Texp_function _
+      | Texp_match _
+      | Texp_try _
+        -> pop_scope ()
+      | _ -> ()
+
+    let enter_binding pat exp =
+      let scope =
+        match !pattern_scopes with
+        | [] -> assert false
+        | None :: _ -> Some (Annot.Idef exp.exp_loc)
+        | scope :: _ -> scope
+      in
+      pattern_scopes := scope :: !pattern_scopes
+
+    let leave_binding _ _ =
+      pop_scope ()
+
+    let enter_class_expr exp =
+      match exp.cl_desc with
+      | Tcl_fun _ -> push_None ()
+      | Tcl_let _ -> push_None ()
+      | _ -> ()
+
+    let leave_class_expr exp =
+      match exp.cl_desc with
+      | Tcl_fun _
+      | Tcl_let _ -> pop_scope ()
+      | _ -> ()
+
+    let enter_class_structure _ =
+      push_None ()
+
+    let leave_class_structure _ =
+      pop_scope ()
+
+(*
+    let enter_class_field cf =
+      match cf.cf_desc with
+        Tcf_let _ -> push_None ()
+      | _ -> ()
+
+    let leave_class_field cf =
+      match cf.cf_desc with
+        Tcf_let _ -> pop_scope ()
+      | _ -> ()
+*)
+
+    let enter_structure_item s =
+      Stypes.record_phrase s.str_loc;
+      match s.str_desc with
+        Tstr_value (rec_flag, _) ->
+          begin
+            let loc = s.str_loc in
+            let scope = match !structure_end_scopes with
+                [] -> assert false
+              | scope :: _ -> scope
+            in
+            match rec_flag with
+            | Recursive -> push_Some
+                  (Annot.Idef { scope with
+                    Location.loc_start = loc.Location.loc_start})
+            | Nonrecursive ->
+(* TODO: do it lazily, when we start the next element ! *)
+(*
+                 let start = match srem with
+                  | [] -> loc.Location.loc_end
+                  | {pstr_loc = loc2} :: _ -> loc2.Location.loc_start
+in  *)
+                let start =
+                  match !structure_begin_scopes with
+                    [] -> assert false
+                  | loc :: tail ->
+                      structure_begin_scopes := tail;
+                      loc
+                in
+                push_Some (Annot.Idef {scope with Location.loc_start = start})
+            | Default -> push_None ()
+          end
+      | _ -> ()
+
+    let leave_structure_item s =
+      match s.str_desc with
+        Tstr_value _ -> pop_scope ()
+      | _ -> ()
+
+
+  end
+
+module Iterator = MakeIterator(ForIterator)
+
+let gen_annot target_filename filename cmt =
+  match cmt.Cmt_format.cmt_annots with
+      Cmt_format.Implementation typedtree ->
+        Iterator.iter_structure typedtree;
+        let target_filename = match target_filename with
+            None -> Some (filename ^ ".annot")
+          | Some "-" -> None
+          | Some filename -> target_filename
+        in
+        Stypes.dump target_filename
+    | Cmt_format.Interface _ ->
+      Printf.fprintf stderr "Cannot generate annotations for interface file\n%!";
+      exit 2
+    | _ ->
+      Printf.fprintf stderr "File was generated with an error\n%!";
+      exit 2
+
+
+
+let gen_ml target_filename filename cmt =
+  let (printer, ext) =
+    match cmt.Cmt_format.cmt_annots with
+      | Cmt_format.Implementation typedtree ->
+        (fun ppf -> Pprintast.print_structure ppf (Untypeast.untype_structure typedtree)), ".ml"
+      | Cmt_format.Interface typedtree ->
+        (fun ppf -> Pprintast.print_signature ppf (Untypeast.untype_signature typedtree)), ".mli"
+      | _ ->
+        Printf.fprintf stderr "File was generated with an error\n%!";
+        exit 2
+  in
+  let target_filename = match target_filename with
+      None -> Some (filename ^ ext)
+    | Some "-" -> None
+    | Some filename -> target_filename
+  in
+  let oc = match target_filename with
+      None -> None
+    | Some filename -> Some (open_out filename) in
+  let ppf = match oc with
+      None -> Format.std_formatter
+    | Some oc -> Format.formatter_of_out_channel oc in
+  printer ppf;
+  Format.pp_print_flush ppf ();
+  match oc with
+      None -> flush stdout
+    | Some oc -> close_out oc
index eabd1baf1a5d63083ec46805acdcae786e61a0f7..86853b96d649105d79913fd297c5186f1f10c578 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: cvt_emit.mll 11156 2011-07-27 14:17:02Z doligez $ *)
 
 {
 let first_item = ref false
index 948646a8230ac531989af9202bc652bef4b15fe2..e26bee573b820a8eb50a84d4a538dec0a3106bb2 100644 (file)
@@ -10,8 +10,9 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: depend.ml 12511 2012-05-30 13:29:48Z lefessan $ *)
 
+open Asttypes
 open Format
 open Location
 open Longident
@@ -21,6 +22,8 @@ module StringSet = Set.Make(struct type t = string let compare = compare end)
 
 (* Collect free module identifiers in the a.s.t. *)
 
+let fst3 (x, _, _) = x
+
 let free_structure_names = ref StringSet.empty
 
 let rec addmodule bv lid =
@@ -32,10 +35,12 @@ let rec addmodule bv lid =
   | Lapply(l1, l2) -> addmodule bv l1; addmodule bv l2
 
 let add bv lid =
-  match lid with
+  match lid.txt with
     Ldot(l, s) -> addmodule bv l
   | _ -> ()
 
+let addmodule bv lid = addmodule bv lid.txt
+
 let rec add_type bv ty =
   match ty.ptyp_desc with
     Ptyp_any -> ()
@@ -56,7 +61,7 @@ let rec add_type bv ty =
 
 and add_package_type bv (lid, l) =
   add bv lid;
-  List.iter (add_type bv) (List.map snd l)
+  List.iter (add_type bv) (List.map (fun (_, e) -> e) l)
 
 and add_field_type bv ft =
   match ft.pfield_desc with
@@ -84,18 +89,19 @@ let rec add_class_type bv cty =
   match cty.pcty_desc with
     Pcty_constr(l, tyl) ->
       add bv l; List.iter (add_type bv) tyl
-  | Pcty_signature (ty, fieldl) ->
+  | Pcty_signature { pcsig_self = ty; pcsig_fields = fieldl } ->
       add_type bv ty;
       List.iter (add_class_type_field bv) fieldl
   | Pcty_fun(_, ty1, cty2) ->
       add_type bv ty1; add_class_type bv cty2
 
-and add_class_type_field bv = function
+and add_class_type_field bv pctf =
+  match pctf.pctf_desc with
     Pctf_inher cty -> add_class_type bv cty
-  | Pctf_val(_, _, _, ty, _) -> add_type bv ty
-  | Pctf_virt(_, _, ty, _) -> add_type bv ty
-  | Pctf_meth(_, _, ty, _) -> add_type bv ty
-  | Pctf_cstr(ty1, ty2, _) -> add_type bv ty1; add_type bv ty2
+  | Pctf_val(_, _, _, ty) -> add_type bv ty
+  | Pctf_virt(_, _, ty) -> add_type bv ty
+  | Pctf_meth(_, _, ty) -> add_type bv ty
+  | Pctf_cstr(ty1, ty2) -> add_type bv ty1; add_type bv ty2
 
 let add_class_description bv infos =
   add_class_type bv infos.pci_expr
@@ -116,7 +122,7 @@ let rec add_pattern bv pat =
   | Ppat_or(p1, p2) -> add_pattern bv p1; add_pattern bv p2
   | Ppat_constraint(p, ty) -> add_pattern bv p; add_type bv ty
   | Ppat_variant(_, op) -> add_opt add_pattern bv op
-  | Ppat_type (li) -> add bv li
+  | Ppat_type li -> add bv li
   | Ppat_lazy p -> add_pattern bv p
   | Ppat_unpack _ -> ()
 
@@ -144,7 +150,7 @@ let rec add_expr bv exp =
       add_expr bv e1; add_expr bv e2; add_opt add_expr bv opte3
   | Pexp_sequence(e1, e2) -> add_expr bv e1; add_expr bv e2
   | Pexp_while(e1, e2) -> add_expr bv e1; add_expr bv e2
-  | Pexp_for(_, e1, e2, _, e3) ->
+  | Pexp_for( _, e1, e2, _, e3) ->
       add_expr bv e1; add_expr bv e2; add_expr bv e3
   | Pexp_constraint(e1, oty2, oty3) ->
       add_expr bv e1;
@@ -152,16 +158,16 @@ let rec add_expr bv exp =
       add_opt add_type bv oty3
   | Pexp_when(e1, e2) -> add_expr bv e1; add_expr bv e2
   | Pexp_send(e, m) -> add_expr bv e
-  | Pexp_new l -> add bv l
+  | Pexp_new li -> add bv li
   | Pexp_setinstvar(v, e) -> add_expr bv e
   | Pexp_override sel -> List.iter (fun (s, e) -> add_expr bv e) sel
   | Pexp_letmodule(id, m, e) ->
-      add_module bv m; add_expr (StringSet.add id bv) e
+      add_module bv m; add_expr (StringSet.add id.txt bv) e
   | Pexp_assert (e) -> add_expr bv e
   | Pexp_assertfalse -> ()
   | Pexp_lazy (e) -> add_expr bv e
   | Pexp_poly (e, t) -> add_expr bv e; add_opt add_type bv t
-  | Pexp_object (pat, fieldl) ->
+  | Pexp_object { pcstr_pat = pat; pcstr_fields = fieldl } ->
       add_pattern bv pat; List.iter (add_class_field bv) fieldl
   | Pexp_newtype (_, e) -> add_expr bv e
   | Pexp_pack m -> add_module bv m
@@ -174,14 +180,14 @@ and add_modtype bv mty =
     Pmty_ident l -> add bv l
   | Pmty_signature s -> add_signature bv s
   | Pmty_functor(id, mty1, mty2) ->
-      add_modtype bv mty1; add_modtype (StringSet.add id bv) mty2
+      add_modtype bv mty1; add_modtype (StringSet.add id.txt bv) mty2
   | Pmty_with(mty, cstrl) ->
       add_modtype bv mty;
       List.iter
         (function (_, Pwith_type td) -> add_type_declaration bv td
-                | (_, Pwith_module lid) -> addmodule bv lid
+                | (_, Pwith_module (lid)) -> addmodule bv lid
                 | (_, Pwith_typesubst td) -> add_type_declaration bv td
-                | (_, Pwith_modsubst lid) -> addmodule bv lid)
+                | (_, Pwith_modsubst (lid)) -> addmodule bv lid)
         cstrl
   | Pmty_typeof m -> add_module bv m
 
@@ -198,12 +204,12 @@ and add_sig_item bv item =
   | Psig_exception(id, args) ->
       List.iter (add_type bv) args; bv
   | Psig_module(id, mty) ->
-      add_modtype bv mty; StringSet.add id bv
+      add_modtype bv mty; StringSet.add id.txt bv
   | Psig_recmodule decls ->
-      let bv' = List.fold_right StringSet.add (List.map fst decls) bv in
+      let bv' = List.fold_right StringSet.add (List.map (fun (x,_) -> x.txt) decls) bv in
       List.iter (fun (id, mty) -> add_modtype bv' mty) decls;
       bv'
-  | Psig_modtype(id, mtyd) ->
+  | Psig_modtype(id,mtyd) ->
       begin match mtyd with
         Pmodtype_abstract -> ()
       | Pmodtype_manifest mty -> add_modtype bv mty
@@ -224,7 +230,7 @@ and add_module bv modl =
   | Pmod_structure s -> ignore (add_structure bv s)
   | Pmod_functor(id, mty, modl) ->
       add_modtype bv mty;
-      add_module (StringSet.add id bv) modl
+      add_module (StringSet.add id.txt bv) modl
   | Pmod_apply(mod1, mod2) ->
       add_module bv mod1; add_module bv mod2
   | Pmod_constraint(modl, mty) ->
@@ -250,11 +256,11 @@ and add_struct_item bv item =
   | Pstr_exn_rebind(id, l) ->
       add bv l; bv
   | Pstr_module(id, modl) ->
-      add_module bv modl; StringSet.add id bv
+      add_module bv modl; StringSet.add id.txt bv
   | Pstr_recmodule bindings ->
       let bv' =
         List.fold_right StringSet.add
-          (List.map (fun (id,_,_) -> id) bindings) bv in
+          (List.map (fun (id,_,_) -> id.txt) bindings) bv in
       List.iter
         (fun (id, mty, modl) -> add_modtype bv' mty; add_module bv' modl)
         bindings;
@@ -281,7 +287,7 @@ and add_class_expr bv ce =
   match ce.pcl_desc with
     Pcl_constr(l, tyl) ->
       add bv l; List.iter (add_type bv) tyl
-  | Pcl_structure(pat, fieldl) ->
+  | Pcl_structure { pcstr_pat = pat; pcstr_fields = fieldl } ->
       add_pattern bv pat; List.iter (add_class_field bv) fieldl
   | Pcl_fun(_, opte, pat, ce) ->
       add_opt add_expr bv opte; add_pattern bv pat; add_class_expr bv ce
@@ -292,13 +298,14 @@ and add_class_expr bv ce =
   | Pcl_constraint(ce, ct) ->
       add_class_expr bv ce; add_class_type bv ct
 
-and add_class_field bv = function
+and add_class_field bv pcf =
+  match pcf.pcf_desc with
     Pcf_inher(_, ce, _) -> add_class_expr bv ce
-  | Pcf_val(_, _, _, e, _) -> add_expr bv e
-  | Pcf_valvirt(_, _, ty, _)
-  | Pcf_virt(_, _, ty, _) -> add_type bv ty
-  | Pcf_meth(_, _, _, e, _) -> add_expr bv e
-  | Pcf_cstr(ty1, ty2, _) -> add_type bv ty1; add_type bv ty2
+  | Pcf_val(_, _, _, e) -> add_expr bv e
+  | Pcf_valvirt(_, _, ty)
+  | Pcf_virt(_, _, ty) -> add_type bv ty
+  | Pcf_meth(_, _, _, e) -> add_expr bv e
+  | Pcf_constr(ty1, ty2) -> add_type bv ty1; add_type bv ty2
   | Pcf_init e -> add_expr bv e
 
 and add_class_declaration bv decl =
index 7c6d0c01d6fc0d185e90430c305b7fa7b11214d1..196827ba716999081719e15463b44e3db921df4b 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: depend.mli 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (** Module dependencies. *)
 
index ff7ff688a4da0a43dafef382eac1050d376b3a56..82d53e790a2a007099275640116334c0f8e210bf 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: dumpobj.ml 12511 2012-05-30 13:29:48Z lefessan $ *)
 
 (* Disassembler for executable and .cmo object files *)
 
@@ -26,6 +26,8 @@ open Opnames
 open Cmo_format
 open Printf
 
+let print_locations = ref true
+
 (* Read signed and unsigned integers *)
 
 let inputu ic =
@@ -399,11 +401,12 @@ let op_shapes = [
 ];;
 
 let print_event ev =
-  let ls = ev.ev_loc.loc_start in
-  let le = ev.ev_loc.loc_end in
-  printf "File \"%s\", line %d, characters %d-%d:\n" ls.Lexing.pos_fname
-         ls.Lexing.pos_lnum (ls.Lexing.pos_cnum - ls.Lexing.pos_bol)
-         (le.Lexing.pos_cnum - ls.Lexing.pos_bol)
+  if !print_locations then
+    let ls = ev.ev_loc.loc_start in
+    let le = ev.ev_loc.loc_end in
+    printf "File \"%s\", line %d, characters %d-%d:\n" ls.Lexing.pos_fname
+      ls.Lexing.pos_lnum (ls.Lexing.pos_cnum - ls.Lexing.pos_bol)
+      (le.Lexing.pos_cnum - ls.Lexing.pos_bol)
 
 let print_instr ic =
   let pos = currpos ic in
@@ -539,20 +542,28 @@ let dump_exe ic =
   let code_size = Bytesections.seek_section ic "CODE" in
   print_code ic code_size
 
-let main() =
-  for i = 1 to Array.length Sys.argv - 1 do
-    let filnam = Sys.argv.(i) in
-    let ic = open_in_bin filnam in
-    if i>1 then print_newline ();
-    printf "## start of ocaml dump of %S\n%!" filnam;
-    begin try
-      objfile := false; dump_exe ic
+let arg_list = [
+  "-noloc", Arg.Clear print_locations, " : don't print source information";
+]
+let arg_usage = Printf.sprintf "%s [OPTIONS] FILES : dump content of bytecode files" Sys.argv.(0)
+
+let first_file = ref true
+
+let arg_fun filename =
+  let ic = open_in_bin filename in
+  if not !first_file then print_newline ();
+  first_file := false;
+  printf "## start of ocaml dump of %S\n%!" filename;
+  begin try
+          objfile := false; dump_exe ic
     with Bytesections.Bad_magic_number ->
-      objfile := true; seek_in ic 0; dump_obj (Sys.argv.(i)) ic
-    end;
-    close_in ic;
-    printf "## end of ocaml dump of %S\n%!" filnam;
-  done;
-  exit 0
+      objfile := true; seek_in ic 0; dump_obj filename ic
+  end;
+  close_in ic;
+  printf "## end of ocaml dump of %S\n%!" filename
+
+let main() =
+  Arg.parse arg_list arg_fun arg_usage;
+    exit 0
 
 let _ = main ()
index 38241af0a5f1173c8bf7c5ed5e83282810934199..a9fe53b5ebcf11e669a84e623d8a59342ba0711d 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: lexer299.mll 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (* The lexer definition *)
 
index 4548de57e9480b20eff8eb2953f473dba2ab6e7b..8b75d87f4a8b9a558ca15e31f6a3cd05a4b22fa6 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: lexer301.mll 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (* The lexer definition *)
 
index 222df82211835f35a3a1ccdd208fe56037596b81..061d3f66604fe5e770eae79707c9105cf27e18db 100755 (executable)
@@ -12,7 +12,7 @@
 #                                                                       #
 #########################################################################
 
-# $Id$
+# $Id: make-package-macosx 11156 2011-07-27 14:17:02Z doligez $
 
 cd package-macosx
 rm -rf ocaml.pkg ocaml-rw.dmg
index 42fa8ee9c27b93fb2d012b843f7c2040ff551f6a..abb364d6e4aa903e3a834a892b75bbdd349fbad5 100644 (file)
@@ -13,7 +13,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: objinfo.ml 12511 2012-05-30 13:29:48Z lefessan $ *)
 
 (* Dump info on .cmi, .cmo, .cmx, .cma, .cmxa, .cmxs files
    and on bytecode executables. *)
@@ -97,7 +97,7 @@ let print_cma_infos (lib : Cmo_format.library) =
   printf "\n";
   List.iter print_cmo_infos lib.lib_units
 
-let print_cmi_infos name sign comps crcs =
+let print_cmi_infos name sign crcs =
   printf "Unit name: %s\n" name;
   printf "Interfaces imported:\n";
   List.iter print_name_crc crcs
@@ -231,10 +231,10 @@ let dump_obj filename =
     close_in ic;
     print_cma_infos toc
   end else if magic_number = cmi_magic_number then begin
-    let (name, sign, comps) = input_value ic in
-    let crcs = input_value ic in
+    let cmi = Cmi_format.input_cmi ic in
     close_in ic;
-    print_cmi_infos name sign comps crcs
+    print_cmi_infos cmi.Cmi_format.cmi_name cmi.Cmi_format.cmi_sign
+      cmi.Cmi_format.cmi_crcs
   end else if magic_number = cmx_magic_number then begin
     let ui = (input_value ic : unit_infos) in
     let crc = Digest.input ic in
@@ -269,10 +269,11 @@ let dump_obj filename =
     end
   end
 
+let arg_list = []
+let arg_usage = Printf.sprintf "%s [OPTIONS] FILES : give information on files" Sys.argv.(0)
+
 let main() =
-  for i = 1 to Array.length Sys.argv - 1 do
-    dump_obj Sys.argv.(i)
-  done;
+  Arg.parse arg_list dump_obj arg_usage;
   exit 0
 
 let _ = main ()
index b4584a073822c9321ece9f8ec2d2d05d4a9833ef..e2a903818476545664b5a5ae63f20abfb234f7b8 100755 (executable)
@@ -12,7 +12,7 @@
 #                                                                       #
 #########################################################################
 
-# $Id$
+# $Id: ocaml-objcopy-macosx 11156 2011-07-27 14:17:02Z doligez $
 
 
 TMP="${TMPDIR=/tmp}"
index fb66c7616c440d975501627e3e8eccf18a065630..d36a2e10cd2235c3803e353e17a670cc59c63cc8 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: ocaml299to3.ml 11156 2011-07-27 14:17:02Z doligez $ *)
 
 open Lexer299
 
index 9d8ed152d58f041de852e56cd2893af52c2938de..c52c4fbed308243a8959cc89ab0606cd2d7a06b3 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: ocamlcp.ml 12511 2012-05-30 13:29:48Z lefessan $ *)
 
 open Printf
 
@@ -45,6 +45,7 @@ module Options = Main_args.Make_bytecomp_options (struct
   let _a () = make_archive := true; option "-a" ()
   let _absname = option "-absname"
   let _annot = option "-annot"
+  let _binannot = option "-bin-annot"
   let _c = option "-c"
   let _cc s = option_with_arg "-cc" s
   let _cclib s = option_with_arg "-cclib" s
index 46449037adbaed55da5146669cfcc9c224aa919c..e70685802f9e721e190b3b116a34636cacf0227d 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: ocamldep.ml 12387 2012-04-20 15:33:56Z doligez $ *)
 
 open Longident
 open Parsetree
@@ -196,7 +196,7 @@ let preprocess sourcefile =
     None -> sourcefile
   | Some pp ->
       flush Pervasives.stdout;
-      let tmpfile = Filename.temp_file "camlpp" "" in
+      let tmpfile = Filename.temp_file "ocamldeppp" "" in
       let comm = Printf.sprintf "%s %s > %s" pp sourcefile tmpfile in
       if Sys.command comm <> 0 then begin
         Misc.remove_file tmpfile;
index 3b31201ccfe0b816bcceb7a8f15f7be42c5330ac..f114b132eea7e3544698e509dc0274bb31d94b5d 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: ocamlmklib.mlp 12149 2012-02-10 16:15:24Z doligez $ *)
 
 open Printf
 open Myocamlbuild_config
index 0b4a8b0926e74657e7a6e26b3345e978ade483aa..57f904c1b5a50da6ed79d64975a62a26363caf87 100644 (file)
@@ -10,8 +10,8 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: ocamlmktop.ml 12477 2012-05-24 16:17:19Z xleroy $ *)
 
 let _ =
   let args = Ccomp.quote_files (List.tl (Array.to_list Sys.argv)) in
-  exit(Sys.command("ocamlc -linkall toplevellib.cma " ^ args ^ " topstart.cmo"))
+  exit(Sys.command("ocamlc -I +compiler-libs -linkall ocamlcommon.cma ocamlbytecomp.cma ocamltoplevel.cma " ^ args ^ " topstart.cmo"))
index 0f44da8ca2310a83ca4b8d0e0c1b31934741b09d..bd48fb2c3b7a3e16b1f24c8514496289f4d261c6 100644 (file)
@@ -11,6 +11,6 @@
 #                                                                       #
 #########################################################################
 
-# $Id$
+# $Id: ocamlmktop.tpl 12477 2012-05-24 16:17:19Z xleroy $
 
-exec %%BINDIR%%/ocamlc -linkall toplevellib.cma "$@" topstart.cmo
+exec %%BINDIR%%/ocamlc -I +compiler-libs -linkall ocamlcommon.cma ocamlbytecomp.cma ocamltoplevel.cma "$@" topstart.cmo
index ce251e5874461a073ec067e8319a0afdd762b7d2..86400d9cad8a281ccbc059065dbd48242a442d56 100644 (file)
@@ -48,6 +48,7 @@ module Options = Main_args.Make_optcomp_options (struct
   let _a () = make_archive := true; option "-a" ()
   let _absname = option "-absname"
   let _annot = option "-annot"
+  let _binannot = option "-bin-annot"
   let _c = option "-c"
   let _cc s = option_with_arg "-cc" s
   let _cclib s = option_with_arg "-cclib" s
index b8a6b3fa407eba3a460fcbb524731a071b7b7987..1665076fc45d23409ccfbecff753f7d08d751ad1 100644 (file)
@@ -11,7 +11,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: ocamlprof.ml 12511 2012-05-30 13:29:48Z lefessan $ *)
 
 open Printf
 
@@ -282,8 +282,8 @@ and rw_exp iflag sexp =
 
   | Pexp_poly (sexp, _) -> rewrite_exp iflag sexp
 
-  | Pexp_object (_, fieldl) ->
-      List.iter (rewrite_class_field iflag) fieldl
+  | Pexp_object cl ->
+      List.iter (rewrite_class_field iflag) cl.pcstr_fields
 
   | Pexp_newtype (_, sexp) -> rewrite_exp iflag sexp
   | Pexp_open (_, e) -> rewrite_exp iflag e
@@ -319,24 +319,25 @@ and rewrite_trymatching l =
 
 (* Rewrite a class definition *)
 
-and rewrite_class_field iflag =
-  function
+and rewrite_class_field iflag cf =
+  match cf.pcf_desc with
     Pcf_inher (_, cexpr, _)     -> rewrite_class_expr iflag cexpr
-  | Pcf_val (_, _, _, sexp, _)  -> rewrite_exp iflag sexp
-  | Pcf_meth (_, _, _, ({pexp_desc = Pexp_function _} as sexp), _) ->
+  | Pcf_val (_, _, _, sexp)  -> rewrite_exp iflag sexp
+  | Pcf_meth (_, _, _, ({pexp_desc = Pexp_function _} as sexp)) ->
       rewrite_exp iflag sexp
-  | Pcf_meth (_, _, _, sexp, loc) ->
+  | Pcf_meth (_, _, _, sexp) ->
+      let loc = cf.pcf_loc in
       if !instr_fun && not loc.loc_ghost then insert_profile rw_exp sexp
       else rewrite_exp iflag sexp
   | Pcf_init sexp ->
       rewrite_exp iflag sexp
-  | Pcf_valvirt _ | Pcf_virt _ | Pcf_cstr _  -> ()
+  | Pcf_valvirt _ | Pcf_virt _ | Pcf_constr _  -> ()
 
 and rewrite_class_expr iflag cexpr =
   match cexpr.pcl_desc with
     Pcl_constr _ -> ()
-  | Pcl_structure (_, fields) ->
-      List.iter (rewrite_class_field iflag) fields
+  | Pcl_structure st ->
+      List.iter (rewrite_class_field iflag) st.pcstr_fields
   | Pcl_fun (_, _, _, cexpr) ->
       rewrite_class_expr iflag cexpr
   | Pcl_apply (cexpr, exprs) ->
diff --git a/tools/pprintast.ml b/tools/pprintast.ml
new file mode 100644 (file)
index 0000000..1196874
--- /dev/null
@@ -0,0 +1,2159 @@
+(**************************************************************************)
+(*                                                                        *)
+(*                                OCaml                                   *)
+(*                                                                        *)
+(*    Thomas Gazagnaire (OCamlPro), Fabrice Le Fessant (INRIA Saclay)     *)
+(*                                                                        *)
+(*   Copyright 2007 Institut National de Recherche en Informatique et     *)
+(*   en Automatique.  All rights reserved.  This file is distributed      *)
+(*   under the terms of the Q Public License version 1.0.                 *)
+(*                                                                        *)
+(**************************************************************************)
+
+(* Original Code from Ber-metaocaml, modified fo 3.12.0 and fixed *)
+
+(* Printing code expressions *)
+(* Authors:  Ed Pizzi, Fabrice Le Fessant *)
+
+open Asttypes
+open Format
+open Location
+open Lexing
+open Parsetree
+
+
+(* borrowed from printast.ml *)
+let fmt_position f l =
+  if l.pos_fname = "" && l.pos_lnum = 1
+  then fprintf f "%d" l.pos_cnum
+  else if l.pos_lnum = -1
+  then fprintf f "%s[%d]" l.pos_fname l.pos_cnum
+  else fprintf f "%s[%d,%d+%d]" l.pos_fname l.pos_lnum l.pos_bol
+               (l.pos_cnum - l.pos_bol)
+;;
+
+let fmt_location f loc =
+  fprintf f "(%a..%a)" fmt_position loc.loc_start fmt_position loc.loc_end;
+  if loc.loc_ghost then fprintf f " ghost";
+;;
+
+let line i f s (*...*) =
+  fprintf f "%s" (String.make (2*i) ' ');
+  fprintf f s (*...*)
+;;
+
+let label i ppf x = line i ppf "label=\"%s\"\n" x;;
+
+(* end borrowing *)
+
+
+let indent    = 1 ;; (* standard indentation increment *)
+let bar_on_first_case = true ;;
+
+(* These sets of symbols are taken from the manual. However, it's
+   unclear what the sets infix_symbols and prefix_symbols are for, as
+   operator_chars, which contains their union seems to be the only set
+   useful to determine whether an identifier is prefix or infix.
+   The set postfix_chars I added, which is the set of characters allowed
+   at the end of an identifier to allow for internal MetaOCaml variable
+   renaming. *)
+
+let prefix_symbols  = [ '!'; '?'; '~' ] ;;
+let infix_symbols = [ '='; '<'; '>'; '@'; '^'; '|'; '&'; '+'; '-';
+                       '*'; '/'; '$'; '%' ] ;;
+let operator_chars = [ '!'; '$'; '%'; '&'; '*'; '+'; '-'; '.'; '/';
+                       ':'; '<'; '='; '>'; '?'; '@'; '^'; '|'; '~' ] ;;
+let numeric_chars  = [ '0'; '1'; '2'; '3'; '4'; '5'; '6'; '7'; '8'; '9' ] ;;
+
+type fixity =
+  | Infix
+  | Prefix ;;
+
+let is_infix fx =
+  match fx with
+  | Infix  -> true
+  | Prefix -> false ;;
+
+let special_infix_strings =
+  ["asr"; "land"; "lor"; "lsl"; "lsr"; "lxor"; "mod"; "or"; ":="; "!=" ] ;;
+
+
+(*
+let is_special_infix_string s =
+   List.exists (fun x -> (x = s)) special_infix_strings ;;
+*)
+
+let is_in_list e l = List.exists (fun x -> (x = e)) l
+
+
+(* determines if the string is an infix string.
+   checks backwards, first allowing a renaming postfix ("_102") which
+   may have resulted from Pexp -> Texp -> Pexp translation, then checking
+   if all the characters in the beginning of the string are valid infix
+   characters. *)
+let fixity_of_string s =
+  if ((is_in_list s special_infix_strings)
+      || (is_in_list (String.get s 0) infix_symbols)) then Infix else Prefix
+
+let fixity_of_longident li =
+  match li.txt with
+  | Longident.Lident name ->
+      fixity_of_string name
+(* This is wrong (and breaks RTT):
+  | Longident.Ldot (_, name)
+    when is_in_list name special_infix_strings -> Infix
+*)
+  | _ -> Prefix ;;
+
+let fixity_of_exp e =
+  match e.pexp_desc with
+  | Pexp_ident (li) ->
+      (fixity_of_longident li)
+(*
+  | Pexp_cspval (_,li) ->
+         if false (* default valu of !Clflags.prettycsp *)
+         then (fixity_of_longident li)
+         else Prefix
+*)
+      | _ -> Prefix ;;
+
+let rec fmt_longident_aux f x =
+  match x with
+  | Longident.Lident s -> fprintf f "%s" s;
+  | Longident.Ldot(y, s) when is_in_list s special_infix_strings ->
+      fprintf f "%a.( %s )@ " fmt_longident_aux y s
+(* This is wrong (and breaks RTT):
+      fprintf f "@ %s@ " s
+*)
+  | Longident.Ldot (y, s) ->
+      begin
+            match s.[0] with
+          'a'..'z' | 'A'..'Z' ->
+            fprintf f "%a.%s" fmt_longident_aux y s
+        | _ ->
+            fprintf f "%a.( %s )@ " fmt_longident_aux y s
+
+      end
+
+  | Longident.Lapply (y, z) ->
+      fprintf f "%a(%a)" fmt_longident_aux y fmt_longident_aux z;
+;;
+
+let fmt_longident ppf x = fprintf ppf "%a" fmt_longident_aux x.txt;;
+
+let fmt_char f c =
+  let i = int_of_char c in
+  if (i < 32) || (i >= 128) then
+    fprintf f "'\\%03d'" (Char.code c)
+  else
+  match c with
+    '\'' | '\\' ->
+      fprintf f "'\\%c'" c
+  | _ ->
+    fprintf f "'%c'" c;;
+
+let fmt_constant f x =
+  match x with
+  | Const_int (i) ->
+      if (i < 0) then fprintf f "(%d)" i
+      else fprintf f "%d" i;
+  | Const_char (c) -> fprintf f "%a" fmt_char c ;
+  | Const_string (s) ->
+      fprintf f "%S" s;
+  | Const_float (s) ->
+      if ((String.get s 0) = '-') then fprintf f "(%s)" s
+      else fprintf f "%s" s;
+      (* maybe parenthesize all floats for consistency? *)
+  | Const_int32 (i) ->
+      if i < 0l then fprintf f "(%ldl)" i
+      else fprintf f "%ldl" i;
+  | Const_int64 (i) ->
+      if i < 0L then fprintf f "(%LdL)" i
+      else fprintf f "%LdL" i;
+  | Const_nativeint (i) ->
+      if i < 0n then
+        fprintf f "(%ndn)" i
+      else fprintf f "%ndn" i;
+;;
+
+let fmt_mutable_flag ppf x =
+  match x with
+  | Immutable -> ();
+  | Mutable -> fprintf ppf "mutable ";
+;;
+
+let string ppf s =
+  fprintf ppf "%s" s ;;
+
+let text ppf s =
+  fprintf ppf "%s" s.txt ;;
+
+let constant_string ppf s =
+  fprintf ppf "\"%s\"" (String.escaped s) ;;
+
+let fmt_virtual_flag f x =
+  match x with
+  | Virtual -> fprintf f "virtual ";
+  | Concrete -> ();
+;;
+
+let list f ppf l =
+  let n = List.length l in
+  List.iteri (fun i fmt ->
+    f ppf fmt;
+    if i < n-1 then
+      Format.fprintf ppf "\n")
+    l;;
+
+(* List2 - applies f to each element in list l, placing break hints
+     and a separator string between the resulting outputs.          *)
+
+let rec list2 f ppf l ?(indent=0) ?(space=1) ?(breakfirst=false)
+              ?(breaklast=false) sep =
+  match l with
+    [] -> if (breaklast=true) then pp_print_break ppf space indent;
+  | (last::[]) ->
+        if (breakfirst=true) then pp_print_break ppf space indent;
+        f ppf last;
+        if (breaklast=true) then pp_print_break ppf space indent;
+  | (first::rest) ->
+        if (breakfirst=true) then pp_print_break ppf space indent;
+        f ppf first ;
+        fprintf ppf sep;
+        pp_print_break ppf space indent;
+        list2 f ppf rest ~indent:indent ~space:space
+              ~breakfirst:false ~breaklast:breaklast sep ;;
+
+let type_var_print ppf str =
+  fprintf ppf "'%s" str.txt ;;
+
+let type_var_option_print ppf str =
+  match str with
+      None -> () (* TODO check *)
+    | Some str ->
+      fprintf ppf "'%s" str.txt ;;
+
+let fmt_class_params ppf (l, loc) =
+  let length = (List.length l) in
+  if (length = 0) then ()
+  else if (length = 1) then
+    fprintf ppf "%s@ " (List.hd l)
+  else begin
+    fprintf ppf "(" ;
+    list2 string ppf l "," ;
+    fprintf ppf ")@ " ;
+  end ;;
+
+let fmt_class_params_def ppf (l, loc) =
+  let length = (List.length l) in
+  if (length = 0) then ()
+  else begin
+    fprintf ppf "[" ;
+    list2 type_var_print ppf l "," ;
+    fprintf ppf "]@ ";
+  end ;;
+
+let fmt_rec_flag f x =
+  match x with
+  | Nonrecursive -> ();
+  | Recursive | Default -> fprintf f " rec";
+    (* todo - what is "default" recursion??
+        this seemed safe, as it's better to falsely make a non-recursive
+        let recursive than the opposite. *)
+;;
+
+let fmt_direction_flag ppf x =
+  match x with
+  | Upto   -> fprintf ppf "to" ;
+  | Downto -> fprintf ppf "downto" ;
+;;
+
+let fmt_private_flag f x =
+  match x with
+  | Public -> () ; (* fprintf f "Public"; *)
+  | Private -> fprintf f "private ";
+;;
+
+let option f ppf x = (* DELETE *)
+  match x with
+  | None -> () ;
+  | Some x ->
+      line 0 ppf "Some\n";
+      f ppf x;
+;;
+
+let option_quiet_p f ppf x =
+  match x with
+  | None -> ();
+  | Some x ->
+      fprintf ppf "@ (" ;
+      f ppf x;
+      fprintf ppf ")";
+;;
+
+let option_quiet f ppf x =
+  match x with
+  | None -> ();
+  | Some x ->
+      fprintf ppf "@ " ;
+      f ppf x;
+;;
+
+let rec expression_is_terminal_list exp =
+  match exp with
+  | {pexp_desc = Pexp_construct ({ txt = Longident.Lident("[]")}, None, _)}
+     -> true ;
+  | {pexp_desc = Pexp_construct ({ txt = Longident.Lident("::")},
+                   Some({pexp_desc = Pexp_tuple([exp1 ; exp2])}), _)}
+     -> (expression_is_terminal_list exp2)
+  | {pexp_desc = _}
+     -> false
+;;
+
+let rec core_type ppf x =
+  match x.ptyp_desc with
+  | Ptyp_any -> fprintf ppf "_";         (* done *)
+  | Ptyp_var (s) -> fprintf ppf "'%s" s; (* done *)
+  | Ptyp_arrow (l, ct1, ct2) ->          (* done *)
+      pp_open_hovbox ppf indent ;
+      fprintf ppf "(" ;
+      (match l with
+        | "" -> core_type ppf ct1;
+        | s when (String.get s 0 = '?')  ->
+            (match ct1.ptyp_desc with
+              | Ptyp_constr ({ txt = Longident.Lident ("option")}, l) ->
+                  fprintf ppf "%s :@ " s ;
+                  type_constr_list ppf l ;
+              | _ -> core_type ppf ct1; (* todo: what do we do here? *)
+            );
+        | s ->
+            fprintf ppf "%s :@ " s ;
+           core_type ppf ct1; (* todo: what do we do here? *)
+      );
+      fprintf ppf "@ ->@ " ;
+      core_type ppf ct2 ;
+      fprintf ppf ")" ;
+      pp_close_box ppf () ;
+  | Ptyp_tuple l ->                      (* done *)
+      pp_open_hovbox ppf indent ;
+      fprintf ppf "(" ;
+      list2 core_type ppf l " *" ;
+      fprintf ppf ")" ;
+      pp_close_box ppf () ;
+  | Ptyp_constr (li, l) ->               (* done *)
+      pp_open_hovbox ppf indent ;
+      type_constr_list ppf ~space:true l ;
+      fprintf ppf "%a" fmt_longident li ;
+      pp_close_box ppf () ;
+  | Ptyp_variant (l, closed, low) ->
+      pp_open_hovbox ppf indent ;
+      (match closed with
+        | true  -> fprintf ppf "[ " ;
+        | false -> fprintf ppf "[> " ;
+      );
+      list2 type_variant_helper ppf l " |" ;
+      fprintf ppf " ]";
+      pp_close_box ppf () ;
+  | Ptyp_object (l) ->
+      if ((List.length l) > 0) then begin
+          pp_open_hovbox ppf indent ;
+          fprintf ppf "< " ;
+          list2 core_field_type ppf l " ;" ;
+          fprintf ppf " >" ;
+          pp_close_box ppf () ;
+        end else fprintf ppf "< >" ;
+(* line i ppf "Ptyp_object\n";
+         list i core_field_type ppf l; *)
+  | Ptyp_class (li, l, low) ->           (* done... sort of *)
+      pp_open_hovbox ppf indent ;
+      list2 core_type ppf l ~breaklast:true "" ;
+      fprintf ppf "#%a" fmt_longident li;
+      if ((List.length low) < 0) then begin (* done, untested *)
+          fprintf ppf "@ [> " ;
+          list2 class_var ppf low "" ;
+          fprintf ppf " ]";
+        end ;
+      pp_close_box ppf ();
+(* line i ppf "Ptyp_class %a\n" fmt_longident li;
+         list i core_type ppf l;
+         list i string ppf low *)
+  | Ptyp_alias (ct, s) ->                (* done *)
+      pp_open_hovbox ppf indent ;
+      fprintf ppf "(" ;
+      core_type ppf ct ;
+      fprintf ppf "@ as@ '%s)" s;
+      pp_close_box ppf () ;
+  | Ptyp_poly (sl, ct) ->                (* done? *)
+      pp_open_hovbox ppf indent ;
+      if ((List.length sl) > 0) then begin
+          list2 (fun ppf x -> fprintf ppf "'%s" x) ppf sl ~breaklast:true "";
+          fprintf ppf ".@ " ;
+        end ;
+      core_type ppf ct ;
+      pp_close_box ppf () ;
+  | Ptyp_package (lid, cstrs) ->
+      fprintf ppf "(module %a@ " fmt_longident lid;
+      pp_open_hovbox ppf indent;
+      begin match cstrs with
+          [] -> ()
+        | _ ->
+            fprintf ppf "@ with@ ";
+            string_x_core_type_ands ppf cstrs ;
+      end;
+      pp_close_box ppf ();
+      fprintf ppf ")";
+
+and class_var ppf s =
+  fprintf ppf "`%s" s ;
+
+and core_field_type ppf x =
+  match x.pfield_desc with
+  | Pfield (s, ct) ->
+      pp_open_hovbox ppf indent ;
+      fprintf ppf "%s :@ " s;
+      core_type ppf ct;
+      pp_close_box ppf () ;
+  | Pfield_var ->
+      fprintf ppf "..";
+
+and type_constr_list ppf ?(space=false) l =
+  match (List.length l) with
+  | 0 -> ()
+  | 1 -> list2 core_type ppf l "" ;
+      if (space) then fprintf ppf " " ;
+  | _ -> fprintf ppf "(" ;
+      list2 core_type ppf l "," ;
+      fprintf ppf ")" ;
+      if (space) then fprintf ppf " " ;
+
+and pattern_with_label ppf x s =
+  if (s = "") then simple_pattern ppf x
+  else begin
+      let s =
+        if (String.get s 0 = '?') then begin
+            fprintf ppf "?" ;
+            String.sub s 1 ((String.length s) - 1)
+          end else begin
+            fprintf ppf "~" ;
+            s
+          end in
+      fprintf ppf "%s" s ;
+      match x.ppat_desc with
+      | Ppat_var (s2) ->
+          if (s <> s2.txt) then begin
+              fprintf ppf ":" ;
+              simple_pattern ppf x ;
+            end
+      | _ -> fprintf ppf ":" ;
+          simple_pattern ppf x
+    end ;
+
+and pattern_with_when ppf whenclause x =
+  match whenclause with
+  | None -> pattern ppf x ;
+  | Some (e) ->
+      pp_open_hovbox ppf indent ;
+      pattern ppf x ;
+      fprintf ppf "@ when@ " ;
+      expression ppf e ;
+      pp_close_box ppf () ;
+
+and pattern ppf x =
+  match x.ppat_desc with
+    | Ppat_construct (li, po, b) ->
+      pp_open_hovbox ppf indent ;
+      (match li.txt,po with
+        | Longident.Lident("::"),
+          Some ({ppat_desc = Ppat_tuple([pat1; pat2])}) ->
+            fprintf ppf "(" ;
+            pattern ppf pat1 ;
+            fprintf ppf "@ ::@ " ;
+            pattern_list_helper ppf pat2 ;
+            fprintf ppf ")";
+        | _,_ ->
+            fprintf ppf "%a" fmt_longident li;
+            option_quiet pattern_in_parens ppf po;);
+      pp_close_box ppf () ;
+(* OXX what is this boolean ??
+         bool i ppf b;               *)
+
+  | _ ->
+      simple_pattern ppf x
+
+and simple_pattern ppf x =
+  match x.ppat_desc with
+  | Ppat_construct (li, None, _) ->
+      fprintf ppf "%a@ " fmt_longident li
+  | Ppat_any -> fprintf ppf "_";            (* OXX done *)
+  | Ppat_var ({txt = txt}) ->
+      if (is_infix (fixity_of_string txt)) || List.mem txt.[0] prefix_symbols then
+        fprintf ppf "(%s)" txt                (* OXX done *)
+      else
+        fprintf ppf "%s" txt;
+  | Ppat_alias (p, s) ->                    (* OXX done ... *)
+      pp_open_hovbox ppf indent ;
+      fprintf ppf "(" ;
+      pattern ppf p ;
+      fprintf ppf " as@ %s)" s.txt;
+      pp_close_box ppf () ;
+  | Ppat_constant (c) ->                    (* OXX done *)
+      fprintf ppf "%a" fmt_constant c;
+  | Ppat_tuple (l) ->                       (* OXX done *)
+      fprintf ppf "@[<hov 1>(";
+      list2 pattern ppf l ",";
+      fprintf ppf "@])";
+  | Ppat_variant (l, po) ->
+      (match po with
+        | None ->
+            fprintf ppf "`%s" l;
+        | Some (p) ->
+            pp_open_hovbox ppf indent ;
+            fprintf ppf "(`%s@ " l ;
+            pattern ppf p ;
+            fprintf ppf ")" ;
+            pp_close_box ppf () ;
+      );
+  | Ppat_record (l, closed) ->                     (* OXX done *)
+      fprintf ppf "{" ;
+      list2 longident_x_pattern ppf l ";" ;
+      begin match closed with
+          Open -> fprintf ppf "_ ";
+        | Closed -> ()
+      end;
+      fprintf ppf "}" ;
+  | Ppat_array (l) ->                      (* OXX done *)
+      pp_open_hovbox ppf 2 ;
+      fprintf ppf "[|" ;
+      list2 pattern ppf l ";" ;
+      fprintf ppf "|]" ;
+      pp_close_box ppf () ;
+  | Ppat_or (p1, p2) ->                    (* OXX done *)
+      pp_open_hovbox ppf indent ;
+      fprintf ppf "(" ;
+      pattern ppf p1 ;
+      fprintf ppf "@ | " ;
+      pattern ppf p2 ;
+      fprintf ppf ")" ;
+      pp_close_box ppf () ;
+  | Ppat_constraint (p, ct) ->             (* OXX done, untested *)
+      fprintf ppf "(" ;
+      pattern ppf p ;
+      fprintf ppf " :" ;
+      pp_print_break ppf 1 indent ;
+      core_type ppf ct ;
+      fprintf ppf ")" ;
+  | Ppat_type (li) ->                        (* OXX done *)
+      fprintf ppf "#%a" fmt_longident li ;
+  | Ppat_lazy p ->
+      pp_open_hovbox ppf indent ;
+      fprintf ppf "(lazy @ ";
+      pattern ppf p ;
+      fprintf ppf ")" ;
+      pp_close_box ppf ()
+  | Ppat_unpack (s) ->
+      fprintf ppf "(module@ %s)@ " s.txt
+  | _ ->
+      fprintf ppf "@[<hov 1>(";
+      pattern ppf x;
+      fprintf ppf "@])";
+
+and simple_expr ppf x =
+  match x.pexp_desc with
+  | Pexp_construct (li, None, _) ->
+      fprintf ppf "%a@ " fmt_longident li
+  | Pexp_ident (li) -> (* was (li, b) *)
+      if is_infix (fixity_of_longident li)
+       || match li.txt with
+         | Longident.Lident (li) -> List.mem li.[0] prefix_symbols
+         | _ -> false
+      then
+        fprintf ppf "(%a)" fmt_longident li
+      else
+        fprintf ppf "%a" fmt_longident li ;
+  | Pexp_constant (c) -> fprintf ppf "%a" fmt_constant c;
+  | Pexp_pack (me) ->
+      fprintf ppf "(module@ ";
+      pp_open_hovbox ppf indent;
+      module_expr ppf me;
+      pp_close_box ppf ();
+      fprintf ppf ")";
+  | Pexp_newtype (lid, e) ->
+      fprintf ppf "fun (type %s)@ " lid;
+      expression ppf e
+  | Pexp_tuple (l) ->
+      fprintf ppf "@[<hov 1>(";
+      list2 simple_expr ppf l ",";
+      fprintf ppf ")@]";
+  | Pexp_variant (l, eo) ->
+      pp_open_hovbox ppf indent ;
+      fprintf ppf "`%s" l ;
+      option_quiet expression ppf eo ;
+      pp_close_box ppf () ;
+  | Pexp_record (l, eo) ->
+      pp_open_hovbox ppf indent ; (* maybe just 1? *)
+      fprintf ppf "{" ;
+      begin
+        match eo with
+          None -> ()
+        | Some e ->
+            expression ppf e;
+            fprintf ppf "@ with@ "
+      end;
+      list2 longident_x_expression ppf l ";" ;
+      fprintf ppf "}" ;
+      pp_close_box ppf () ;
+  | Pexp_array (l) ->
+      pp_open_hovbox ppf 2 ;
+      fprintf ppf "[|" ;
+      list2 simple_expr ppf l ";" ;
+      fprintf ppf "|]" ;
+      pp_close_box ppf () ;
+  | Pexp_while (e1, e2) ->
+      pp_open_hvbox  ppf 0 ;
+      pp_open_hovbox ppf indent ;
+      fprintf ppf "while@ " ;
+      expression ppf e1 ;
+      fprintf ppf " do" ;
+      pp_close_box ppf () ;
+      pp_print_break ppf 1 indent ;
+      expression_sequence ppf e2 ~first:false;
+      pp_print_break ppf 1 0 ;
+      fprintf ppf "done" ;
+      pp_close_box ppf () ;
+  | Pexp_for (s, e1, e2, df, e3) ->
+      pp_open_hvbox  ppf 0 ;
+      pp_open_hovbox ppf indent ;
+      fprintf ppf "for %s =@ " s.txt ;
+      expression ppf e1 ;
+      fprintf ppf "@ %a@ " fmt_direction_flag df ;
+      expression ppf e2 ;
+      fprintf ppf " do" ;
+      pp_close_box ppf () ;
+
+      pp_print_break ppf 1 indent ;
+      expression_sequence ppf ~first:false e3 ;
+      pp_print_break ppf 1 0 ;
+      fprintf ppf "done" ;
+      pp_close_box ppf () ;
+
+
+  | _ ->
+      fprintf ppf "(@ ";
+      expression ppf x;
+      fprintf ppf "@ )"
+
+and expression ppf x =
+  match x.pexp_desc with
+  | Pexp_let (rf, l, e) ->
+      let l1 = (List.hd l) in
+      let l2 = (List.tl l) in
+      pp_open_hvbox ppf 0 ;
+      pp_open_hvbox ppf indent ;
+      fprintf ppf "let%a " fmt_rec_flag rf;
+      pattern_x_expression_def ppf l1;
+      pattern_x_expression_def_list ppf l2;
+      pp_close_box ppf () ;
+      fprintf ppf " in" ;
+      pp_print_space ppf () ;
+      expression_sequence ppf ~first:false ~indent:0 e ;
+      pp_close_box ppf () ;
+  | Pexp_function (label, None, [
+        { ppat_desc = Ppat_var { txt ="*opt*" } },
+        { pexp_desc = Pexp_let (_, [
+              arg ,
+              { pexp_desc = Pexp_match (_, [ _; _, eo ] ) } ], e) }
+      ]
+    ) ->
+      expression ppf { x with pexp_desc = Pexp_function(label, Some eo,
+          [arg, e]) }
+
+  | Pexp_function (p, eo, l) ->
+      if (List.length l = 1) then begin
+          pp_open_hvbox ppf indent;
+          fprintf ppf "fun " ;
+          pattern_x_expression_case_single ppf (List.hd l) eo p
+        end else begin
+          pp_open_hvbox ppf 0;
+          fprintf ppf "function" ;
+          option_quiet expression_in_parens ppf eo ;
+          pp_print_space ppf () ;
+          pattern_x_expression_case_list ppf l ;
+        end ;
+      pp_close_box ppf ();
+  | Pexp_apply (e, l) -> (* was (e, l, _) *)
+      let fixity = (is_infix (fixity_of_exp e)) in
+      let sd =
+        (match e.pexp_desc with
+          | Pexp_ident ({ txt = Longident.Ldot (Longident.Lident(modname), valname) })
+            -> (modname, valname)
+          | Pexp_ident ({ txt = Longident.Lident(valname) })
+            -> ("",valname)
+          | _ -> ("",""))
+      in
+      (match sd,l with
+        | ("Array", "get"), [(_,exp1) ; (_,exp2)] ->
+            pp_open_hovbox ppf indent;
+            (match exp1.pexp_desc with
+              | Pexp_ident (_) ->
+                  expression ppf exp1 ;
+              | _ ->
+                  expression_in_parens ppf exp1 ;
+            );
+            fprintf ppf ".";
+            expression_in_parens ppf exp2;
+            pp_close_box ppf ();
+        | ("Array", "set"), [(_,array) ; (_,index) ; (_, valu)] ->
+            pp_open_hovbox ppf indent;
+            (match array.pexp_desc with
+              | Pexp_ident (_) ->
+                  expression ppf array ;
+              | _ ->
+                  expression_in_parens ppf array ;
+            );
+            fprintf ppf ".";
+            expression_in_parens ppf index;
+            fprintf ppf "@ <-@ ";
+            expression ppf valu;
+            pp_close_box ppf ();
+        | ("","!"),[(_,exp1)] ->
+            fprintf ppf "!" ;
+            simple_expr ppf exp1 ;
+(* | ("","raise"),[(_,exp)] ->
+               fprintf ppf "raising [" ;
+               expression ppf exp;
+               fprintf ppf "], says %s" st; *)
+        | (_,_) ->
+            pp_open_hovbox ppf (indent + 1) ;
+            fprintf ppf "(" ;
+            if (fixity = false) then
+              begin
+                (match e.pexp_desc with
+                  | Pexp_ident(_) -> expression ppf e ;
+                  | Pexp_send (_,_) -> expression ppf e ;
+                  | _ -> pp_open_hovbox ppf indent;
+                      expression_in_parens ppf e ;
+                      pp_close_box ppf () );
+                fprintf ppf "@ " ;
+                list2 label_x_expression_param ppf l "";
+              end
+            else begin
+                match l with
+                  [ arg1; arg2 ] ->
+                    label_x_expression_param ppf arg1 ;
+                    pp_print_space ppf () ;
+                    (match e.pexp_desc with
+                      | Pexp_ident(li) ->
+(* override parenthesization of infix identifier *)
+                          fprintf ppf "%a" fmt_longident li ;
+                      | _ -> simple_expr ppf e) ;
+                    pp_print_space ppf () ;
+                    label_x_expression_param ppf arg2
+                | _ ->
+(* fprintf ppf "(" ; *)
+                    simple_expr ppf e ;
+(* fprintf ppf ")" ; *)
+                    list2 label_x_expression_param ppf l ~breakfirst:true ""
+              end ;
+            fprintf ppf ")" ;
+            pp_close_box ppf () ;)
+  | Pexp_match (e, l) ->
+      fprintf ppf "(" ;
+      pp_open_hvbox ppf 0;
+      pp_open_hovbox ppf 2;
+      fprintf ppf "match@ " ;
+      expression ppf e ;
+      fprintf ppf " with" ;
+      pp_close_box ppf () ;
+      pp_print_space ppf () ;
+      pattern_x_expression_case_list ppf l ;
+      pp_close_box ppf () ;
+      fprintf ppf ")" ;
+  | Pexp_try (e, l) ->
+      fprintf ppf "(";
+      pp_open_vbox ppf 0; (* <-- always break here, says style manual *)
+      pp_open_hvbox ppf 0;
+      fprintf ppf "try";
+      pp_print_break ppf 1 indent ;
+      expression_sequence ppf ~first:false e;
+      pp_print_break ppf 1 0;
+      fprintf ppf "with";
+      pp_close_box ppf ();
+      pp_print_cut ppf ();
+      pattern_x_expression_case_list ppf l ;
+      pp_close_box ppf ();
+      fprintf ppf ")";
+  | Pexp_construct (li, eo, b) ->
+      (match li.txt with
+        | Longident.Lident ("::") ->
+            (match eo with
+                Some ({pexp_desc = Pexp_tuple ([exp1 ; exp2])}) ->
+                  pp_open_hovbox ppf indent ;
+                  if (expression_is_terminal_list exp2) then begin
+                      fprintf ppf "[" ;
+                      simple_expr ppf exp1 ;
+                      expression_list_helper ppf exp2 ;
+                      fprintf ppf "]" ;
+                    end else begin
+                      pp_open_hovbox ppf indent ;
+                      fprintf ppf "(@ ";
+                      simple_expr ppf exp1 ;
+                      fprintf ppf " ) ::@ " ;
+                      expression_list_nonterminal ppf exp2 ;
+                      fprintf ppf "@ " ;
+                      pp_close_box ppf () ;
+                    end ;
+                  pp_close_box ppf () ;
+              | _ -> assert false
+            );
+        | Longident.Lident ("()") -> fprintf ppf "()" ;
+        | _ ->
+            fprintf ppf "(";
+            pp_open_hovbox ppf indent ;
+            fmt_longident ppf li;
+            option_quiet expression_in_parens ppf eo;
+            pp_close_box ppf () ;
+            fprintf ppf ")"
+      );
+  | Pexp_field (e, li) ->
+      pp_open_hovbox ppf indent ;
+      (match e.pexp_desc with
+        | Pexp_ident (_) ->
+            simple_expr ppf e ;
+        | _ ->
+            expression_in_parens ppf e ;
+      );
+      fprintf ppf ".%a" fmt_longident li ;
+      pp_close_box ppf () ;
+  | Pexp_setfield (e1, li, e2) ->
+      pp_open_hovbox ppf indent ;
+      (match e1.pexp_desc with
+        | Pexp_ident (_) ->
+            simple_expr ppf e1 ;
+        | _ ->
+            expression_in_parens ppf e1 ;
+      );
+      fprintf ppf ".%a" fmt_longident li;
+      fprintf ppf "@ <-@ ";
+      expression ppf e2;
+      pp_close_box ppf () ;
+  | Pexp_ifthenelse (e1, e2, eo) ->
+      fprintf ppf "@[<hv 0>" ;
+      expression_if_common ppf e1 e2 eo;
+      fprintf ppf "@]";
+
+  | Pexp_sequence (e1, e2) ->
+      fprintf ppf "@[<hv 0>begin" ;
+      pp_print_break ppf 1 indent ;
+(* "@;<1 2>" ; *)
+      expression_sequence ppf ~first:false x ;
+      fprintf ppf "@;<1 0>end@]" ;
+  | Pexp_constraint (e, cto1, cto2) ->
+      (match (cto1, cto2) with
+        | (None, None) -> expression ppf e ;
+        | (Some (x1), Some (x2)) ->
+            pp_open_hovbox ppf 2 ;
+            fprintf ppf "(" ;
+            expression ppf e ;
+            fprintf ppf " :@ " ;
+            core_type ppf x1 ;
+            fprintf ppf " :>@ " ;
+            core_type ppf x2 ;
+            fprintf ppf ")" ;
+            pp_close_box ppf () ;
+        | (Some (x), None) ->
+            pp_open_hovbox ppf 2 ;
+            fprintf ppf "(" ;
+            expression ppf e ;
+            fprintf ppf " :@ " ;
+            core_type ppf x ;
+            fprintf ppf ")" ;
+            pp_close_box ppf ()
+        | (None, Some (x)) ->
+            pp_open_hovbox ppf 2 ;
+            fprintf ppf "(" ;
+            expression ppf e ;
+            fprintf ppf " :>@ " ;
+            core_type ppf x ;
+            fprintf ppf ")" ;
+            pp_close_box ppf ()
+      )
+  | Pexp_when (e1, e2) ->
+      assert false ;
+(* This is a wierd setup. The ocaml phrase
+          "pattern when condition -> expression"
+          found in pattern matching contexts is encoded as:
+          "pattern -> when condition expression"
+         Thus, the when clause ("when condition"), which one might expect
+          to be part of the pattern, is encoded as part of the expression
+          following the pattern.
+         A "when clause" should never exist in a vaccum. It should always
+          occur in a pattern matching context and be printed as part of the
+          pattern (in pattern_x_expression_case_list).
+         Thus these Pexp_when expressions are printed elsewhere, and if
+          this code is executed, an error has occurred. *)
+  | Pexp_send (e, s) ->
+      pp_open_hovbox ppf indent;
+      (match e.pexp_desc with
+        | Pexp_ident(_) ->
+            expression ppf e;
+            fprintf ppf "#%s" s;
+        | _ ->
+            fprintf ppf "(" ;
+            expression_in_parens ppf e;
+            fprintf ppf "@,#%s" s;
+            fprintf ppf ")"
+      );
+      pp_close_box ppf (); (* bug fixed? *)
+  | Pexp_new (li) ->
+      pp_open_hovbox ppf indent;
+      fprintf ppf "new@ %a" fmt_longident li;
+      pp_close_box ppf ();
+  | Pexp_setinstvar (s, e) ->
+      pp_open_hovbox ppf indent;
+      fprintf ppf "%s <-@ " s.txt;
+      expression ppf e;
+      pp_close_box ppf ();
+  | Pexp_override (l) ->
+      pp_open_hovbox ppf indent ;
+      fprintf ppf "{< " ;
+      if ((List.length l) > 0) then begin
+          list2 string_x_expression ppf l ";";
+          fprintf ppf " " ;
+        end ;
+      fprintf ppf ">}" ;
+      pp_close_box ppf () ;
+  | Pexp_letmodule (s, me, e) ->
+      pp_open_hvbox ppf 0 ;
+      pp_open_hovbox ppf indent ;
+      fprintf ppf "let module %s =@ " s.txt ;
+      module_expr ppf me ;
+      fprintf ppf " in" ;
+      pp_close_box ppf () ;
+      pp_print_space ppf () ;
+      expression_sequence ppf ~first:false ~indent:0 e ;
+      pp_close_box ppf () ;
+  | Pexp_assert (e) ->
+      pp_open_hovbox ppf indent ;
+      fprintf ppf "assert@ " ;
+      expression ppf e ;
+      pp_close_box ppf () ;
+  | Pexp_assertfalse ->
+      fprintf ppf "assert false" ;
+  | Pexp_lazy (e) ->
+      pp_open_hovbox ppf indent ;
+      fprintf ppf "lazy@ " ;
+      simple_expr ppf e ;
+      pp_close_box ppf () ;
+  | Pexp_poly (e, cto) ->
+(* should this even print by itself? *)
+      (match cto with
+        | None -> expression ppf e ;
+        | Some (ct) ->
+            pp_open_hovbox ppf indent ;
+            expression ppf e ;
+            fprintf ppf "@ (* poly:@ " ;
+            core_type ppf ct ;
+            fprintf ppf " *)" ;
+            pp_close_box ppf () );
+  | Pexp_object cs ->
+      pp_open_hovbox ppf indent ;
+      class_structure ppf cs ;
+      pp_close_box ppf () ;
+  | Pexp_open (lid, e) ->
+      pp_open_hvbox ppf 0 ;
+      fprintf ppf "let open@ %a in@ " fmt_longident lid;
+      expression_sequence ppf ~first:false ~indent:0 e ;
+      pp_close_box ppf () ;
+  | _ -> simple_expr ppf x
+
+
+and value_description ppf x =
+  pp_open_hovbox ppf indent ;
+  core_type ppf x.pval_type;
+  if ((List.length x.pval_prim) > 0) then begin
+      fprintf ppf " =@ " ;
+      list2 constant_string ppf x.pval_prim "";
+    end ;
+  pp_close_box ppf () ;
+
+and type_declaration ppf x =
+  pp_open_hovbox ppf indent ;
+  (match x.ptype_manifest with
+     | None -> ()
+     | Some(y) ->
+        core_type ppf y;
+        match x.ptype_kind with
+          | Ptype_variant _ | Ptype_record _ -> fprintf ppf " = "
+          | Ptype_abstract -> ());
+  (match x.ptype_kind with
+    | Ptype_variant (first::rest) ->
+        pp_open_hovbox ppf indent ;
+
+        pp_open_hvbox ppf 0 ;
+        type_variant_leaf ppf first true ;
+        type_variant_leaf_list ppf rest ;
+(* string_x_core_type_list ppf lst; *)
+        pp_close_box ppf () ;
+
+        pp_close_box ppf () ;
+    | Ptype_variant [] ->
+        assert false ;
+    | Ptype_abstract -> ()
+    | Ptype_record l ->
+
+        pp_open_hovbox ppf indent ;
+
+        fprintf ppf "{" ;
+        pp_print_break ppf 0 indent ;
+        pp_open_hvbox ppf 0;
+        list2 type_record_field ppf l ";" ;
+        pp_close_box ppf () ;
+        fprintf ppf "@," ;
+        pp_close_box ppf () ;
+        fprintf ppf "}" ;
+
+        pp_close_box ppf () ;
+  );
+  list2 typedef_constraint ppf x.ptype_cstrs ~breakfirst:true "" ;
+  pp_close_box ppf () ;
+
+and exception_declaration ppf x =
+  match x with
+  | [] -> ()
+  | first::rest ->
+      fprintf ppf "@ of@ ";
+      list2 core_type ppf x " *";
+
+and class_type ppf x =
+  match x.pcty_desc with
+  | Pcty_signature (cs) ->
+      class_signature ppf cs;
+  | Pcty_constr (li, l) ->
+      pp_open_hovbox ppf indent ;
+      (match l with
+        | [] -> ()
+        | _  -> fprintf ppf "[" ;
+            list2 core_type ppf l "," ;
+            fprintf ppf "]@ " );
+      fprintf ppf "%a" fmt_longident li ;
+      pp_close_box ppf () ;
+  | Pcty_fun (l, co, cl) ->
+      pp_open_hovbox ppf indent ;
+      core_type ppf co ;
+      fprintf ppf " ->@ " ;
+      (match l with
+        | "" -> () ;
+        | _  -> fprintf ppf "[%s] " l ); (* todo - what's l *)
+      class_type ppf cl ;
+      pp_close_box ppf () ;
+
+and class_signature ppf { pcsig_self = ct; pcsig_fields = l } =
+  pp_open_hvbox ppf 0;
+  pp_open_hovbox ppf indent ;
+  fprintf ppf "object";
+  (match ct.ptyp_desc with
+    | Ptyp_any -> ()
+    | _ -> fprintf ppf "@ (";
+        core_type ppf ct;
+        fprintf ppf ")" );
+  pp_close_box ppf () ;
+  list2 class_type_field ppf l ~indent:indent ~breakfirst:true "";
+  pp_print_break ppf 1 0;
+  fprintf ppf "end";
+
+and class_type_field ppf x =
+  match x.pctf_desc with
+  | Pctf_inher (ct) ->      (* todo: test this *)
+      pp_open_hovbox ppf indent ;
+      fprintf ppf "inherit@ " ;
+      class_type ppf ct ;
+      pp_close_box ppf () ;
+  | Pctf_val (s, mf, vf, ct) ->
+      pp_open_hovbox ppf indent ;
+      fprintf ppf "val %s%s%s :@ "
+        (match mf with
+        | Mutable -> "mutable "
+        | _       -> "")
+      (match vf with
+        | Virtual -> "virtual "
+        | _       -> "")
+      s;
+      core_type ppf ct ;
+      pp_close_box ppf () ;
+  | Pctf_virt (s, pf, ct) ->    (* todo: test this *)
+      pp_open_hovbox ppf indent ;
+      pp_open_hovbox ppf indent ;
+      fprintf ppf "method@ %avirtual@ %s" fmt_private_flag pf s ;
+      pp_close_box ppf () ;
+      fprintf ppf " :@ " ;
+      core_type ppf ct ;
+      pp_close_box ppf () ;
+  | Pctf_meth (s, pf, ct) ->
+      pp_open_hovbox ppf indent ;
+      pp_open_hovbox ppf indent ;
+      fprintf ppf "method %a%s" fmt_private_flag pf s;
+      pp_close_box ppf () ;
+      fprintf ppf " :@ " ;
+      core_type ppf ct ;
+      pp_close_box ppf () ;
+  | Pctf_cstr (ct1, ct2) ->
+      pp_open_hovbox ppf indent ;
+      fprintf ppf "constraint@ " ;
+      core_type ppf ct1;
+      fprintf ppf " =@ " ;
+      core_type ppf ct2;
+      pp_close_box ppf () ;
+
+and class_description ppf x =
+  pp_open_hvbox ppf 0 ;
+  pp_open_hovbox ppf indent ;
+  fprintf ppf "class %a%a%s :" fmt_virtual_flag x.pci_virt
+    fmt_class_params_def x.pci_params x.pci_name.txt ;
+  pp_close_box ppf () ;
+  pp_print_break ppf 1 indent ;
+  class_type ppf x.pci_expr ;
+  pp_close_box ppf () ;
+
+and class_type_declaration ppf x =
+  class_type_declaration_ext ppf true x ;
+
+and class_type_declaration_ext ppf first x =
+  pp_open_hvbox ppf 0;
+  pp_open_hovbox ppf indent ;
+  fprintf ppf "%s@ %a%a%s =" (if (first) then "class type" else "and")
+  fmt_virtual_flag x.pci_virt fmt_class_params_def x.pci_params
+    x.pci_name.txt ;
+  pp_close_box ppf ();
+  pp_print_break ppf 1 indent ;
+  class_type ppf x.pci_expr;
+  pp_close_box ppf ();
+
+and class_type_declaration_list ppf ?(first=true) l =
+  if (first) then pp_open_hvbox ppf 0 ;
+  match l with
+  | [] -> if (first) then pp_close_box ppf () ;
+  | h :: [] ->
+      class_type_declaration_ext ppf first h ;
+      pp_close_box ppf () ;
+  | h :: t ->
+      class_type_declaration_ext ppf first h ;
+      pp_print_space ppf () ;
+      class_type_declaration_list ppf ~first:false t ;
+
+and class_expr ppf x =
+  match x.pcl_desc with
+  | Pcl_structure (cs) ->
+      class_structure ppf cs ;
+  | Pcl_fun (l, eo, p, e) ->
+      pp_open_hvbox ppf indent;
+      pp_open_hovbox ppf indent;
+      fprintf ppf "fun@ ";
+      pattern ppf p;
+      fprintf ppf " ->";
+      pp_close_box ppf ();
+      (match (eo, l) with
+        | (None, "") -> () ;
+        | (_,_) ->
+            pp_open_hovbox ppf indent;
+            fprintf ppf " (* eo: ";
+            option expression ppf eo;
+            fprintf ppf "@ label: ";
+            label 0 ppf l;
+            fprintf ppf " *)";
+            pp_close_box ppf ()
+      );
+      fprintf ppf "@ ";
+      class_expr ppf e;
+      pp_close_box ppf ();
+  | Pcl_let (rf, l, ce) ->
+      let l1 = (List.hd l) in
+      let l2 = (List.tl l) in
+      pp_open_hvbox ppf 0 ;
+      pp_open_hvbox ppf indent ;
+      fprintf ppf "let%a " fmt_rec_flag rf;
+      pattern_x_expression_def ppf l1;
+      pattern_x_expression_def_list ppf l2;
+      pp_close_box ppf () ;
+      pp_close_box ppf () ;
+      fprintf ppf " in" ;
+      pp_print_space ppf () ;
+      class_expr ppf ce;
+  | Pcl_apply (ce, l) ->
+      pp_open_hovbox ppf indent ;
+      fprintf ppf "(";
+      class_expr ppf ce;
+      list2 label_x_expression_param ppf l ~breakfirst:true "";
+      fprintf ppf ")";
+      pp_close_box ppf () ;
+  | Pcl_constr (li, l) ->
+      pp_open_hovbox ppf indent;
+      if ((List.length l) != 0) then begin
+          fprintf ppf "[" ;
+          list2 core_type ppf l "," ;
+          fprintf ppf "]@ " ;
+        end ;
+      fprintf ppf "%a" fmt_longident li;
+      pp_close_box ppf ();
+  | Pcl_constraint (ce, ct) ->
+      pp_open_hovbox ppf indent;
+      fprintf ppf "(";
+      class_expr ppf ce;
+      fprintf ppf "@ : ";
+      class_type ppf ct;
+      fprintf ppf ")";
+      pp_close_box ppf ();
+
+and class_structure ppf { pcstr_pat = p; pcstr_fields =  l } =
+  pp_open_hvbox ppf 0 ;
+  pp_open_hovbox ppf indent ;
+  fprintf ppf "object" ;
+  (match p.ppat_desc with
+    | Ppat_any -> ();
+    | _ -> fprintf ppf "@ " ;
+        pattern_in_parens ppf p );
+  pp_close_box ppf () ;
+  list2 class_field ppf l ~indent:indent ~breakfirst:true "";
+  fprintf ppf "@ end" ;
+  pp_close_box ppf () ;
+
+and override ovf = match ovf with
+    Override -> "!"
+  | Fresh -> ""
+
+and class_field ppf x =
+  match x.pcf_desc with
+  | Pcf_inher (ovf, ce, so) ->
+      pp_open_hovbox ppf indent ;
+      fprintf ppf "inherit%s@ " (override ovf);
+      class_expr ppf ce;
+      (match so with
+        | None -> ();
+        | Some (s) -> fprintf ppf "@ as %s" s );
+      pp_close_box ppf ();
+  | Pcf_val (s, mf, ovf, e) ->
+      pp_open_hovbox ppf indent ;
+      fprintf ppf "val%s %a%s =@ " (override ovf) fmt_mutable_flag mf s.txt ;
+      expression_sequence ppf ~indent:0 e ;
+      pp_close_box ppf () ;
+  | Pcf_virt (s, pf, ct) ->
+      pp_open_hovbox ppf indent ;
+      fprintf ppf "method virtual %a%s" fmt_private_flag pf s.txt ;
+      fprintf ppf " :@ " ;
+      core_type ppf ct;
+      pp_close_box ppf () ;
+  | Pcf_valvirt (s, mf, ct) ->
+      pp_open_hovbox ppf indent ;
+      fprintf ppf "val virtual %s%s"
+        (match mf with
+        | Mutable -> "mutable "
+        | _       -> "")
+      s.txt;
+      fprintf ppf " :@ " ;
+      core_type ppf ct;
+      pp_close_box ppf () ;
+  | Pcf_meth (s, pf, ovf, e) ->
+      pp_open_hovbox ppf indent ;
+      fprintf ppf "method%s %a%s" (override ovf) fmt_private_flag pf s.txt ;
+      (match e.pexp_desc with
+        | Pexp_poly (e, Some(ct)) ->
+            fprintf ppf " :@ " ;
+            core_type ppf ct ;
+            fprintf ppf " =@ " ;
+            expression ppf e ;
+        | _ ->
+            fprintf ppf " =@ " ;
+            expression ppf e;
+      ) ;
+(* special Pexp_poly handling? *)
+      pp_close_box ppf () ;
+  | Pcf_constr (ct1, ct2) ->
+      pp_open_hovbox ppf indent ;
+      fprintf ppf "constraint@ ";
+      core_type ppf ct1;
+      fprintf ppf " =@ " ;
+      core_type ppf ct2;
+      pp_close_box ppf ();
+(*  | Pcf_let (rf, l) ->
+(* at the time that this was written, Pcf_let was commented out
+         of the parser, rendering this untestable. In the interest of
+         completeness, the following code is designed to print what
+         the parser seems to expect *)
+(* todo: test this, eventually *)
+      let l1 = (List.hd l) in
+      let l2 = (List.tl l) in
+      pp_open_hvbox ppf indent ;
+      fprintf ppf "let%a " fmt_rec_flag rf;
+      pattern_x_expression_def ppf l1;
+      pattern_x_expression_def_list ppf l2;
+      fprintf ppf " in" ;
+      pp_close_box ppf () ; *)
+  | Pcf_init (e) ->
+      pp_open_hovbox ppf indent ;
+      fprintf ppf "initializer@ " ;
+      expression_sequence ppf ~indent:0 e ;
+      pp_close_box ppf () ;
+
+and class_fun_helper ppf e =
+  match e.pcl_desc with
+  | Pcl_fun (l, eo, p, e) ->
+      pattern ppf p;
+      fprintf ppf "@ ";
+      (match (eo, l) with
+        | (None, "") -> () ;
+        | (_,_) ->
+            fprintf ppf "(* ";
+            option expression ppf eo;
+            label 0 ppf l;
+            fprintf ppf " *)@ "
+      );
+      class_fun_helper ppf e;
+  | _ ->
+      e;
+
+and class_declaration_list ppf ?(first=true) l =
+  match l with
+  | [] ->
+      if (first = false) then pp_close_box ppf ();
+  | cd::l ->
+      let s = (if first then begin pp_open_hvbox ppf 0 ; "class" end
+          else begin pp_print_space ppf () ; "and" end) in
+      class_declaration ppf ~str:s cd ;
+      class_declaration_list ppf ~first:false l ;
+
+and class_declaration ppf ?(str="class") x =
+  pp_open_hvbox ppf indent ;
+  pp_open_hovbox ppf indent ;
+  fprintf ppf "%s %a%a%s@ " str fmt_virtual_flag x.pci_virt
+    fmt_class_params_def x.pci_params x.pci_name.txt ;
+  let ce =
+    (match x.pci_expr.pcl_desc with
+      | Pcl_fun (l, eo, p, e) ->
+          class_fun_helper ppf x.pci_expr;
+      | _ -> x.pci_expr) in
+  let ce =
+    (match ce.pcl_desc with
+      | Pcl_constraint (ce, ct) ->
+          fprintf ppf ":@ " ;
+          class_type ppf ct ;
+          fprintf ppf "@ " ;
+          ce
+      | _ -> ce ) in
+  fprintf ppf "=" ;
+  pp_close_box ppf () ;
+  fprintf ppf "@ " ;
+  class_expr ppf ce ;
+  pp_close_box ppf () ;
+
+and module_type ppf x =
+  match x.pmty_desc with
+  | Pmty_ident (li) ->
+      fprintf ppf "%a" fmt_longident li;
+  | Pmty_signature (s) ->
+      pp_open_hvbox ppf 0;
+      fprintf ppf "sig";
+      list2 signature_item ppf s ~breakfirst:true ~indent:indent "";
+      pp_print_break ppf 1 0;
+      fprintf ppf "end";
+      pp_close_box ppf ();
+  | Pmty_functor (s, mt1, mt2) ->
+      pp_open_hvbox ppf indent;
+      pp_open_hovbox ppf indent;
+      fprintf ppf "functor@ (%s : " s.txt ;
+      module_type ppf mt1;
+      fprintf ppf ") ->";
+      pp_close_box ppf ();
+      pp_print_space ppf ();
+      module_type ppf mt2;
+      pp_close_box ppf ();
+  | Pmty_with (mt, l) ->
+      pp_open_hovbox ppf indent ;
+      fprintf ppf "(" ;
+      module_type ppf mt ;
+      fprintf ppf "@ with@ " ;
+      longident_x_with_constraint_list ppf l ;
+      fprintf ppf ")" ;
+      pp_close_box ppf () ;
+  | Pmty_typeof me ->
+      pp_open_hovbox ppf indent ;
+      fprintf ppf "module type of " ;
+      module_expr ppf me ;
+      pp_close_box ppf ()
+
+and signature ppf x = list signature_item ppf x
+
+and signature_item ppf x =
+  begin
+    match x.psig_desc with
+    | Psig_type (l) ->
+        let first = (List.hd l) in
+        let rest  = (List.tl l) in
+        pp_open_hvbox ppf 0;
+        pp_open_hvbox ppf 0;
+        fprintf ppf "type " ;
+        string_x_type_declaration ppf first;
+        pp_close_box ppf ();
+        type_def_list_helper ppf rest;
+        pp_close_box ppf ();
+    | Psig_value (s, vd) ->
+      let intro = if vd.pval_prim = [] then "val" else "external" in
+        pp_open_hovbox ppf indent ;
+       if (is_infix (fixity_of_string s.txt))
+         || List.mem s.txt.[0] prefix_symbols then
+          fprintf ppf "%s ( %s ) :@ "
+            intro s.txt                (* OXX done *)
+       else
+        fprintf ppf "%s %s :@ " intro s.txt;
+        value_description ppf vd;
+        pp_close_box ppf () ;
+    | Psig_exception (s, ed) ->
+        pp_open_hovbox ppf indent ;
+        fprintf ppf "exception %s" s.txt;
+        exception_declaration ppf ed;
+        pp_close_box ppf ();
+    | Psig_class (l) ->
+        pp_open_hvbox ppf 0 ;
+        list2 class_description ppf l "";
+        pp_close_box ppf () ;
+    | Psig_module (s, mt) ->  (* todo: check this *)
+        pp_open_hovbox ppf indent ;
+        pp_open_hovbox ppf indent ;
+        fprintf ppf "module@ %s :" s.txt ;
+        pp_close_box ppf () ;
+        pp_print_space ppf () ;
+        module_type ppf mt;
+        pp_close_box ppf () ;
+    | Psig_open (li) ->
+        pp_open_hovbox ppf indent ;
+        fprintf ppf "open@ %a" fmt_longident li ;
+        pp_close_box ppf () ;
+    | Psig_include (mt) ->  (* todo: check this *)
+        pp_open_hovbox ppf indent ;
+        fprintf ppf "include@ " ;
+        module_type ppf mt;
+        pp_close_box ppf () ;
+    | Psig_modtype (s, md) -> (* todo: check this *)
+        pp_open_hovbox ppf indent ;
+        fprintf ppf "module type %s" s.txt ;
+        (match md with
+          | Pmodtype_abstract -> ()
+          | Pmodtype_manifest (mt) ->
+              pp_print_space ppf () ;
+              fprintf ppf " = " ;
+              module_type ppf mt;
+        );
+        pp_close_box ppf () ;
+    | Psig_class_type (l) ->
+        class_type_declaration_list ppf l ;
+    | Psig_recmodule decls ->
+        pp_open_hvbox ppf 0 ;
+        pp_open_hovbox ppf indent ;
+        fprintf ppf "module rec@ " ;
+        string_x_module_type_list ppf decls ; (* closes hov box *)
+        pp_close_box ppf () ;
+  end;
+  fprintf ppf "\n"
+
+and modtype_declaration ppf x =
+  match x with
+  | Pmodtype_abstract -> line 0 ppf "Pmodtype_abstract\n";
+  | Pmodtype_manifest (mt) ->
+      line 0 ppf "Pmodtype_manifest\n";
+      module_type ppf mt;
+
+and module_expr ppf x =
+  match x.pmod_desc with
+  | Pmod_structure (s) ->
+      pp_open_hvbox ppf 0;
+      fprintf ppf "struct";
+      list2 structure_item ppf s ~breakfirst:true ~indent:indent "";
+      pp_print_break ppf 1 0;
+      fprintf ppf "end";
+      pp_close_box ppf (); (* bug fixed? *)
+  | Pmod_constraint (me, mt) ->
+      fprintf ppf "(";
+      pp_open_hovbox ppf indent;
+      module_expr ppf me;
+      fprintf ppf " :@ ";  (* <-- incorrect indentation? *)
+      module_type ppf mt;
+      pp_close_box ppf ();
+      fprintf ppf ")";
+  | Pmod_ident (li) ->
+      fprintf ppf "%a" fmt_longident li;
+  | Pmod_functor (s, mt, me) ->
+      pp_open_hvbox ppf indent ;
+      fprintf ppf "functor (%s : " s.txt;
+      module_type ppf mt;
+      fprintf ppf ") ->@ ";
+      module_expr ppf me;
+      pp_close_box ppf () ;
+  | Pmod_apply (me1, me2) ->
+      pp_open_hovbox ppf indent;
+      fprintf ppf "(" ;
+      module_expr ppf me1;
+      fprintf ppf ")" ;
+      pp_print_cut ppf ();
+      fprintf ppf "(" ;
+      module_expr ppf me2;
+      fprintf ppf ")" ;
+      pp_close_box ppf ();
+  | Pmod_unpack e ->
+      fprintf ppf "(val@ ";
+      pp_open_hovbox ppf indent;
+      expression ppf e;
+      pp_close_box ppf ();
+      fprintf ppf ")";
+
+and structure ppf x =
+  list structure_item ppf x;
+
+(*
+(* closes one box *)
+and string_x_modtype_x_module ppf (s, _, mt, me) =
+(*
+  (match me.pmod_desc with
+   | Pmod_constraint (me, ({pmty_desc=(Pmty_ident (_)
+        | Pmty_signature (_))} as mt)) ->
+       (* assert false ; *) (* 3.07 - should this ever happen here? *)
+       fprintf ppf "%s :@ " s ;
+       module_type ppf mt ;
+       fprintf ppf " =" ;
+       pp_close_box ppf () ;
+       pp_print_space ppf () ;
+       module_expr ppf me ;
+   | _ ->
+*)
+  fprintf ppf "%s :@ " s;
+  module_type ppf mt ;
+  fprintf ppf " =" ;
+  pp_close_box ppf () ;
+  pp_print_space ppf () ;
+  module_expr ppf me ;
+(*  ) ; *)
+*)
+
+(* closes one box *)
+and text_x_modtype_x_module ppf (s, mt, me) =
+(*
+  (match me.pmod_desc with
+   | Pmod_constraint (me, ({pmty_desc=(Pmty_ident (_)
+        | Pmty_signature (_))} as mt)) ->
+       (* assert false ; *) (* 3.07 - should this ever happen here? *)
+       fprintf ppf "%s :@ " s ;
+       module_type ppf mt ;
+       fprintf ppf " =" ;
+       pp_close_box ppf () ;
+       pp_print_space ppf () ;
+       module_expr ppf me ;
+   | _ ->
+*)
+  fprintf ppf "%s :@ " s.txt;
+  module_type ppf mt ;
+  fprintf ppf " =" ;
+  pp_close_box ppf () ;
+  pp_print_space ppf () ;
+  module_expr ppf me ;
+(*  ) ; *)
+
+(*
+(* net gain of one box (-1, +2) *)
+and string_x_modtype_x_module_list ppf l =
+  match l with
+  | [] -> ()
+  | hd :: tl ->
+      pp_close_box ppf () ;
+      pp_print_space ppf () ;
+      pp_open_hvbox ppf indent ;
+      pp_open_hovbox ppf indent ;
+      fprintf ppf "and " ;
+      string_x_modtype_x_module ppf hd; (* closes a box *)
+      string_x_modtype_x_module_list ppf tl ; (* net open of one box *)
+*)
+
+(* net gain of one box (-1, +2) *)
+and text_x_modtype_x_module_list ppf l =
+  match l with
+  | [] -> ()
+  | hd :: tl ->
+      pp_close_box ppf () ;
+      pp_print_space ppf () ;
+      pp_open_hvbox ppf indent ;
+      pp_open_hovbox ppf indent ;
+      fprintf ppf "and " ;
+      text_x_modtype_x_module ppf hd; (* closes a box *)
+      text_x_modtype_x_module_list ppf tl ; (* net open of one box *)
+
+(* context: [hv [hov .]]  returns [hv .]
+   closes inner hov box. *)
+and string_x_module_type_list ppf ?(first=true) l =
+  match l with
+  | [] -> () ;
+  | hd :: tl ->
+      if (first=false) then begin
+          pp_print_space ppf () ;
+          pp_open_hovbox ppf indent ;
+          fprintf ppf "and " ;
+        end ;
+      string_x_module_type ppf hd ;
+      pp_close_box ppf () ;
+      string_x_module_type_list ppf ~first:false tl ;
+
+and string_x_module_type ppf (s, mty) =
+  fprintf ppf "%s :@ " s.txt ;
+  module_type ppf mty ;
+
+and structure_item ppf x =
+  begin
+    match x.pstr_desc with
+    | Pstr_eval (e) ->
+        pp_open_hvbox ppf 0 ;
+        fprintf ppf "let _ = " ;
+        expression_sequence ppf ~first:false ~indent:0 e ;
+        pp_close_box ppf () ;
+    | Pstr_type [] -> assert false
+    | Pstr_type (first :: rest) ->
+        pp_open_vbox ppf 0;
+        pp_open_hvbox ppf 0;
+        fprintf ppf "type " ;
+        string_x_type_declaration ppf first;
+        pp_close_box ppf ();
+        type_def_list_helper ppf rest;
+        pp_close_box ppf ();
+    | Pstr_value (rf, l) ->
+        let l1 = (List.hd l) in
+        let l2 = (List.tl l) in
+        pp_open_hvbox ppf 0 ;
+        pp_open_hvbox ppf indent ;
+        fprintf ppf "let%a " fmt_rec_flag rf;
+        pattern_x_expression_def ppf l1;
+        pattern_x_expression_def_list ppf l2;
+        pp_close_box ppf () ;
+        pp_close_box ppf () ;
+    | Pstr_exception (s, ed) ->
+        pp_open_hovbox ppf indent ;
+        fprintf ppf "exception@ %s" s.txt;
+        exception_declaration ppf ed;
+        pp_close_box ppf () ;
+    | Pstr_module (s, me) ->
+        pp_open_hvbox ppf indent;
+        pp_open_hovbox ppf indent ;
+        fprintf ppf "module %s" s.txt ;
+        (match me.pmod_desc with
+          | Pmod_constraint (me, ({pmty_desc=(Pmty_ident (_)
+                  | Pmty_signature (_))} as mt)) ->
+              fprintf ppf " :@ " ;
+              module_type ppf mt ;
+              fprintf ppf " =" ;
+              pp_close_box ppf () ;
+              pp_print_space ppf () ;
+              module_expr ppf me ;
+          | _ ->
+              fprintf ppf " =" ;
+              pp_close_box ppf () ;
+              pp_print_space ppf () ;
+              module_expr ppf me ;
+        ) ;
+        pp_close_box ppf ();
+    | Pstr_open (li) ->
+        fprintf ppf "open %a" fmt_longident li;
+    | Pstr_modtype (s, mt) ->
+        pp_open_hovbox ppf indent;
+        fprintf ppf "module type %s =@ " s.txt;
+        module_type ppf mt;
+        pp_close_box ppf () ; (* bug fixed? *)
+    | Pstr_class (l) ->
+        class_declaration_list ppf l;
+    | Pstr_class_type (l) ->
+        class_type_declaration_list ppf l ;
+    | Pstr_primitive (s, vd) ->
+        pp_open_hovbox ppf indent ;
+        let need_parens =
+          match s.txt with
+          | "or"
+          | "mod"
+          | "land"
+          | "lor"
+          | "lxor"
+          | "lsl"
+          | "lsr"
+          | "asr"
+            -> true
+
+          | _ ->
+              match s.txt.[0] with
+                'a'..'z' -> false
+              | _ -> true
+        in
+        if need_parens then
+          fprintf ppf "external@ ( %s ) :@ " s.txt
+        else
+          fprintf ppf "external@ %s :@ " s.txt;
+        value_description ppf vd;
+        pp_close_box ppf () ;
+    | Pstr_include me ->
+        pp_open_hovbox ppf indent ;
+        fprintf ppf "include " ;
+        module_expr ppf me ;
+        pp_close_box ppf () ;
+    | Pstr_exn_rebind (s, li) ->        (* todo: check this *)
+        pp_open_hovbox ppf indent ;
+        fprintf ppf "exception@ %s =@ %a" s.txt fmt_longident li ;
+        pp_close_box ppf () ;
+    | Pstr_recmodule decls -> (* 3.07 *)
+        let l1 = (List.hd decls) in
+        let l2 = (List.tl decls) in
+        pp_open_hvbox ppf 0;        (* whole recmodule box *)
+        pp_open_hvbox ppf indent ;  (* this definition box *)
+        pp_open_hovbox ppf indent ; (* first line box *)
+        fprintf ppf "module rec " ;
+        text_x_modtype_x_module ppf l1; (* closes a box *)
+        text_x_modtype_x_module_list ppf l2; (* net opens one box *)
+        pp_close_box ppf () ;
+        pp_close_box ppf () ;
+        pp_close_box ppf () ;
+  end;
+  fprintf ppf "\n"
+
+and type_def_list_helper ppf l =
+  match l with
+  | [] -> ()
+  | first :: rest ->
+      pp_print_space ppf () ;
+      pp_open_hovbox ppf indent ;
+      fprintf ppf "and " ;
+      string_x_type_declaration ppf first;
+      pp_close_box ppf () ;
+      type_def_list_helper ppf rest ;
+
+and string_x_type_declaration ppf (s, td) =
+  let l = td.ptype_params in
+  (match (List.length l) with
+    | 0 -> ()
+    | 1 -> list2 type_var_option_print ppf l "" ;
+        fprintf ppf " " ;
+    | _ -> pp_open_hovbox ppf indent ;
+        fprintf ppf "(" ;
+        list2 type_var_option_print ppf l "," ;
+        fprintf ppf ")" ;
+        pp_close_box ppf ();
+        fprintf ppf " " ;
+  );
+  fprintf ppf "%s" s.txt ;
+  (match (td.ptype_kind, td.ptype_manifest) with
+    | Ptype_abstract, None -> ()
+    | Ptype_record _, _ -> fprintf ppf " = " ;
+    | _ , _ -> fprintf ppf " =" ;
+        pp_print_break ppf 1 indent ;
+  );
+  type_declaration ppf td;
+
+and longident_x_with_constraint_list ?(first=true) ppf l =
+  match l with
+  | [] -> () ;
+  | h :: [] ->
+      if (first = false) then fprintf ppf "@ and " ;
+      longident_x_with_constraint ppf h ;
+  | h :: t  ->
+      if (first = false) then fprintf ppf "@ and " ;
+      longident_x_with_constraint ppf h ;
+      fprintf ppf "@ and " ;
+      longident_x_with_constraint ppf h ;
+      longident_x_with_constraint_list ~first:false ppf t;
+
+and string_x_core_type_ands ?(first=true) ppf l =
+  match l with
+  | [] -> () ;
+  | h :: [] ->
+      if (first = false) then fprintf ppf "@ and " ;
+      string_x_core_type ppf h ;
+  | h :: t  ->
+      if (first = false) then fprintf ppf "@ and " ;
+      string_x_core_type ppf h;
+      string_x_core_type_ands ~first:false ppf t;
+
+and string_x_core_type ppf (s, ct) =
+  fprintf ppf "%a@ =@ %a" fmt_longident s core_type ct
+
+and longident_x_with_constraint ppf (li, wc) =
+  match wc with
+  | Pwith_type (td) ->
+      fprintf ppf "type@ %a =@ " fmt_longident li;
+      type_declaration ppf td ;
+  | Pwith_module (li2) ->
+      fprintf ppf "module %a =@ %a" fmt_longident li fmt_longident li2;
+  | Pwith_typesubst td ->
+      fprintf ppf "type@ %a :=@ " fmt_longident li;
+      type_declaration ppf td ;
+  | Pwith_modsubst (li2) ->
+      fprintf ppf "module %a :=@ %a" fmt_longident li fmt_longident li2;
+
+and typedef_constraint ppf (ct1, ct2, l) =
+  pp_open_hovbox ppf indent ;
+  fprintf ppf "constraint@ " ;
+  core_type ppf ct1;
+  fprintf ppf " =@ " ;
+  core_type ppf ct2;
+  pp_close_box ppf () ;
+
+and type_variant_leaf ppf (s, l,_, _) first = (* TODO *)
+  if (first) then begin
+      pp_print_if_newline ppf ();
+      pp_print_string ppf "  ";
+    end else begin
+      pp_print_space ppf ();
+      fprintf ppf "| " ;
+    end ;
+  pp_open_hovbox ppf indent ;
+  fprintf ppf "%s" s.txt ;
+  if ((List.length l) > 0) then begin
+      fprintf ppf "@ of@ " ;
+      list2 core_type ppf l " *"
+    end ;
+  pp_close_box ppf ();
+
+and type_variant_leaf_list ppf list =
+  match list with
+  | [] -> ()
+  | first :: rest ->
+      type_variant_leaf ppf first false ;
+      type_variant_leaf_list ppf rest ;
+
+and type_record_field ppf (s, mf, ct,_) =
+  pp_open_hovbox ppf indent ;
+  fprintf ppf "%a%s:" fmt_mutable_flag mf s.txt ;
+  core_type ppf ct ;
+  pp_close_box ppf () ;
+
+and longident_x_pattern ppf (li, p) =
+  pp_open_hovbox ppf indent ;
+  fprintf ppf "%a =@ " fmt_longident li;
+  pattern ppf p;
+  pp_close_box ppf () ;
+
+
+
+and pattern_x_expression_case_list
+    ppf ?(first:bool=true) ?(special_first_case=bar_on_first_case)
+  (l:(pattern * expression) list) =
+  match l with
+  | []        -> ()
+  | (p,e)::[] -> (* last time *)
+      if (first=false) then
+        fprintf ppf "| " ;
+      pp_open_hvbox ppf indent ;
+      let (e,w) =
+        (match e with
+          | {pexp_desc = Pexp_when (e1, e2)} -> (e2, Some (e1))
+          | _ -> (e, None)) in
+      pattern_with_when ppf w p ;
+      fprintf ppf " ->@ " ;
+      pp_open_hvbox ppf 0 ;
+      expression_sequence ppf ~indent:0 e ;
+      pp_close_box ppf () ;
+      pp_close_box ppf () ;
+  | (p,e)::r  -> (* not last  *)
+      pp_open_hvbox ppf (indent + 2) ;
+      if ((first=true) & (special_first_case=false)) then begin
+          pp_print_if_newline ppf () ;
+          pp_print_string ppf "  "
+        end else
+        fprintf ppf "| " ;
+      let (e,w) =
+        (match e with
+          | {pexp_desc = Pexp_when (e1, e2)} -> (e2, Some (e1))
+          | _ -> (e, None)) in
+      pattern_with_when ppf w p ;
+      fprintf ppf " ->@ " ;
+      pp_open_hvbox ppf 0 ;
+      expression_sequence ppf ~indent:0 e ;
+      pp_close_box ppf () ;
+      pp_close_box ppf () ;
+      pp_print_break ppf 1 0;
+      (pattern_x_expression_case_list ppf ~first:false r);
+
+and pattern_x_expression_def ppf (p, e) =
+  pattern ppf p ;
+  fprintf ppf " =@ " ;
+  expression ppf e;
+
+and pattern_list_helper ppf p =
+  match p with
+  | {ppat_desc = Ppat_construct ({ txt = Longident.Lident("::") },
+        Some ({ppat_desc = Ppat_tuple([pat1; pat2])}),
+        _)}
+    -> pattern ppf pat1 ;
+      fprintf ppf "@ ::@ " ;
+      pattern_list_helper ppf pat2 ;
+  | _ -> pattern ppf p ;
+
+and string_x_expression ppf (s, e) =
+  pp_open_hovbox ppf indent ;
+  fprintf ppf "%s =@ " s.txt ;
+  expression ppf e ;
+  pp_close_box ppf () ;
+
+and longident_x_expression ppf (li, e) =
+  pp_open_hovbox ppf indent ;
+  fprintf ppf "%a =@ " fmt_longident li;
+  simple_expr ppf e;
+  pp_close_box ppf () ;
+
+and label_x_expression_param ppf (l,e) =
+  match l with
+  | ""  -> simple_expr ppf e ;
+  | lbl ->
+      if ((String.get lbl 0) = '?') then begin
+          fprintf ppf "%s:" lbl ;
+          simple_expr ppf e ;
+        end else begin
+          fprintf ppf "~%s:" lbl ;
+          simple_expr ppf e ;
+        end ;
+
+and expression_in_parens ppf e =
+  let already_has_parens =
+    (match e.pexp_desc with
+        Pexp_apply ({pexp_desc=Pexp_ident ({ txt = Longident.Ldot (
+                Longident.Lident(modname), funname) })},_)
+        -> (match modname,funname with
+            | "Array","get" -> false;
+            | "Array","set" -> false;
+            | _,_ -> true) ;
+      | Pexp_apply ({pexp_desc=Pexp_ident ({ txt = Longident.Lident(funname) })},_)
+        -> (match funname with
+            | "!" -> false;
+            | _ -> true);
+      | Pexp_apply (_,_) -> true;
+      | Pexp_match (_,_) -> true;
+      | Pexp_tuple (_) -> true ;
+      | Pexp_constraint (_,_,_) -> true ;
+      | _ -> false) in
+  if (already_has_parens) then expression ppf e
+  else begin
+      fprintf ppf "(" ;
+      expression ppf e ;
+      fprintf ppf ")" ;
+    end ;
+
+and pattern_in_parens ppf p =
+  let already_has_parens =
+    match p.ppat_desc with
+    | Ppat_alias (_,_) -> true
+    | Ppat_tuple (_) -> true
+    | Ppat_or (_,_) -> true
+    | Ppat_constraint (_,_) -> true
+    | _ -> false in
+  if (already_has_parens) then pattern ppf p
+  else begin
+      fprintf ppf "(" ;
+      pattern ppf p ;
+      fprintf ppf ")" ;
+    end;
+
+and pattern_constr_params_option ppf po =
+  match po with
+  | None -> ();
+  | Some pat ->
+      pp_print_space ppf ();
+      pattern_in_parens ppf pat;
+
+and type_variant_helper ppf x =
+  match x with
+  | Rtag (l, b, ctl) ->  (* is b important? *)
+      pp_open_hovbox ppf indent ;
+      fprintf ppf "`%s" l ;
+      if ((List.length ctl) != 0) then begin
+          fprintf ppf " of@ " ;
+          list2 core_type ppf ctl " *" ;
+        end ;
+      pp_close_box ppf () ;
+  | Rinherit (ct) ->
+      core_type ppf ct
+
+(* prints a list of definitions as found in a let statement
+   note! breaks "open and close boxes in same function" convention, however
+         does always open and close the same number of boxes. (i.e. no "net
+         gain or loss" of box depth.                                         *)
+and pattern_x_expression_def_list ppf l =
+  match l with
+  | [] -> ()
+  | hd :: tl ->
+      pp_close_box ppf () ;
+      pp_print_space ppf () ;
+      pp_open_hvbox ppf indent ;
+      fprintf ppf "and " ;
+      pattern_x_expression_def ppf hd;
+      pattern_x_expression_def_list ppf tl ;
+
+(* end an if statement by printing an else phrase if there is an "else"
+   statement in the ast. otherwise just close the box. *)
+(* added: special case for "else if" case *)
+
+and expression_eo ppf eo extra =
+  match eo with
+  | None   -> ();
+  | Some x ->
+      if extra then fprintf ppf " "
+      else fprintf ppf "@ " ;
+      match x.pexp_desc with
+      | Pexp_ifthenelse (e1, e2, eo) ->   (* ... else if ...*)
+          fprintf ppf "else" ;
+          expression_elseif ppf (e1, e2, eo)
+      | Pexp_sequence (e1, e2) ->
+          fprintf ppf "else" ;
+          expression_ifbegin ppf x;       (* ... else begin ... end*)
+      | _ ->                              (* ... else ... *)
+          pp_open_hvbox ppf indent ;
+          fprintf ppf "else@ " ;
+          expression ppf x ;
+          pp_close_box ppf () ;
+
+and expression_elseif ppf (e1,e2,eo) =
+  fprintf ppf " " ;
+  expression_if_common ppf e1 e2 eo ;
+
+and expression_ifbegin ppf e =
+  fprintf ppf " begin";
+  pp_print_break ppf 1 indent ; (* "@;<1 2>"; *)
+  expression_sequence ppf e;
+  pp_print_break ppf 1 0 ; (* fprintf ppf "@;<1 0>" *)
+  fprintf ppf "end";
+
+and expression_if_common ppf e1 e2 eo =
+  match eo, e2.pexp_desc with
+  | None, Pexp_sequence (_, _) ->
+      fprintf ppf "if@ " ;
+      expression ppf e1;
+      fprintf ppf "@ then@ " ;
+      expression_ifbegin ppf e2
+  | None, _ ->
+      fprintf ppf "if@ " ;
+      expression ppf e1;
+      fprintf ppf "@ then@ " ;
+      simple_expr ppf e2
+  | Some _, Pexp_sequence _ ->
+      fprintf ppf "if " ;
+      expression ppf e1;
+      fprintf ppf "@ then@ " ;
+      expression_ifbegin ppf e2;
+      expression_eo ppf eo true;   (* ... then begin ... end *)
+  | Some _, _ ->
+      pp_open_hvbox ppf indent ;
+      fprintf ppf "if " ;
+      expression ppf e1;
+      fprintf ppf " then@ " ;
+      simple_expr ppf e2;
+      pp_close_box ppf () ;
+      expression_eo ppf eo false;
+
+and expression_sequence ppf ?(skip=1) ?(indent=indent) ?(first=true) expr =
+  if (first = true) then begin
+    pp_open_hvbox ppf 0 ;
+    expression_sequence ppf ~skip:skip ~indent:0 ~first:false expr ;
+    pp_close_box ppf () ;
+  end else
+    match expr.pexp_desc with
+    | Pexp_sequence (e1, e2) ->
+         simple_expr ppf e1 ;
+         fprintf ppf ";" ;
+         pp_print_break ppf skip indent ; (* "@;<1 2>" ; *)
+         expression_sequence ppf ~skip:skip ~indent:indent ~first:false e2 ;
+    | _ ->
+         expression ppf expr ;
+
+and expression_list_helper ppf exp =
+  match exp with
+  | {pexp_desc = Pexp_construct ({ txt = Longident.Lident("[]") }, None, _)}
+     -> () ;
+  | {pexp_desc = Pexp_construct ({ txt = Longident.Lident("::") },
+                   Some({pexp_desc = Pexp_tuple([exp1 ; exp2])}), _)}
+     -> fprintf ppf ";@ " ;
+        simple_expr ppf exp1 ;
+        expression_list_helper ppf exp2 ;
+  | {pexp_desc = _}
+     -> assert false;
+
+and expression_list_nonterminal ppf exp =
+  match exp with
+  | {pexp_desc = Pexp_construct ({ txt = Longident.Lident("[]") }, None, _)}
+     -> fprintf ppf "[]" ; (* assert false; *)
+  | {pexp_desc = Pexp_construct ({ txt = Longident.Lident("::") },
+                   Some({pexp_desc = Pexp_tuple([exp1 ; exp2])}), _)}
+     -> simple_expr ppf exp1;
+        fprintf ppf " ::@ ";
+        expression_list_nonterminal ppf exp2;
+  | {pexp_desc = _}
+     -> expression ppf exp;
+;
+
+and directive_argument ppf x =
+  match x with
+  | Pdir_none -> ()
+  | Pdir_string (s) -> fprintf ppf "@ \"%s\"" s;
+  | Pdir_int (i) -> fprintf ppf "@ %d" i;
+  | Pdir_ident (li) -> fprintf ppf "@ %a" fmt_longident_aux li;
+  | Pdir_bool (b) -> fprintf ppf "@ %s" (string_of_bool b);
+
+and string_x_core_type_list ppf (s, l) =
+  string ppf s;
+  list core_type ppf l;
+
+and string_list_x_location ppf (l, loc) =
+  line 0 ppf "<params> %a\n" fmt_location loc;
+  list string ppf l;
+
+and pattern_x_expression_case_single ppf (p, e) eo lbl =
+  (match eo with
+     None ->   pattern_with_label ppf p lbl
+    | Some x ->
+        fprintf ppf "?" ;
+        pp_open_hovbox ppf indent ;
+        fprintf ppf "(" ;
+        begin
+          match p.ppat_desc with
+            Ppat_constraint ({ ppat_desc = Ppat_var s }, ct) ->
+              fprintf ppf "%s@ :@ %a" s.txt core_type ct
+          | Ppat_var s ->
+              fprintf ppf "%s" s.txt
+          | _ -> assert false
+        end;
+        fprintf ppf " =@ " ;
+        expression ppf x ;
+        fprintf ppf ")" ;
+        pp_close_box ppf ()
+  ) ;
+  fprintf ppf " ->@ " ;
+  expression_sequence ppf ~indent:0 e ;;
+
+let rec toplevel_phrase ppf x =
+  match x with
+  | Ptop_def (s) ->
+      pp_open_hvbox ppf 0;
+      list2 structure_item ppf s ~breakfirst:false ~indent:0 "";
+      pp_close_box ppf ();
+  | Ptop_dir (s, da) ->
+      pp_open_hovbox ppf indent;
+      fprintf ppf "#%s" s;
+      directive_argument ppf da;
+      pp_close_box ppf () ;;
+
+let expression ppf x =
+  fprintf ppf "@[";
+  expression ppf x;
+  fprintf ppf "@]";;
+
+let string_of_expression x =
+  ignore (flush_str_formatter ()) ;
+  let ppf = str_formatter in
+  expression ppf x ;
+  flush_str_formatter () ;;
+
+let toplevel_phrase ppf x =
+  pp_print_newline ppf () ;
+  toplevel_phrase ppf x;
+  fprintf ppf ";;" ;
+  pp_print_newline ppf ();;
+
+let print_structure = structure
+let print_signature = signature
+
+
index c1764f5df634c69f86dc65c97499078704404789..909e56d14dbcaa665fe9ca88a49955456185bb63 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: primreq.ml 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (* Determine the set of C primitives required by the given .cmo and .cma
    files *)
index 06c9761094e64fbbe723381d5262aaf09be06998..b2ac85b8caac6e83e6fda296bd3ab9b0c80cf31f 100644 (file)
@@ -12,7 +12,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: profiling.ml 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (* Run-time library for profiled programs *)
 
index 61be2be760ac141582bfff0e54e9e726b06f68da..654c560f7532af8fcbde97071e7c46d86fbbf4ae 100644 (file)
@@ -12,7 +12,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: profiling.mli 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (* Run-time library for profiled programs *)
 
diff --git a/tools/read_cmt.ml b/tools/read_cmt.ml
new file mode 100644 (file)
index 0000000..dc79577
--- /dev/null
@@ -0,0 +1,81 @@
+(***********************************************************************)
+(*                                                                     *)
+(*                           Objective Caml                            *)
+(*                                                                     *)
+(*                  Fabrice Le Fessant, INRIA Saclay                   *)
+(*                                                                     *)
+(*  Copyright 2012 Institut National de Recherche en Informatique et   *)
+(*  en Automatique.  All rights reserved.  This file is distributed    *)
+(*  under the terms of the Q Public License version 1.0.               *)
+(*                                                                     *)
+(***********************************************************************)
+
+let gen_annot = ref false
+let gen_ml = ref false
+let print_info_arg = ref false
+let target_filename = ref None
+
+let arg_list = [
+  "-o", Arg.String (fun s ->
+    target_filename := Some s
+  ), " FILE (or -) : dump to file FILE (or stdout)";
+  "-annot", Arg.Set gen_annot, " : generate the corresponding .annot file";
+  "-src", Arg.Set gen_ml, " : generate an equivalent of the original source file (without comments) from a .cmt or a .cmti file";
+  "-info", Arg.Set print_info_arg, " : print information on the file";
+  ]
+
+let arg_usage = "read_cmt [OPTIONS] FILE.cmt : read FILE.cmt and print related information"
+
+let print_info cmt =
+  let open Cmt_format in
+      Printf.printf "module name: %s\n" cmt.cmt_modname;
+      begin match cmt.cmt_annots with
+          Packed (_, list) -> Printf.printf "pack: %s\n" (String.concat " " list)
+        | Implementation _ -> Printf.printf "kind: implementation\n"
+        | Interface _ -> Printf.printf "kind: interface\n"
+        | Partial_implementation _ -> Printf.printf "kind: implementation with errors\n"
+        | Partial_interface _ -> Printf.printf "kind: interface with errors\n"
+      end;
+      Printf.printf "command: %s\n" (String.concat " " (Array.to_list cmt.cmt_args));
+      begin match cmt.cmt_sourcefile with
+          None -> ()
+        | Some name ->
+          Printf.printf "sourcefile: %s\n" name;
+      end;
+      Printf.printf "build directory: %s\n" cmt.cmt_builddir;
+      List.iter (fun dir -> Printf.printf "load path: %s\n%!" dir) cmt.cmt_loadpath;
+      begin
+      match cmt.cmt_source_digest with
+          None -> ()
+        | Some digest -> Printf.printf "source digest: %s\n" (Digest.to_hex digest);
+      end;
+      begin
+      match cmt.cmt_interface_digest with
+          None -> ()
+        | Some digest -> Printf.printf "interface digest: %s\n" (Digest.to_hex digest);
+      end;
+      List.iter (fun (name, digest) ->
+        Printf.printf "import: %s %s\n" name (Digest.to_hex digest);
+      ) (List.sort compare cmt.cmt_imports);
+      Printf.printf "%!";
+      ()
+
+let _ =
+  Clflags.annotations := true;
+
+  Arg.parse arg_list  (fun filename ->
+    if
+      Filename.check_suffix filename ".cmt" ||
+        Filename.check_suffix filename ".cmti"
+    then begin
+      (*      init_path(); *)
+      let cmt = Cmt_format.read_cmt filename in
+      if !gen_annot then Cmt2annot.gen_annot !target_filename filename cmt;
+      if !gen_ml then Cmt2annot.gen_ml !target_filename filename cmt;
+      if !print_info_arg || not (!gen_ml || !gen_annot) then print_info cmt;
+    end else begin
+      Printf.fprintf stderr "Error: the file must have an extension in .cmt or .cmti.\n%!";
+      Arg.usage arg_list arg_usage
+    end
+  ) arg_usage
+
index 3d8ab032c733643b49c7f0cb3fb6219cfefbceb3..89dc946c72b11b5d2cef827595d2952eecae9e48 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: scrapelabels.ml 11156 2011-07-27 14:17:02Z doligez $ *)
 
 open StdLabels
 open Lexer301
index 708ed26cc1fe6203af9a9bdf1f1616d484ace687..2c2e0670407ee0c19c39d1ad73cb8a4a60440045 100755 (executable)
@@ -27,6 +27,7 @@
 *.byte
 *.native
 program
+program.exe
 
 .depend
 .depend.nt
diff --git a/tools/typedtreeIter.ml b/tools/typedtreeIter.ml
new file mode 100644 (file)
index 0000000..4af9a3a
--- /dev/null
@@ -0,0 +1,649 @@
+(**************************************************************************)
+(*                                                                        *)
+(*                                OCaml                                   *)
+(*                                                                        *)
+(*    Thomas Gazagnaire (OCamlPro), Fabrice Le Fessant (INRIA Saclay)     *)
+(*                                                                        *)
+(*   Copyright 2007 Institut National de Recherche en Informatique et     *)
+(*   en Automatique.  All rights reserved.  This file is distributed      *)
+(*   under the terms of the Q Public License version 1.0.                 *)
+(*                                                                        *)
+(**************************************************************************)
+
+(*
+TODO:
+ - 2012/05/10: Follow camlp4 way of building map and iter using classes
+     and inheritance ?
+*)
+
+open Asttypes
+open Typedtree
+
+module type IteratorArgument = sig
+
+    val enter_structure : structure -> unit
+    val enter_value_description : value_description -> unit
+    val enter_type_declaration : type_declaration -> unit
+    val enter_exception_declaration :
+      exception_declaration -> unit
+    val enter_pattern : pattern -> unit
+    val enter_expression : expression -> unit
+    val enter_package_type : package_type -> unit
+    val enter_signature : signature -> unit
+    val enter_signature_item : signature_item -> unit
+    val enter_modtype_declaration : modtype_declaration -> unit
+    val enter_module_type : module_type -> unit
+    val enter_module_expr : module_expr -> unit
+    val enter_with_constraint : with_constraint -> unit
+    val enter_class_expr : class_expr -> unit
+    val enter_class_signature : class_signature -> unit
+    val enter_class_declaration : class_declaration -> unit
+    val enter_class_description : class_description -> unit
+    val enter_class_type_declaration : class_type_declaration -> unit
+    val enter_class_type : class_type -> unit
+    val enter_class_type_field : class_type_field -> unit
+    val enter_core_type : core_type -> unit
+    val enter_core_field_type : core_field_type -> unit
+    val enter_class_structure : class_structure -> unit
+    val enter_class_field : class_field -> unit
+    val enter_structure_item : structure_item -> unit
+
+
+    val leave_structure : structure -> unit
+    val leave_value_description : value_description -> unit
+    val leave_type_declaration : type_declaration -> unit
+    val leave_exception_declaration :
+      exception_declaration -> unit
+    val leave_pattern : pattern -> unit
+    val leave_expression : expression -> unit
+    val leave_package_type : package_type -> unit
+    val leave_signature : signature -> unit
+    val leave_signature_item : signature_item -> unit
+    val leave_modtype_declaration : modtype_declaration -> unit
+    val leave_module_type : module_type -> unit
+    val leave_module_expr : module_expr -> unit
+    val leave_with_constraint : with_constraint -> unit
+    val leave_class_expr : class_expr -> unit
+    val leave_class_signature : class_signature -> unit
+    val leave_class_declaration : class_declaration -> unit
+    val leave_class_description : class_description -> unit
+    val leave_class_type_declaration : class_type_declaration -> unit
+    val leave_class_type : class_type -> unit
+    val leave_class_type_field : class_type_field -> unit
+    val leave_core_type : core_type -> unit
+    val leave_core_field_type : core_field_type -> unit
+    val leave_class_structure : class_structure -> unit
+    val leave_class_field : class_field -> unit
+    val leave_structure_item : structure_item -> unit
+
+    val enter_bindings : rec_flag -> unit
+    val enter_binding : pattern -> expression -> unit
+    val leave_binding : pattern -> expression -> unit
+    val leave_bindings : rec_flag -> unit
+
+      end
+
+module MakeIterator(Iter : IteratorArgument) : sig
+
+    val iter_structure : structure -> unit
+    val iter_signature : signature -> unit
+    val iter_structure_item : structure_item -> unit
+    val iter_signature_item : signature_item -> unit
+    val iter_expression : expression -> unit
+    val iter_module_type : module_type -> unit
+    val iter_pattern : pattern -> unit
+    val iter_class_expr : class_expr -> unit
+
+  end = struct
+
+    let may_iter f v =
+      match v with
+        None -> ()
+      | Some x -> f x
+
+
+    open Misc
+    open Asttypes
+
+    let rec iter_structure str =
+      Iter.enter_structure str;
+      List.iter iter_structure_item str.str_items;
+      Iter.leave_structure str
+
+
+    and iter_binding (pat, exp) =
+      Iter.enter_binding pat exp;
+      iter_pattern pat;
+      iter_expression exp;
+      Iter.leave_binding pat exp
+
+    and iter_bindings rec_flag list =
+      Iter.enter_bindings rec_flag;
+      List.iter iter_binding list;
+      Iter.leave_bindings rec_flag
+
+    and iter_structure_item item =
+      Iter.enter_structure_item item;
+      begin
+        match item.str_desc with
+          Tstr_eval exp -> iter_expression exp
+        | Tstr_value (rec_flag, list) ->
+            iter_bindings rec_flag list
+        | Tstr_primitive (id, _, v) -> iter_value_description v
+        | Tstr_type list ->
+            List.iter (fun (id, _, decl) -> iter_type_declaration decl) list
+        | Tstr_exception (id, _, decl) -> iter_exception_declaration decl
+        | Tstr_exn_rebind (id, _, p, _) -> ()
+        | Tstr_module (id, _, mexpr) ->
+            iter_module_expr mexpr
+        | Tstr_recmodule list ->
+            List.iter (fun (id, _, mtype, mexpr) ->
+                iter_module_type mtype;
+                iter_module_expr mexpr) list
+        | Tstr_modtype (id, _, mtype) ->
+            iter_module_type mtype
+        | Tstr_open _ -> ()
+        | Tstr_class list ->
+            List.iter (fun (ci, _, _) ->
+                Iter.enter_class_declaration ci;
+                iter_class_expr ci.ci_expr;
+                Iter.leave_class_declaration ci;
+            ) list
+        | Tstr_class_type list ->
+            List.iter (fun (id, _, ct) ->
+                Iter.enter_class_type_declaration ct;
+                iter_class_type ct.ci_expr;
+                Iter.leave_class_type_declaration ct;
+            ) list
+        | Tstr_include (mexpr, _) ->
+            iter_module_expr mexpr
+      end;
+      Iter.leave_structure_item item
+
+    and iter_value_description v =
+      Iter.enter_value_description v;
+      iter_core_type v.val_desc;
+      Iter.leave_value_description v
+
+    and iter_type_declaration decl =
+      Iter.enter_type_declaration decl;
+      List.iter (fun (ct1, ct2, loc) ->
+          iter_core_type ct1;
+          iter_core_type ct2
+      ) decl.typ_cstrs;
+      begin match decl.typ_kind with
+          Ttype_abstract -> ()
+        | Ttype_variant list ->
+            List.iter (fun (s, _, cts, loc) ->
+                List.iter iter_core_type cts
+            ) list
+        | Ttype_record list ->
+            List.iter (fun (s, _, mut, ct, loc) ->
+                iter_core_type ct
+            ) list
+      end;
+      begin match decl.typ_manifest with
+          None -> ()
+        | Some ct -> iter_core_type ct
+      end;
+      Iter.leave_type_declaration decl
+
+    and iter_exception_declaration decl =
+      Iter.enter_exception_declaration decl;
+      List.iter iter_core_type decl.exn_params;
+      Iter.leave_exception_declaration decl;
+
+    and iter_pattern pat =
+      Iter.enter_pattern pat;
+      List.iter (fun (cstr, _) -> match cstr with
+              | Tpat_type _ -> ()
+              | Tpat_unpack -> ()
+              | Tpat_constraint ct -> iter_core_type ct) pat.pat_extra;
+      begin
+        match pat.pat_desc with
+          Tpat_any -> ()
+        | Tpat_var (id, _) -> ()
+        | Tpat_alias (pat1, _, _) -> iter_pattern pat1
+        | Tpat_constant cst -> ()
+        | Tpat_tuple list ->
+            List.iter iter_pattern list
+        | Tpat_construct (path, _, _, args, _) ->
+            List.iter iter_pattern args
+        | Tpat_variant (label, pato, _) ->
+            begin match pato with
+                None -> ()
+              | Some pat -> iter_pattern pat
+            end
+        | Tpat_record (list, closed) ->
+            List.iter (fun (path, _, _, pat) -> iter_pattern pat) list
+        | Tpat_array list -> List.iter iter_pattern list
+        | Tpat_or (p1, p2, _) -> iter_pattern p1; iter_pattern p2
+        | Tpat_lazy p -> iter_pattern p
+      end;
+      Iter.leave_pattern pat
+
+    and option f x = match x with None -> () | Some e -> f e
+
+    and iter_expression exp =
+      Iter.enter_expression exp;
+      List.iter (function (cstr, _) ->
+        match cstr with
+            Texp_constraint (cty1, cty2) -> option iter_core_type cty1; option iter_core_type cty2
+        | Texp_open (path, _, _) -> ())
+        exp.exp_extra;
+      begin
+        match exp.exp_desc with
+          Texp_ident (path, _, _) -> ()
+        | Texp_constant cst -> ()
+        | Texp_let (rec_flag, list, exp) ->
+            iter_bindings rec_flag list;
+            iter_expression exp
+        | Texp_function (label, cases, _) ->
+            iter_bindings Nonrecursive cases
+        | Texp_apply (exp, list) ->
+            iter_expression exp;
+            List.iter (fun (label, expo, _) ->
+                match expo with
+                  None -> ()
+                | Some exp -> iter_expression exp
+            ) list
+        | Texp_match (exp, list, _) ->
+            iter_expression exp;
+            iter_bindings Nonrecursive list
+        | Texp_try (exp, list) ->
+            iter_expression exp;
+            iter_bindings Nonrecursive list
+        | Texp_tuple list ->
+            List.iter iter_expression list
+        | Texp_construct (path, _, _, args, _) ->
+            List.iter iter_expression args
+        | Texp_variant (label, expo) ->
+            begin match expo with
+                None -> ()
+              | Some exp -> iter_expression exp
+            end
+        | Texp_record (list, expo) ->
+            List.iter (fun (path, _, _, exp) ->
+                iter_expression exp
+            ) list;
+            begin match expo with
+                None -> ()
+              | Some exp -> iter_expression exp
+            end
+        | Texp_field (exp, path, _, label) ->
+            iter_expression exp
+        | Texp_setfield (exp1, path, _ , label, exp2) ->
+            iter_expression exp1;
+            iter_expression exp2
+        | Texp_array list ->
+            List.iter iter_expression list
+        | Texp_ifthenelse (exp1, exp2, expo) ->
+            iter_expression exp1;
+            iter_expression exp2;
+            begin match expo with
+                None -> ()
+              | Some exp -> iter_expression exp
+            end
+        | Texp_sequence (exp1, exp2) ->
+            iter_expression exp1;
+            iter_expression exp2
+        | Texp_while (exp1, exp2) ->
+            iter_expression exp1;
+            iter_expression exp2
+        | Texp_for (id, _, exp1, exp2, dir, exp3) ->
+            iter_expression exp1;
+            iter_expression exp2;
+            iter_expression exp3
+        | Texp_when (exp1, exp2) ->
+            iter_expression exp1;
+            iter_expression exp2
+        | Texp_send (exp, meth, expo) ->
+            iter_expression exp;
+         begin
+           match expo with
+               None -> ()
+             | Some exp -> iter_expression exp
+         end
+        | Texp_new (path, _, _) -> ()
+        | Texp_instvar (_, path, _) -> ()
+        | Texp_setinstvar (_, _, _, exp) ->
+            iter_expression exp
+        | Texp_override (_, list) ->
+            List.iter (fun (path, _, exp) ->
+                iter_expression exp
+            ) list
+        | Texp_letmodule (id, _, mexpr, exp) ->
+            iter_module_expr mexpr;
+            iter_expression exp
+        | Texp_assert exp -> iter_expression exp
+        | Texp_assertfalse -> ()
+        | Texp_lazy exp -> iter_expression exp
+        | Texp_object (cl, _) ->
+            iter_class_structure cl
+        | Texp_pack (mexpr) ->
+            iter_module_expr mexpr
+        | Texp_poly (exp, None) -> iter_expression exp
+        | Texp_poly (exp, Some ct) ->
+            iter_expression exp; iter_core_type ct
+        | Texp_newtype (s, exp) ->
+            iter_expression exp
+      end;
+      Iter.leave_expression exp;
+
+    and iter_package_type pack =
+      Iter.enter_package_type pack;
+      List.iter (fun (s, ct) -> iter_core_type ct) pack.pack_fields;
+      Iter.leave_package_type pack;
+
+    and iter_signature sg =
+      Iter.enter_signature sg;
+      List.iter iter_signature_item sg.sig_items;
+      Iter.leave_signature sg;
+
+    and iter_signature_item item =
+      Iter.enter_signature_item item;
+      begin
+        match item.sig_desc with
+          Tsig_value (id, _, v) ->
+            iter_value_description v
+        | Tsig_type list ->
+            List.iter (fun (id, _, decl) ->
+                iter_type_declaration decl
+            ) list
+        | Tsig_exception (id, _, decl) ->
+            iter_exception_declaration decl
+        | Tsig_module (id, _, mtype) ->
+            iter_module_type mtype
+        | Tsig_recmodule list ->
+            List.iter (fun (id, _, mtype) -> iter_module_type mtype) list
+        | Tsig_modtype (id, _, mdecl) ->
+            iter_modtype_declaration mdecl
+        | Tsig_open _ -> ()
+        | Tsig_include (mty,_) -> iter_module_type mty
+        | Tsig_class list ->
+            List.iter iter_class_description list
+        | Tsig_class_type list ->
+            List.iter iter_class_type_declaration list
+      end;
+      Iter.leave_signature_item item;
+
+    and iter_modtype_declaration mdecl =
+      Iter.enter_modtype_declaration mdecl;
+      begin
+        match mdecl with
+          Tmodtype_abstract -> ()
+        | Tmodtype_manifest mtype -> iter_module_type mtype
+      end;
+      Iter.leave_modtype_declaration mdecl;
+
+
+    and iter_class_description cd =
+      Iter.enter_class_description cd;
+      iter_class_type cd.ci_expr;
+      Iter.leave_class_description cd;
+
+    and iter_class_type_declaration cd =
+      Iter.enter_class_type_declaration cd;
+      iter_class_type cd.ci_expr;
+        Iter.leave_class_type_declaration cd;
+
+    and iter_module_type mty =
+      Iter.enter_module_type mty;
+      begin
+        match mty.mty_desc with
+          Tmty_ident (path, _) -> ()
+        | Tmty_signature sg -> iter_signature sg
+        | Tmty_functor (id, _, mtype1, mtype2) ->
+            iter_module_type mtype1; iter_module_type mtype2
+        | Tmty_with (mtype, list) ->
+            iter_module_type mtype;
+            List.iter (fun (path, _, withc) ->
+                iter_with_constraint withc
+            ) list
+        | Tmty_typeof mexpr ->
+            iter_module_expr mexpr
+      end;
+      Iter.leave_module_type mty;
+
+    and iter_with_constraint cstr =
+      Iter.enter_with_constraint cstr;
+      begin
+        match cstr with
+          Twith_type decl -> iter_type_declaration decl
+        | Twith_module _ -> ()
+        | Twith_typesubst decl -> iter_type_declaration decl
+        | Twith_modsubst _ -> ()
+      end;
+      Iter.leave_with_constraint cstr;
+
+    and iter_module_expr mexpr =
+      Iter.enter_module_expr mexpr;
+      begin
+        match mexpr.mod_desc with
+          Tmod_ident (p, _) -> ()
+        | Tmod_structure st -> iter_structure st
+        | Tmod_functor (id, _, mtype, mexpr) ->
+            iter_module_type mtype;
+            iter_module_expr mexpr
+        | Tmod_apply (mexp1, mexp2, _) ->
+            iter_module_expr mexp1;
+            iter_module_expr mexp2
+        | Tmod_constraint (mexpr, _, Tmodtype_implicit, _ ) ->
+            iter_module_expr mexpr
+        | Tmod_constraint (mexpr, _, Tmodtype_explicit mtype, _) ->
+            iter_module_expr mexpr;
+            iter_module_type mtype
+        | Tmod_unpack (exp, mty) ->
+            iter_expression exp
+(*          iter_module_type mty *)
+      end;
+      Iter.leave_module_expr mexpr;
+
+    and iter_class_expr cexpr =
+      Iter.enter_class_expr cexpr;
+      begin
+        match cexpr.cl_desc with
+        | Tcl_constraint (cl, None, _, _, _ ) ->
+            iter_class_expr cl;
+        | Tcl_structure clstr -> iter_class_structure clstr
+        | Tcl_fun (label, pat, priv, cl, partial) ->
+          iter_pattern pat;
+         List.iter (fun (id, _, exp) -> iter_expression exp) priv;
+          iter_class_expr cl
+
+        | Tcl_apply (cl, args) ->
+            iter_class_expr cl;
+            List.iter (fun (label, expo, _) ->
+                match expo with
+                  None -> ()
+                | Some exp -> iter_expression exp
+            ) args
+
+        | Tcl_let (rec_flat, bindings, ivars, cl) ->
+          iter_bindings rec_flat bindings;
+         List.iter (fun (id, _, exp) -> iter_expression exp) ivars;
+            iter_class_expr cl
+
+        | Tcl_constraint (cl, Some clty, vals, meths, concrs) ->
+            iter_class_expr cl;
+            iter_class_type clty
+
+        | Tcl_ident (_, _, tyl) ->
+            List.iter iter_core_type tyl
+      end;
+      Iter.leave_class_expr cexpr;
+
+    and iter_class_type ct =
+      Iter.enter_class_type ct;
+      begin
+        match ct.cltyp_desc with
+          Tcty_signature csg -> iter_class_signature csg
+        | Tcty_constr (path, _, list) ->
+            List.iter iter_core_type list
+        | Tcty_fun (label, ct, cl) ->
+            iter_core_type ct;
+            iter_class_type cl
+      end;
+      Iter.leave_class_type ct;
+
+    and iter_class_signature cs =
+      Iter.enter_class_signature cs;
+      iter_core_type cs.csig_self;
+      List.iter iter_class_type_field cs.csig_fields;
+      Iter.leave_class_signature cs
+
+
+    and iter_class_type_field ctf =
+      Iter.enter_class_type_field ctf;
+      begin
+        match ctf.ctf_desc with
+          Tctf_inher ct -> iter_class_type ct
+        | Tctf_val (s, mut, virt, ct) ->
+            iter_core_type ct
+        | Tctf_virt  (s, priv, ct) ->
+            iter_core_type ct
+        | Tctf_meth  (s, priv, ct) ->
+            iter_core_type ct
+        | Tctf_cstr  (ct1, ct2) ->
+            iter_core_type ct1;
+            iter_core_type ct2
+      end;
+      Iter.leave_class_type_field ctf
+
+    and iter_core_type ct =
+      Iter.enter_core_type ct;
+      begin
+        match ct.ctyp_desc with
+          Ttyp_any -> ()
+        | Ttyp_var s -> ()
+        | Ttyp_arrow (label, ct1, ct2) ->
+            iter_core_type ct1;
+            iter_core_type ct2
+        | Ttyp_tuple list -> List.iter iter_core_type list
+        | Ttyp_constr (path, _, list) ->
+            List.iter iter_core_type list
+        | Ttyp_object list ->
+            List.iter iter_core_field_type list
+        | Ttyp_class (path, _, list, labels) ->
+            List.iter iter_core_type list
+        | Ttyp_alias (ct, s) ->
+            iter_core_type ct
+        | Ttyp_variant (list, bool, labels) ->
+            List.iter iter_row_field list
+        | Ttyp_poly (list, ct) -> iter_core_type ct
+        | Ttyp_package pack -> iter_package_type pack
+      end;
+      Iter.leave_core_type ct;
+
+    and iter_core_field_type cft =
+      Iter.enter_core_field_type cft;
+      begin match cft.field_desc with
+          Tcfield_var -> ()
+        | Tcfield (s, ct) -> iter_core_type ct
+      end;
+      Iter.leave_core_field_type cft;
+
+    and iter_class_structure cs =
+      Iter.enter_class_structure cs;
+      iter_pattern cs.cstr_pat;
+      List.iter iter_class_field cs.cstr_fields;
+      Iter.leave_class_structure cs;
+
+
+    and iter_row_field rf =
+      match rf with
+        Ttag (label, bool, list) ->
+          List.iter iter_core_type list
+      | Tinherit ct -> iter_core_type ct
+
+    and iter_class_field cf =
+      Iter.enter_class_field cf;
+      begin
+        match cf.cf_desc with
+          Tcf_inher (ovf, cl, super, _vals, _meths) ->
+          iter_class_expr cl
+      | Tcf_constr (cty, cty') ->
+          iter_core_type cty;
+          iter_core_type cty'
+      | Tcf_val (lab, _, _, mut, Tcfk_virtual cty, override) ->
+          iter_core_type cty
+      | Tcf_val (lab, _, _, mut, Tcfk_concrete exp, override) ->
+          iter_expression exp
+      | Tcf_meth (lab, _, priv, Tcfk_virtual cty, override) ->
+          iter_core_type cty
+      | Tcf_meth (lab, _, priv, Tcfk_concrete exp, override) ->
+          iter_expression exp
+(*      | Tcf_let (rec_flag, bindings, exps) ->
+          iter_bindings rec_flag bindings;
+       List.iter (fun (id, _, exp) -> iter_expression exp) exps; *)
+      | Tcf_init exp ->
+          iter_expression exp
+      end;
+      Iter.leave_class_field cf;
+
+  end
+
+module DefaultIteratorArgument = struct
+
+      let enter_structure _ = ()
+      let enter_value_description _ = ()
+      let enter_type_declaration _ = ()
+      let enter_exception_declaration _ = ()
+      let enter_pattern _ = ()
+      let enter_expression _ = ()
+      let enter_package_type _ = ()
+      let enter_signature _ = ()
+      let enter_signature_item _ = ()
+      let enter_modtype_declaration _ = ()
+      let enter_module_type _ = ()
+      let enter_module_expr _ = ()
+      let enter_with_constraint _ = ()
+      let enter_class_expr _ = ()
+      let enter_class_signature _ = ()
+      let enter_class_declaration _ = ()
+      let enter_class_description _ = ()
+      let enter_class_type_declaration _ = ()
+      let enter_class_type _ = ()
+      let enter_class_type_field _ = ()
+      let enter_core_type _ = ()
+      let enter_core_field_type _ = ()
+      let enter_class_structure _ = ()
+    let enter_class_field _ = ()
+    let enter_structure_item _ = ()
+
+
+      let leave_structure _ = ()
+      let leave_value_description _ = ()
+      let leave_type_declaration _ = ()
+      let leave_exception_declaration _ = ()
+      let leave_pattern _ = ()
+      let leave_expression _ = ()
+      let leave_package_type _ = ()
+      let leave_signature _ = ()
+      let leave_signature_item _ = ()
+      let leave_modtype_declaration _ = ()
+      let leave_module_type _ = ()
+      let leave_module_expr _ = ()
+      let leave_with_constraint _ = ()
+      let leave_class_expr _ = ()
+      let leave_class_signature _ = ()
+      let leave_class_declaration _ = ()
+      let leave_class_description _ = ()
+      let leave_class_type_declaration _ = ()
+      let leave_class_type _ = ()
+      let leave_class_type_field _ = ()
+      let leave_core_type _ = ()
+      let leave_core_field_type _ = ()
+      let leave_class_structure _ = ()
+    let leave_class_field _ = ()
+    let leave_structure_item _ = ()
+
+    let enter_binding _ _ = ()
+    let leave_binding _ _ = ()
+
+    let enter_bindings _ = ()
+    let leave_bindings _ = ()
+
+  end
+
+
diff --git a/tools/typedtreeIter.mli b/tools/typedtreeIter.mli
new file mode 100644 (file)
index 0000000..1aedead
--- /dev/null
@@ -0,0 +1,95 @@
+(**************************************************************************)
+(*                                                                        *)
+(*                                OCaml                                   *)
+(*                                                                        *)
+(*    Thomas Gazagnaire (OCamlPro), Fabrice Le Fessant (INRIA Saclay)     *)
+(*                                                                        *)
+(*   Copyright 2007 Institut National de Recherche en Informatique et     *)
+(*   en Automatique.  All rights reserved.  This file is distributed      *)
+(*   under the terms of the Q Public License version 1.0.                 *)
+(*                                                                        *)
+(**************************************************************************)
+
+open Asttypes
+open Typedtree
+
+
+module type IteratorArgument = sig
+    val enter_structure : structure -> unit
+    val enter_value_description : value_description -> unit
+    val enter_type_declaration : type_declaration -> unit
+    val enter_exception_declaration :
+      exception_declaration -> unit
+    val enter_pattern : pattern -> unit
+    val enter_expression : expression -> unit
+    val enter_package_type : package_type -> unit
+    val enter_signature : signature -> unit
+    val enter_signature_item : signature_item -> unit
+    val enter_modtype_declaration : modtype_declaration -> unit
+    val enter_module_type : module_type -> unit
+    val enter_module_expr : module_expr -> unit
+    val enter_with_constraint : with_constraint -> unit
+    val enter_class_expr : class_expr -> unit
+    val enter_class_signature : class_signature -> unit
+    val enter_class_declaration : class_declaration -> unit
+    val enter_class_description : class_description -> unit
+    val enter_class_type_declaration : class_type_declaration -> unit
+    val enter_class_type : class_type -> unit
+    val enter_class_type_field : class_type_field -> unit
+    val enter_core_type : core_type -> unit
+    val enter_core_field_type : core_field_type -> unit
+    val enter_class_structure : class_structure -> unit
+    val enter_class_field : class_field -> unit
+    val enter_structure_item : structure_item -> unit
+
+
+      val leave_structure : structure -> unit
+    val leave_value_description : value_description -> unit
+    val leave_type_declaration : type_declaration -> unit
+    val leave_exception_declaration :
+      exception_declaration -> unit
+    val leave_pattern : pattern -> unit
+    val leave_expression : expression -> unit
+    val leave_package_type : package_type -> unit
+    val leave_signature : signature -> unit
+    val leave_signature_item : signature_item -> unit
+    val leave_modtype_declaration : modtype_declaration -> unit
+    val leave_module_type : module_type -> unit
+    val leave_module_expr : module_expr -> unit
+    val leave_with_constraint : with_constraint -> unit
+    val leave_class_expr : class_expr -> unit
+    val leave_class_signature : class_signature -> unit
+    val leave_class_declaration : class_declaration -> unit
+    val leave_class_description : class_description -> unit
+    val leave_class_type_declaration : class_type_declaration -> unit
+    val leave_class_type : class_type -> unit
+    val leave_class_type_field : class_type_field -> unit
+    val leave_core_type : core_type -> unit
+    val leave_core_field_type : core_field_type -> unit
+    val leave_class_structure : class_structure -> unit
+    val leave_class_field : class_field -> unit
+    val leave_structure_item : structure_item -> unit
+
+    val enter_bindings : rec_flag -> unit
+    val enter_binding : pattern -> expression -> unit
+    val leave_binding : pattern -> expression -> unit
+    val leave_bindings : rec_flag -> unit
+
+      end
+
+module MakeIterator :
+  functor
+  (Iter : IteratorArgument) ->
+           sig
+             val iter_structure : structure -> unit
+             val iter_signature : signature -> unit
+    val iter_structure_item : structure_item -> unit
+    val iter_signature_item : signature_item -> unit
+    val iter_expression : expression -> unit
+    val iter_module_type : module_type -> unit
+    val iter_pattern : pattern -> unit
+    val iter_class_expr : class_expr -> unit
+           end
+
+module DefaultIteratorArgument : IteratorArgument
+
diff --git a/tools/untypeast.ml b/tools/untypeast.ml
new file mode 100644 (file)
index 0000000..7f44cff
--- /dev/null
@@ -0,0 +1,543 @@
+(**************************************************************************)
+(*                                                                        *)
+(*                                OCaml                                   *)
+(*                                                                        *)
+(*    Thomas Gazagnaire (OCamlPro), Fabrice Le Fessant (INRIA Saclay)     *)
+(*                                                                        *)
+(*   Copyright 2007 Institut National de Recherche en Informatique et     *)
+(*   en Automatique.  All rights reserved.  This file is distributed      *)
+(*   under the terms of the Q Public License version 1.0.                 *)
+(*                                                                        *)
+(**************************************************************************)
+
+open Misc
+open Asttypes
+open Typedtree
+open Parsetree
+
+(*
+Some notes:
+
+   * For Pexp_function, we cannot go back to the exact original version
+   when there is a default argument, because the default argument is
+   translated in the typer. The code, if printed, will not be parsable because
+   new generated identifiers are not correct.
+
+   * For Pexp_apply, it is unclear whether arguments are reordered, especially
+    when there are optional arguments.
+
+  * TODO: check Ttype_variant -> Ptype_variant (stub None)
+
+*)
+
+
+let rec lident_of_path path =
+  match path with
+      Path.Pident id -> Longident.Lident (Ident.name id)
+    | Path.Pdot (p, s, _) -> Longident.Ldot (lident_of_path p, s)
+    | Path.Papply (p1, p2) ->
+       Longident.Lapply (lident_of_path p1, lident_of_path p2)
+
+let rec untype_structure str =
+  List.map untype_structure_item str.str_items
+
+and untype_structure_item item =
+  let desc =
+    match item.str_desc with
+      Tstr_eval exp -> Pstr_eval (untype_expression exp)
+    | Tstr_value (rec_flag, list) ->
+        Pstr_value (rec_flag, List.map (fun (pat, exp) ->
+              untype_pattern pat, untype_expression exp) list)
+    | Tstr_primitive (id, name, v) ->
+        Pstr_primitive (name, untype_value_description v)
+    | Tstr_type list ->
+        Pstr_type (List.map (fun (id, name, decl) ->
+              name, untype_type_declaration decl) list)
+    | Tstr_exception (id, name, decl) ->
+        Pstr_exception (name, untype_exception_declaration decl)
+    | Tstr_exn_rebind (id, name, p, lid) ->
+        Pstr_exn_rebind (name, lid)
+    | Tstr_module (id, name, mexpr) ->
+        Pstr_module (name, untype_module_expr mexpr)
+    | Tstr_recmodule list ->
+        Pstr_recmodule (List.map (fun (id, name, mtype, mexpr) ->
+              name, untype_module_type mtype,
+              untype_module_expr mexpr) list)
+    | Tstr_modtype (id, name, mtype) ->
+        Pstr_modtype (name, untype_module_type mtype)
+    | Tstr_open (path, lid) -> Pstr_open (lid)
+    | Tstr_class list ->
+        Pstr_class (List.map (fun (ci, _, _) ->
+              { pci_virt = ci.ci_virt;
+                pci_params = ci.ci_params;
+                pci_name = ci.ci_id_name;
+                pci_expr = untype_class_expr ci.ci_expr;
+                pci_variance = ci.ci_variance;
+                pci_loc = ci.ci_loc;
+              }
+          ) list)
+    | Tstr_class_type list ->
+        Pstr_class_type (List.map (fun (id, name, ct) ->
+              {
+                pci_virt = ct.ci_virt;
+                pci_params = ct.ci_params;
+                pci_name = ct.ci_id_name;
+                pci_expr = untype_class_type ct.ci_expr;
+                pci_variance = ct.ci_variance;
+                pci_loc = ct.ci_loc;
+              }
+          ) list)
+    | Tstr_include (mexpr, _) ->
+        Pstr_include (untype_module_expr mexpr)
+  in
+  { pstr_desc = desc; pstr_loc = item.str_loc; }
+
+and untype_value_description v =
+  {
+    pval_prim = v.val_prim;
+    pval_type = untype_core_type v.val_desc;
+    pval_loc = v.val_loc }
+
+and untype_type_declaration decl =
+  {
+    ptype_params = decl.typ_params;
+    ptype_cstrs = List.map (fun (ct1, ct2, loc) ->
+        (untype_core_type ct1,
+          untype_core_type ct2, loc)
+    ) decl.typ_cstrs;
+    ptype_kind = (match decl.typ_kind with
+        Ttype_abstract -> Ptype_abstract
+      | Ttype_variant list ->
+          Ptype_variant (List.map (fun (s, name, cts, loc) ->
+                (name, List.map untype_core_type cts, None, loc)
+            ) list)
+      | Ttype_record list ->
+          Ptype_record (List.map (fun (s, name, mut, ct, loc) ->
+                (name, mut, untype_core_type ct, loc)
+            ) list)
+    );
+    ptype_private = decl.typ_private;
+    ptype_manifest = (match decl.typ_manifest with
+        None -> None
+      | Some ct -> Some (untype_core_type ct));
+    ptype_variance = decl.typ_variance;
+    ptype_loc = decl.typ_loc;
+  }
+
+and untype_exception_declaration decl =
+  List.map untype_core_type decl.exn_params
+
+and untype_pattern pat =
+  let desc =
+  match pat with
+      { pat_extra=[Tpat_unpack, _]; pat_desc = Tpat_var (_,name) } -> Ppat_unpack name
+    | { pat_extra=[Tpat_type (path, lid), _] } -> Ppat_type lid
+    | { pat_extra= (Tpat_constraint ct, _) :: rem } ->
+        Ppat_constraint (untype_pattern { pat with pat_extra=rem }, untype_core_type ct)
+    | _ ->
+    match pat.pat_desc with
+      Tpat_any -> Ppat_any
+    | Tpat_var (id, name) ->
+        begin
+          match (Ident.name id).[0] with
+            'A'..'Z' ->
+              Ppat_unpack name
+          | _ ->
+              Ppat_var name
+        end
+    | Tpat_alias (pat, id, name) ->
+        Ppat_alias (untype_pattern pat, name)
+    | Tpat_constant cst -> Ppat_constant cst
+    | Tpat_tuple list ->
+        Ppat_tuple (List.map untype_pattern list)
+    | Tpat_construct (path, lid, _, args, explicit_arity) ->
+        Ppat_construct (lid,
+          (match args with
+              [] -> None
+            | args -> Some
+                  { ppat_desc = Ppat_tuple (List.map untype_pattern args);
+                  ppat_loc = pat.pat_loc; }
+          ), explicit_arity)
+    | Tpat_variant (label, pato, _) ->
+        Ppat_variant (label, match pato with
+            None -> None
+          | Some pat -> Some (untype_pattern pat))
+    | Tpat_record (list, closed) ->
+        Ppat_record (List.map (fun (path, lid, _, pat) ->
+              lid, untype_pattern pat) list, closed)
+    | Tpat_array list -> Ppat_array (List.map untype_pattern list)
+    | Tpat_or (p1, p2, _) -> Ppat_or (untype_pattern p1, untype_pattern p2)
+    | Tpat_lazy p -> Ppat_lazy (untype_pattern p)
+  in
+  {
+    ppat_desc = desc;
+    ppat_loc = pat.pat_loc;
+  }
+
+and option f x = match x with None -> None | Some e -> Some (f e)
+
+and untype_expression exp =
+  let desc =
+  match exp.exp_extra with
+      (Texp_constraint (cty1, cty2), _) :: rem ->
+        Pexp_constraint (untype_expression { exp with exp_extra = rem },
+                         option untype_core_type cty1, option untype_core_type cty2)
+    | (Texp_open (path, lid, _), _) :: rem ->
+        Pexp_open (lid, untype_expression { exp with exp_extra = rem} )
+    | [] ->
+    match exp.exp_desc with
+      Texp_ident (path, lid, _) -> Pexp_ident (lid)
+    | Texp_constant cst -> Pexp_constant cst
+    | Texp_let (rec_flag, list, exp) ->
+        Pexp_let (rec_flag,
+          List.map (fun (pat, exp) ->
+              untype_pattern pat, untype_expression exp) list,
+          untype_expression exp)
+    | Texp_function (label, cases, _) ->
+        Pexp_function (label, None,
+          List.map (fun (pat, exp) ->
+              (untype_pattern pat, untype_expression exp)) cases)
+    | Texp_apply (exp, list) ->
+        Pexp_apply (untype_expression exp,
+          List.fold_right (fun (label, expo, _) list ->
+              match expo with
+                None -> list
+              | Some exp -> (label, untype_expression exp) :: list
+          ) list [])
+    | Texp_match (exp, list, _) ->
+        Pexp_match (untype_expression exp,
+          List.map (fun (pat, exp) ->
+              untype_pattern pat, untype_expression exp) list)
+    | Texp_try (exp, list) ->
+        Pexp_try (untype_expression exp,
+          List.map (fun (pat, exp) ->
+              untype_pattern pat, untype_expression exp) list)
+    | Texp_tuple list ->
+        Pexp_tuple (List.map untype_expression list)
+    | Texp_construct (path, lid, _, args, explicit_arity) ->
+        Pexp_construct (lid,
+          (match args with
+              [] -> None
+            | args -> Some
+                  { pexp_desc = Pexp_tuple (List.map untype_expression args);
+                  pexp_loc = exp.exp_loc; }
+          ), explicit_arity)
+    | Texp_variant (label, expo) ->
+        Pexp_variant (label, match expo with
+            None -> None
+          | Some exp -> Some (untype_expression exp))
+    | Texp_record (list, expo) ->
+        Pexp_record (List.map (fun (path, lid, _, exp) ->
+              lid, untype_expression exp
+          ) list,
+          match expo with
+            None -> None
+          | Some exp -> Some (untype_expression exp))
+    | Texp_field (exp, path, lid, label) ->
+        Pexp_field (untype_expression exp, lid)
+    | Texp_setfield (exp1, path, lid, label, exp2) ->
+        Pexp_setfield (untype_expression exp1, lid,
+          untype_expression exp2)
+    | Texp_array list ->
+        Pexp_array (List.map untype_expression list)
+    | Texp_ifthenelse (exp1, exp2, expo) ->
+        Pexp_ifthenelse (untype_expression exp1,
+          untype_expression exp2,
+          match expo with
+            None -> None
+          | Some exp -> Some (untype_expression exp))
+    | Texp_sequence (exp1, exp2) ->
+        Pexp_sequence (untype_expression exp1, untype_expression exp2)
+    | Texp_while (exp1, exp2) ->
+        Pexp_while (untype_expression exp1, untype_expression exp2)
+    | Texp_for (id, name, exp1, exp2, dir, exp3) ->
+        Pexp_for (name,
+          untype_expression exp1, untype_expression exp2,
+          dir, untype_expression exp3)
+    | Texp_when (exp1, exp2) ->
+        Pexp_when (untype_expression exp1, untype_expression exp2)
+    | Texp_send (exp, meth, _) ->
+        Pexp_send (untype_expression exp, match meth with
+            Tmeth_name name -> name
+          | Tmeth_val id -> Ident.name id)
+    | Texp_new (path, lid, _) -> Pexp_new (lid)
+    | Texp_instvar (_, path, name) ->
+      Pexp_ident ({name with txt = lident_of_path path})
+    | Texp_setinstvar (_, path, lid, exp) ->
+        Pexp_setinstvar (lid, untype_expression exp)
+    | Texp_override (_, list) ->
+        Pexp_override (List.map (fun (path, lid, exp) ->
+              lid, untype_expression exp
+          ) list)
+    | Texp_letmodule (id, name, mexpr, exp) ->
+        Pexp_letmodule (name, untype_module_expr mexpr,
+          untype_expression exp)
+    | Texp_assert exp -> Pexp_assert (untype_expression exp)
+    | Texp_assertfalse -> Pexp_assertfalse
+    | Texp_lazy exp -> Pexp_lazy (untype_expression exp)
+    | Texp_object (cl, _) ->
+        Pexp_object (untype_class_structure cl)
+    | Texp_pack (mexpr) ->
+        Pexp_pack (untype_module_expr mexpr)
+    | Texp_poly (exp, None) -> Pexp_poly(untype_expression exp, None)
+    | Texp_poly (exp, Some ct) ->
+        Pexp_poly (untype_expression exp, Some (untype_core_type ct))
+    | Texp_newtype (s, exp) ->
+        Pexp_newtype (s, untype_expression exp)
+  in
+  { pexp_loc = exp.exp_loc;
+    pexp_desc = desc;
+  }
+
+and untype_package_type pack =
+  (pack.pack_txt,
+    List.map (fun (s, ct) ->
+        (s, untype_core_type ct)) pack.pack_fields)
+
+and untype_signature sg =
+  List.map untype_signature_item sg.sig_items
+
+and untype_signature_item item =
+  let desc =
+    match item.sig_desc with
+      Tsig_value (id, name, v) ->
+        Psig_value (name, untype_value_description v)
+    | Tsig_type list ->
+        Psig_type (List.map (fun (id, name, decl) ->
+              name, untype_type_declaration decl
+          ) list)
+    | Tsig_exception (id, name, decl) ->
+        Psig_exception (name, untype_exception_declaration decl)
+    | Tsig_module (id, name, mtype) ->
+        Psig_module (name, untype_module_type mtype)
+    | Tsig_recmodule list ->
+        Psig_recmodule (List.map (fun (id, name, mtype) ->
+              name, untype_module_type mtype) list)
+    | Tsig_modtype (id, name, mdecl) ->
+        Psig_modtype (name, untype_modtype_declaration mdecl)
+    | Tsig_open (path, lid) -> Psig_open (lid)
+    | Tsig_include (mty, lid) -> Psig_include (untype_module_type mty)
+    | Tsig_class list ->
+        Psig_class (List.map untype_class_description list)
+    | Tsig_class_type list ->
+        Psig_class_type (List.map untype_class_type_declaration list)
+  in
+  { psig_desc = desc;
+    psig_loc = item.sig_loc;
+  }
+
+and untype_modtype_declaration mdecl =
+  match mdecl with
+    Tmodtype_abstract -> Pmodtype_abstract
+  | Tmodtype_manifest mtype -> Pmodtype_manifest (untype_module_type mtype)
+
+and untype_class_description cd =
+  {
+    pci_virt = cd.ci_virt;
+    pci_params = cd.ci_params;
+    pci_name = cd.ci_id_name;
+    pci_expr = untype_class_type cd.ci_expr;
+    pci_variance = cd.ci_variance;
+    pci_loc = cd.ci_loc;
+  }
+
+and untype_class_type_declaration cd =
+  {
+    pci_virt = cd.ci_virt;
+    pci_params = cd.ci_params;
+    pci_name = cd.ci_id_name;
+    pci_expr = untype_class_type cd.ci_expr;
+    pci_variance = cd.ci_variance;
+    pci_loc = cd.ci_loc;
+  }
+
+and untype_module_type mty =
+  let desc = match mty.mty_desc with
+      Tmty_ident (path, lid) -> Pmty_ident (lid)
+    | Tmty_signature sg -> Pmty_signature (untype_signature sg)
+    | Tmty_functor (id, name, mtype1, mtype2) ->
+        Pmty_functor (name, untype_module_type mtype1,
+          untype_module_type mtype2)
+    | Tmty_with (mtype, list) ->
+        Pmty_with (untype_module_type mtype,
+          List.map (fun (path, lid, withc) ->
+              lid, untype_with_constraint withc
+          ) list)
+    | Tmty_typeof mexpr ->
+        Pmty_typeof (untype_module_expr mexpr)
+  in
+  {
+    pmty_desc = desc;
+    pmty_loc = mty.mty_loc;
+  }
+
+and untype_with_constraint cstr =
+  match cstr with
+    Twith_type decl -> Pwith_type (untype_type_declaration decl)
+  | Twith_module (path, lid) -> Pwith_module (lid)
+  | Twith_typesubst decl -> Pwith_typesubst (untype_type_declaration decl)
+  | Twith_modsubst (path, lid) -> Pwith_modsubst (lid)
+
+and untype_module_expr mexpr =
+  match mexpr.mod_desc with
+    Tmod_constraint (m, _, Tmodtype_implicit, _ ) ->
+      untype_module_expr m
+  | _ ->
+      let desc = match mexpr.mod_desc with
+          Tmod_ident (p, lid) -> Pmod_ident (lid)
+        | Tmod_structure st -> Pmod_structure (untype_structure st)
+        | Tmod_functor (id, name, mtype, mexpr) ->
+            Pmod_functor (name, untype_module_type mtype,
+              untype_module_expr mexpr)
+        | Tmod_apply (mexp1, mexp2, _) ->
+            Pmod_apply (untype_module_expr mexp1, untype_module_expr mexp2)
+        | Tmod_constraint (mexpr, _, Tmodtype_explicit mtype, _) ->
+            Pmod_constraint (untype_module_expr mexpr,
+              untype_module_type mtype)
+        | Tmod_constraint (mexpr, _, Tmodtype_implicit, _) ->
+            assert false
+        | Tmod_unpack (exp, pack) ->
+        Pmod_unpack (untype_expression exp)
+        (* TODO , untype_package_type pack) *)
+
+  in
+  {
+    pmod_desc = desc;
+    pmod_loc = mexpr.mod_loc;
+  }
+
+and untype_class_expr cexpr =
+  let desc = match cexpr.cl_desc with
+    | Tcl_constraint ( { cl_desc = Tcl_ident (path, lid, tyl) }, None, _, _, _ ) ->
+        Pcl_constr (lid,
+          List.map untype_core_type tyl)
+    | Tcl_structure clstr -> Pcl_structure (untype_class_structure clstr)
+
+    | Tcl_fun (label, pat, pv, cl, partial) ->
+        Pcl_fun (label, None, untype_pattern pat, untype_class_expr cl)
+
+    | Tcl_apply (cl, args) ->
+        Pcl_apply (untype_class_expr cl,
+          List.fold_right (fun (label, expo, _) list ->
+              match expo with
+                None -> list
+              | Some exp -> (label, untype_expression exp) :: list
+          ) args [])
+
+    | Tcl_let (rec_flat, bindings, ivars, cl) ->
+        Pcl_let (rec_flat,
+          List.map (fun (pat, exp) ->
+              (untype_pattern pat, untype_expression exp)) bindings,
+          untype_class_expr cl)
+
+    | Tcl_constraint (cl, Some clty, vals, meths, concrs) ->
+        Pcl_constraint (untype_class_expr cl,  untype_class_type clty)
+
+    | Tcl_ident _ -> assert false
+    | Tcl_constraint (_, None, _, _, _) -> assert false
+  in
+  { pcl_desc = desc;
+    pcl_loc = cexpr.cl_loc;
+  }
+
+and untype_class_type ct =
+  let desc = match ct.cltyp_desc with
+      Tcty_signature csg -> Pcty_signature (untype_class_signature csg)
+    | Tcty_constr (path, lid, list) ->
+        Pcty_constr (lid, List.map untype_core_type list)
+    | Tcty_fun (label, ct, cl) ->
+        Pcty_fun (label, untype_core_type ct, untype_class_type cl)
+  in
+  { pcty_desc = desc;
+    pcty_loc = ct.cltyp_loc }
+
+and untype_class_signature cs =
+  {
+    pcsig_self = untype_core_type cs.csig_self;
+    pcsig_fields = List.map untype_class_type_field cs.csig_fields;
+    pcsig_loc = cs.csig_loc;
+  }
+
+and untype_class_type_field ctf =
+  let desc = match ctf.ctf_desc with
+      Tctf_inher ct -> Pctf_inher (untype_class_type ct)
+    | Tctf_val (s, mut, virt, ct) ->
+        Pctf_val (s, mut, virt, untype_core_type ct)
+    | Tctf_virt  (s, priv, ct) ->
+        Pctf_virt (s, priv, untype_core_type ct)
+    | Tctf_meth  (s, priv, ct) ->
+        Pctf_meth  (s, priv, untype_core_type ct)
+    | Tctf_cstr  (ct1, ct2) ->
+        Pctf_cstr (untype_core_type ct1, untype_core_type ct2)
+  in
+  {
+    pctf_desc = desc;
+    pctf_loc = ctf.ctf_loc;
+  }
+
+and untype_core_type ct =
+  let desc = match ct.ctyp_desc with
+      Ttyp_any -> Ptyp_any
+    | Ttyp_var s -> Ptyp_var s
+    | Ttyp_arrow (label, ct1, ct2) ->
+        Ptyp_arrow (label, untype_core_type ct1, untype_core_type ct2)
+  | Ttyp_tuple list -> Ptyp_tuple (List.map untype_core_type list)
+    | Ttyp_constr (path, lid, list) ->
+        Ptyp_constr (lid,
+          List.map untype_core_type list)
+    | Ttyp_object list ->
+        Ptyp_object (List.map untype_core_field_type list)
+    | Ttyp_class (path, lid, list, labels) ->
+        Ptyp_class (lid,
+          List.map untype_core_type list, labels)
+    | Ttyp_alias (ct, s) ->
+        Ptyp_alias (untype_core_type ct, s)
+    | Ttyp_variant (list, bool, labels) ->
+        Ptyp_variant (List.map untype_row_field list, bool, labels)
+    | Ttyp_poly (list, ct) -> Ptyp_poly (list, untype_core_type ct)
+    | Ttyp_package pack -> Ptyp_package (untype_package_type pack)
+  in
+  { ptyp_desc = desc; ptyp_loc = ct.ctyp_loc }
+
+and untype_core_field_type cft =
+  { pfield_desc = (match cft.field_desc with
+        Tcfield_var -> Pfield_var
+      | Tcfield (s, ct) -> Pfield (s, untype_core_type ct));
+    pfield_loc = cft.field_loc; }
+
+and untype_class_structure cs =
+  { pcstr_pat = untype_pattern cs.cstr_pat;
+    pcstr_fields = List.map untype_class_field cs.cstr_fields;
+  }
+
+and untype_row_field rf =
+  match rf with
+    Ttag (label, bool, list) ->
+      Rtag (label, bool, List.map untype_core_type list)
+  | Tinherit ct -> Rinherit (untype_core_type ct)
+
+and untype_class_field cf =
+  let desc = match cf.cf_desc with
+      Tcf_inher (ovf, cl, super, _vals, _meths) ->
+        Pcf_inher (ovf, untype_class_expr cl, super)
+    | Tcf_constr (cty, cty') ->
+        Pcf_constr (untype_core_type cty, untype_core_type cty')
+    | Tcf_val (lab, name, mut, _, Tcfk_virtual cty, override) ->
+        Pcf_valvirt (name, mut, untype_core_type cty)
+    | Tcf_val (lab, name, mut, _, Tcfk_concrete exp, override) ->
+        Pcf_val (name, mut,
+          (if override then Override else Fresh),
+          untype_expression exp)
+    | Tcf_meth (lab, name, priv, Tcfk_virtual cty, override) ->
+        Pcf_virt (name, priv, untype_core_type cty)
+    | Tcf_meth (lab, name, priv, Tcfk_concrete exp, override) ->
+        Pcf_meth (name, priv,
+          (if override then Override else Fresh),
+          untype_expression exp)
+(*    | Tcf_let (rec_flag, bindings, _) ->
+        Pcf_let (rec_flag, List.map (fun (pat, exp) ->
+              untype_pattern pat, untype_expression exp) bindings)
+*)
+  | Tcf_init exp -> Pcf_init (untype_expression exp)
+  in
+  { pcf_desc = desc; pcf_loc = cf.cf_loc }
diff --git a/tools/untypeast.mli b/tools/untypeast.mli
new file mode 100644 (file)
index 0000000..0e08053
--- /dev/null
@@ -0,0 +1,16 @@
+(**************************************************************************)
+(*                                                                        *)
+(*                                OCaml                                   *)
+(*                                                                        *)
+(*      Thomas Gazagnaire (OCamlPro), Fabrice Le Fessant (INRIA Saclay)   *)
+(*                                                                        *)
+(*   Copyright 2007 Institut National de Recherche en Informatique et     *)
+(*   en Automatique.  All rights reserved.  This file is distributed      *)
+(*   under the terms of the Q Public License version 1.0.                 *)
+(*                                                                        *)
+(**************************************************************************)
+
+val untype_structure : Typedtree.structure -> Parsetree.structure
+val untype_signature : Typedtree.signature -> Parsetree.signature
+
+val lident_of_path : Path.t -> Longident.t
index 9cdcbf89e1f7709a097eac7f127abcde2443995f..3fd0897be5fbcd21dce59ea3ec0f619ec54b5662 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: expunge.ml 12061 2012-01-20 15:43:29Z frisch $ *)
 
 (* "Expunge" a toplevel by removing compiler modules from the global List.map.
    Usage: expunge <source file> <dest file> <names of modules to keep> *)
index 2bf72f19c1941a9163160c682cc67a6fa87c396e..4eaa1495cf73819823ad2733a1f412bb5a775ee1 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: genprintval.ml 12511 2012-05-30 13:29:48Z lefessan $ *)
 
 (* To print values *)
 
@@ -156,10 +156,10 @@ module Make(O : OBJ)(EVP : EVALPATH with type value = O.t) = struct
 
     let tree_of_constr =
       tree_of_qualified
-        (fun lid env -> (Env.lookup_constructor lid env).cstr_res)
+        (fun lid env -> (snd (Env.lookup_constructor lid env)).cstr_res)
 
     and tree_of_label =
-      tree_of_qualified (fun lid env -> (Env.lookup_label lid env).lbl_res)
+      tree_of_qualified (fun lid env -> (snd (Env.lookup_label lid env)).lbl_res)
 
     (* An abstract type *)
 
@@ -249,10 +249,10 @@ module Make(O : OBJ)(EVP : EVALPATH with type value = O.t) = struct
                       else Cstr_constant(O.obj obj) in
                     let (constr_name, constr_args,ret_type) =
                       Datarepr.find_constr_by_tag tag constr_list in
-                   let type_params = 
+                   let type_params =
                      match ret_type with
-                       Some t -> 
-                         begin match (Ctype.repr t).desc with 
+                       Some t ->
+                         begin match (Ctype.repr t).desc with
                            Tconstr (_,params,_) ->
                              params
                          | _ -> assert false end
@@ -265,7 +265,7 @@ module Make(O : OBJ)(EVP : EVALPATH with type value = O.t) = struct
                              Ctype.Cannot_apply -> abstract_type)
                         constr_args in
                     tree_of_constr_with_args (tree_of_constr env path)
-                                           constr_name 0 depth obj ty_args                 
+                                 (Ident.name constr_name) 0 depth obj ty_args
                 | {type_kind = Type_record(lbl_list, rep)} ->
                     begin match check_depth depth obj ty with
                       Some x -> x
@@ -279,7 +279,7 @@ module Make(O : OBJ)(EVP : EVALPATH with type value = O.t) = struct
                                     ty_list
                                 with
                                   Ctype.Cannot_apply -> abstract_type in
-                              let lid = tree_of_label env path lbl_name in
+                              let lid = tree_of_label env path (Ident.name lbl_name) in
                               let v =
                                 tree_of_val (depth - 1) (O.field obj pos)
                                   ty_arg
@@ -351,7 +351,7 @@ module Make(O : OBJ)(EVP : EVALPATH with type value = O.t) = struct
       try
         (* Attempt to recover the constructor description for the exn
            from its name *)
-        let cstr = Env.lookup_constructor lid env in
+        let cstr = snd (Env.lookup_constructor lid env) in
         let path =
           match cstr.cstr_tag with
             Cstr_exception (p, _) -> p | _ -> raise Not_found in
index 6522cccdb0a5a51aeebbce3c1c09332f4cc36744..bd45764ede21f9caabd9e5e1493de73d7fd63932 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: genprintval.mli 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (* Printing of values *)
 
index 8655ef96b0f9e56e80ddf1bb8026167cac47cf8c..d4add39bb3536349c0bfc98d95e72cf4f03717f7 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: opttopdirs.ml 12058 2012-01-20 14:23:34Z frisch $ *)
 
 (* Toplevel directives *)
 
index 9a8573e57df816e8093e5b673ec4a267794ccac4..352627f67428db9765b0eb77b423fa7ad71c037c 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: opttopdirs.mli 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (* The toplevel directives. *)
 
index 8d83908d009b6521986d33bd631d207b69880ec4..9bce61f727ceadb8a78a9c364394d0c9a9ad660a 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: opttoploop.ml 12085 2012-01-27 12:48:15Z doligez $ *)
 
 (* The interactive toplevel loop *)
 
index cdd32de121350b7f85c2f57c34da283eba2f0345..d003f207ff4dbbc45a1dbaa439900be9bbfdf7bf 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: opttoploop.mli 11156 2011-07-27 14:17:02Z doligez $ *)
 
 open Format
 
index ac32a5c1081c2760c6083a457a4942e291f63278..f5dfa2452c7b0148099d8ceba89457e6b07e977a 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: opttopmain.ml 12085 2012-01-27 12:48:15Z doligez $ *)
 
 open Clflags
 
index 61747d892fbb8a081ab0a7ccaf52363025d61d5f..d5797b212b78593f7fe200eacb86246a2565f4d6 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: opttopmain.mli 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (* Start the [ocaml] toplevel loop *)
 
index db279940ecee6d78590acd87aeb5e2e58099c8d9..252b3d2292835d59965b5114e9cca86331d878af 100644 (file)
@@ -10,6 +10,6 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: opttopstart.ml 11156 2011-07-27 14:17:02Z doligez $ *)
 
 let _ = Opttopmain.main()
index bca4709829963cd839c381e701085d5d254c3daf..0af7a2c96f3eb164aaee3210dea531e388da004e 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: topdirs.ml 12184 2012-02-23 19:54:44Z doligez $ *)
 
 (* Toplevel directives *)
 
index 11aa9b851bb7778b398d0e7fd25bda829fc67d60..f831bc0887d632168e1abf2ae50452cf8c3df764 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: topdirs.mli 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (* The toplevel directives. *)
 
index eb459a906d97bb7104dfe4d5be06b04469537b0a..886d1d2c82ffddf256c7b16a1f2ad066ab965c1d 100644 (file)
@@ -4,9 +4,11 @@ Misc Tbl Config Clflags Terminfo Ccomp Warnings Consistbl
 Location Longident Syntaxerr Parser
 Lexer Parse Printast
 
-Unused_var Ident Path Primitive Types
-Btype Oprint Subst Predef Datarepr Env
-Typedtree Ctype Printtyp Includeclass Mtype Includecore
+Ident Path Primitive Types
+Btype Oprint Subst Predef Datarepr
+Cmi_format Env
+Typedtree
+Cmt_format Ctype Printtyp Includeclass Mtype Includecore
 Includemod Parmatch Typetexp Stypes Typecore
 Typedecl Typeclass Typemod
 
index 6a83bcc9cf86d568b3400667b1dd6350845a04fd..90e8dab3919b0b24018169da5bb244ca51c2dc9c 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: toploop.ml 12542 2012-06-01 14:06:31Z frisch $ *)
 
 (* The interactive toplevel loop *)
 
@@ -150,7 +150,7 @@ let load_lambda ppf lam =
 (* Print the outcome of an evaluation *)
 
 let rec pr_item env = function
-  | Tsig_value(id, decl) :: rem ->
+  | Sig_value(id, decl) :: rem ->
       let tree = Printtyp.tree_of_value_description id decl in
       let valopt =
         match decl.val_kind with
@@ -163,24 +163,24 @@ let rec pr_item env = function
             Some v
       in
       Some (tree, valopt, rem)
-  | Tsig_type(id, _, _) :: rem when Btype.is_row_name (Ident.name id) ->
+  | Sig_type(id, _, _) :: rem when Btype.is_row_name (Ident.name id) ->
       pr_item env rem
-  | Tsig_type(id, decl, rs) :: rem ->
+  | Sig_type(id, decl, rs) :: rem ->
       let tree = Printtyp.tree_of_type_declaration id decl rs in
       Some (tree, None, rem)
-  | Tsig_exception(id, decl) :: rem ->
+  | Sig_exception(id, decl) :: rem ->
       let tree = Printtyp.tree_of_exception_declaration id decl in
       Some (tree, None, rem)
-  | Tsig_module(id, mty, rs) :: rem ->
+  | Sig_module(id, mty, rs) :: rem ->
       let tree = Printtyp.tree_of_module id mty rs in
       Some (tree, None, rem)
-  | Tsig_modtype(id, decl) :: rem ->
+  | Sig_modtype(id, decl) :: rem ->
       let tree = Printtyp.tree_of_modtype_declaration id decl in
       Some (tree, None, rem)
-  | Tsig_class(id, decl, rs) :: cltydecl :: tydecl1 :: tydecl2 :: rem ->
+  | Sig_class(id, decl, rs) :: cltydecl :: tydecl1 :: tydecl2 :: rem ->
       let tree = Printtyp.tree_of_class_declaration id decl rs in
       Some (tree, None, rem)
-  | Tsig_cltype(id, decl, rs) :: tydecl1 :: tydecl2 :: rem ->
+  | Sig_class_type(id, decl, rs) :: tydecl1 :: tydecl2 :: rem ->
       let tree = Printtyp.tree_of_cltype_declaration id decl rs in
       Some (tree, None, rem)
   | _ -> None
@@ -218,8 +218,9 @@ let execute_phrase print_outcome ppf phr =
   | Ptop_def sstr ->
       let oldenv = !toplevel_env in
       Typecore.reset_delayed_checks ();
-      let (str, sg, newenv) = Typemod.type_structure oldenv sstr Location.none
-      in
+      let (str, sg, newenv) = Typemod.type_toplevel_phrase oldenv sstr in
+      let sg' = Typemod.simplify_signature sg in
+      ignore (Includemod.signatures oldenv sg sg');
       Typecore.force_delayed_checks ();
       let lam = Translmod.transl_toplevel_definition str in
       Warnings.check_fatal ();
@@ -230,14 +231,13 @@ let execute_phrase print_outcome ppf phr =
           match res with
           | Result v ->
               if print_outcome then
-                match str with
-                | [Tstr_eval exp] ->
+                match str.str_items with
+                | [ { str_desc = Tstr_eval exp }] ->
                     let outv = outval_of_value newenv v exp.exp_type in
                     let ty = Printtyp.tree_of_type_scheme exp.exp_type in
                     Ophr_eval (outv, ty)
                 | [] -> Ophr_signature []
-                | _ -> Ophr_signature (item_list newenv
-                                             (Typemod.simplify_signature sg))
+                | _ -> Ophr_signature (item_list newenv sg')
               else Ophr_signature []
           | Exception exn ->
               toplevel_env := oldenv;
index e9afb5a0dfefc95d2201503a8984e2de5c3cfa6a..3b251c883cf500a599ee780ff3052678e5eecfbf 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: toploop.mli 11156 2011-07-27 14:17:02Z doligez $ *)
 
 open Format
 
index 27b2ca2876eeb5d3110281c964131f2f0ee8861f..38dc75cae4532a64c0d6e03e8a66d3e07a0f20ee 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: topmain.ml 12085 2012-01-27 12:48:15Z doligez $ *)
 
 open Clflags
 
index 61747d892fbb8a081ab0a7ccaf52363025d61d5f..16e0a91bf8bfe7888c081d1df92a925e03b60dd4 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: topmain.mli 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (* Start the [ocaml] toplevel loop *)
 
index 823b4c813a9f3e4dc0b1f74bd232e43af096d977..c0ce2874cd48d4141ebbbc0d94880533ae6386ab 100644 (file)
@@ -10,6 +10,6 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: topstart.ml 11156 2011-07-27 14:17:02Z doligez $ *)
 
 let _ = Topmain.main()
index 104f39fe4bb109e82008c08811a3bba73eacdb89..9dd9bf27dfbf32a83becfed807cd9f81d8bfd65b 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: trace.ml 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (* The "trace" facility *)
 
index 0675dd1bf6c61c1a5d972294b3678a7361117c05..d8f84d63d2843cb02259391149e78edfe5f847f9 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: trace.mli 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (* The "trace" facility *)
 
index 934438194eda108cddf6d01842321d5e38aa968d..ebd242e8b90e38d7e1348ad70bba4f78bba122e1 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: annot.mli 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (* Data types for annotations (Stypes.ml) *)
 
index c9bdbf04d454c0811081be53ae46c4a7c47fa94e..72f3e6c1fad30e64817b4fe7ecd7e6165bb8fabe 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: btype.ml 12534 2012-06-01 05:24:38Z garrigue $ *)
 
 (* Basic operations on core types *)
 
@@ -57,6 +57,8 @@ let newmarkedgenvar () =
 let is_Tvar = function {desc=Tvar _} -> true | _ -> false
 let is_Tunivar = function {desc=Tunivar _} -> true | _ -> false
 
+let dummy_method = "*dummy method*"
+
 (**** Representative of a type ****)
 
 let rec field_kind_repr =
@@ -255,8 +257,8 @@ let rec norm_univar ty =
   | Ttuple (ty :: _)   -> norm_univar ty
   | _                  -> assert false
 
-let rec copy_type_desc f = function
-    Tvar _              -> Tvar None (* forget the name *)
+let rec copy_type_desc ?(keep_names=false) f = function
+    Tvar _ as ty        -> if keep_names then ty else Tvar None
   | Tarrow (p, ty1, ty2, c)-> Tarrow (p, f ty1, f ty2, copy_commu c)
   | Ttuple l            -> Ttuple (List.map f l)
   | Tconstr (p, l, _)   -> Tconstr (p, List.map f l, ref Mnil)
@@ -269,7 +271,7 @@ let rec copy_type_desc f = function
   | Tnil                -> Tnil
   | Tlink ty            -> copy_type_desc f ty.desc
   | Tsubst ty           -> assert false
-  | Tunivar _ as ty     -> ty (* keep the name *)
+  | Tunivar _ as ty     -> ty (* always keep the name *)
   | Tpoly (ty, tyl)     ->
       let tyl = List.map (fun x -> norm_univar (f x)) tyl in
       Tpoly (f ty, tyl)
@@ -349,11 +351,11 @@ let unmark_class_signature sign =
 
 let rec unmark_class_type =
   function
-    Tcty_constr (p, tyl, cty) ->
+    Cty_constr (p, tyl, cty) ->
       List.iter unmark_type tyl; unmark_class_type cty
-  | Tcty_signature sign ->
+  | Cty_signature sign ->
       unmark_class_signature sign
-  | Tcty_fun (_, ty, cty) ->
+  | Cty_fun (_, ty, cty) ->
       unmark_type ty; unmark_class_type cty
 
 
index e2e4c9d6db1a4ebb8c81409985508c84f568b9eb..53d56036ae0e0354c43bbe261699d6edee82378e 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: btype.mli 12534 2012-06-01 05:24:38Z garrigue $ *)
 
 (* Basic operations on core types *)
 
@@ -43,6 +43,7 @@ val newmarkedgenvar: unit -> type_expr
 
 val is_Tvar: type_expr -> bool
 val is_Tunivar: type_expr -> bool
+val dummy_method: label
 
 val repr: type_expr -> type_expr
         (* Return the canonical representative of a type. *)
@@ -85,7 +86,8 @@ val iter_row: (type_expr -> unit) -> row_desc -> unit
 val iter_abbrev: (type_expr -> unit) -> abbrev_memo -> unit
         (* Iteration on types in an abbreviation list *)
 
-val copy_type_desc: (type_expr -> type_expr) -> type_desc -> type_desc
+val copy_type_desc:
+    ?keep_names:bool -> (type_expr -> type_expr) -> type_desc -> type_desc
         (* Copy on types *)
 val copy_row:
     (type_expr -> type_expr) ->
diff --git a/typing/cmi_format.ml b/typing/cmi_format.ml
new file mode 100644 (file)
index 0000000..d40b197
--- /dev/null
@@ -0,0 +1,93 @@
+(***********************************************************************)
+(*                                                                     *)
+(*                                OCaml                                *)
+(*                                                                     *)
+(*                  Fabrice Le Fessant, INRIA Saclay                   *)
+(*                                                                     *)
+(*  Copyright 2012 Institut National de Recherche en Informatique et   *)
+(*  en Automatique.  All rights reserved.  This file is distributed    *)
+(*  under the terms of the Q Public License version 1.0.               *)
+(*                                                                     *)
+(***********************************************************************)
+
+type pers_flags = Rectypes
+
+type error =
+    Not_an_interface of string
+  | Wrong_version_interface of string * string
+  | Corrupted_interface of string
+
+exception Error of error
+
+type cmi_infos = {
+    cmi_name : string;
+    cmi_sign : Types.signature_item list;
+    cmi_crcs : (string * Digest.t) list;
+    cmi_flags : pers_flags list;
+}
+
+let input_cmi ic =
+  let (name, sign) = input_value ic in
+  let crcs = input_value ic in
+  let flags = input_value ic in
+  {
+      cmi_name = name;
+      cmi_sign = sign;
+      cmi_crcs = crcs;
+      cmi_flags = flags;
+    }
+
+let read_cmi filename =
+  let ic = open_in_bin filename in
+  try
+    let buffer = Misc.input_bytes ic (String.length Config.cmi_magic_number) in
+    if buffer <> Config.cmi_magic_number then begin
+      close_in ic;
+      let pre_len = String.length Config.cmi_magic_number - 3 in
+      if String.sub buffer 0 pre_len
+          = String.sub Config.cmi_magic_number 0 pre_len then
+      begin
+        let msg =
+          if buffer < Config.cmi_magic_number then "an older" else "a newer" in
+        raise (Error (Wrong_version_interface (filename, msg)))
+      end else begin
+        raise(Error(Not_an_interface filename))
+      end
+    end;
+    let cmi = input_cmi ic in
+    close_in ic;
+    cmi
+  with End_of_file | Failure _ ->
+      close_in ic;
+      raise(Error(Corrupted_interface(filename)))
+    | Error e ->
+      close_in ic;
+      raise (Error e)
+
+let output_cmi filename oc cmi =
+(* beware: the provided signature must have been substituted for saving *)
+  output_string oc Config.cmi_magic_number;
+  output_value oc (cmi.cmi_name, cmi.cmi_sign);
+  flush oc;
+  let crc = Digest.file filename in
+  let crcs = (cmi.cmi_name, crc) :: cmi.cmi_crcs in
+  output_value oc crcs;
+  output_value oc cmi.cmi_flags;
+  crc
+
+(* Error report *)
+
+open Format
+
+let report_error ppf = function
+  | Not_an_interface filename ->
+      fprintf ppf "%a@ is not a compiled interface"
+        Location.print_filename filename
+  | Wrong_version_interface (filename, older_newer) ->
+      fprintf ppf
+        "%a@ is not a compiled interface for this version of OCaml.@.\
+         It seems to be for %s version of OCaml."
+        Location.print_filename filename older_newer
+  | Corrupted_interface filename ->
+      fprintf ppf "Corrupted compiled interface@ %a"
+        Location.print_filename filename
diff --git a/typing/cmi_format.mli b/typing/cmi_format.mli
new file mode 100644 (file)
index 0000000..2d6fdec
--- /dev/null
@@ -0,0 +1,42 @@
+(***********************************************************************)
+(*                                                                     *)
+(*                                OCaml                                *)
+(*                                                                     *)
+(*                  Fabrice Le Fessant, INRIA Saclay                   *)
+(*                                                                     *)
+(*  Copyright 2012 Institut National de Recherche en Informatique et   *)
+(*  en Automatique.  All rights reserved.  This file is distributed    *)
+(*  under the terms of the Q Public License version 1.0.               *)
+(*                                                                     *)
+(***********************************************************************)
+
+type pers_flags = Rectypes
+
+type cmi_infos = {
+    cmi_name : string;
+    cmi_sign : Types.signature_item list;
+    cmi_crcs : (string * Digest.t) list;
+    cmi_flags : pers_flags list;
+}
+
+(* write the magic + the cmi information *)
+val output_cmi : string -> out_channel -> cmi_infos -> Digest.t
+
+(* read the cmi information (the magic is supposed to have already been read) *)
+val input_cmi : in_channel -> cmi_infos
+
+(* read a cmi from a filename, checking the magic *)
+val read_cmi : string -> cmi_infos
+
+(* Error report *)
+
+type error =
+    Not_an_interface of string
+  | Wrong_version_interface of string * string
+  | Corrupted_interface of string
+
+exception Error of error
+
+open Format
+
+val report_error: formatter -> error -> unit
diff --git a/typing/cmt_format.ml b/typing/cmt_format.ml
new file mode 100644 (file)
index 0000000..04545a8
--- /dev/null
@@ -0,0 +1,156 @@
+(***********************************************************************)
+(*                                                                     *)
+(*                                OCaml                                *)
+(*                                                                     *)
+(*                  Fabrice Le Fessant, INRIA Saclay                   *)
+(*                                                                     *)
+(*  Copyright 2012 Institut National de Recherche en Informatique et   *)
+(*  en Automatique.  All rights reserved.  This file is distributed    *)
+(*  under the terms of the Q Public License version 1.0.               *)
+(*                                                                     *)
+(***********************************************************************)
+
+open Cmi_format
+open Typedtree
+
+(* Note that in Typerex, there is an awful hack to save a cmt file
+   together with the interface file that was generated by ocaml (this
+   is because the installed version of ocaml might differ from the one
+   integrated in Typerex).
+*)
+
+let read_magic_number ic =
+  let len_magic_number = String.length Config.cmt_magic_number in
+  let magic_number = String.create len_magic_number in
+  really_input ic magic_number 0 len_magic_number;
+  magic_number
+
+type binary_annots =
+  | Packed of Types.signature * string list
+  | Implementation of structure
+  | Interface of signature
+  | Partial_implementation of binary_part array
+  | Partial_interface of binary_part array
+
+and binary_part =
+| Partial_structure of structure
+| Partial_structure_item of structure_item
+| Partial_expression of expression
+| Partial_pattern of pattern
+| Partial_class_expr of class_expr
+| Partial_signature of signature
+| Partial_signature_item of signature_item
+| Partial_module_type of module_type
+
+type cmt_infos = {
+  cmt_modname : string;
+  cmt_annots : binary_annots;
+  cmt_comments : (string * Location.t) list;
+  cmt_args : string array;
+  cmt_sourcefile : string option;
+  cmt_builddir : string;
+  cmt_loadpath : string list;
+  cmt_source_digest : Digest.t option;
+  cmt_initial_env : Env.t;
+  cmt_imports : (string * Digest.t) list;
+  cmt_interface_digest : Digest.t option;
+}
+
+type error =
+    Not_a_typedtree of string
+
+exception Error of error
+
+let input_cmt ic = (input_value ic : cmt_infos)
+
+let output_cmt oc cmt =
+  output_string oc Config.cmt_magic_number;
+  output_value oc (cmt : cmt_infos)
+
+let read filename =
+(*  Printf.fprintf stderr "Cmt_format.read %s\n%!" filename; *)
+  let ic = open_in filename in
+  try
+    let magic_number = read_magic_number ic in
+    let cmi, cmt =
+      if magic_number = Config.cmt_magic_number then
+        None, Some (input_cmt ic)
+      else if magic_number = Config.cmi_magic_number then
+        let cmi = Cmi_format.input_cmi ic in
+        let cmt = try
+                    let magic_number = read_magic_number ic in
+                    if magic_number = Config.cmt_magic_number then
+                      let cmt = input_cmt ic in
+                      Some cmt
+                    else None
+          with _ -> None
+        in
+        Some cmi, cmt
+      else
+        raise(Cmi_format.Error(Cmi_format.Not_an_interface filename))
+    in
+    close_in ic;
+(*    Printf.fprintf stderr "Cmt_format.read done\n%!"; *)
+    cmi, cmt
+  with e ->
+    close_in ic;
+    raise e
+
+let string_of_file filename =
+  let ic = open_in filename in
+  let s = Misc.string_of_file ic in
+  close_in ic;
+  s
+
+let read_cmt filename =
+  match read filename with
+      _, None -> raise (Error (Not_a_typedtree filename))
+    | _, Some cmt -> cmt
+
+let read_cmi filename =
+  match read filename with
+      None, _ -> raise (Cmi_format.Error (Cmi_format.Not_an_interface filename))
+    | Some cmi, _ -> cmi
+
+let saved_types = ref []
+
+let add_saved_type b = saved_types := b :: !saved_types
+let get_saved_types () = !saved_types
+let set_saved_types l = saved_types := l
+
+let save_cmt filename modname binary_annots sourcefile initial_env sg =
+  if !Clflags.binary_annotations && not !Clflags.print_types then begin
+    let imports = Env.imported_units () in
+    let oc = open_out filename in
+    let this_crc =
+      match sg with
+          None -> None
+        | Some (sg) ->
+          let cmi = {
+            cmi_name = modname;
+            cmi_sign = sg;
+            cmi_flags =
+            if !Clflags.recursive_types then [Cmi_format.Rectypes] else [];
+            cmi_crcs = imports;
+          } in
+          Some (output_cmi filename oc cmi)
+    in
+    let source_digest = Misc.may_map Digest.file sourcefile in
+    let cmt = {
+      cmt_modname = modname;
+      cmt_annots = binary_annots;
+      cmt_comments = Lexer.comments ();
+      cmt_args = Sys.argv;
+      cmt_sourcefile = sourcefile;
+      cmt_builddir =  Sys.getcwd ();
+      cmt_loadpath = !Config.load_path;
+      cmt_source_digest = source_digest;
+      cmt_initial_env = initial_env;
+      cmt_imports = List.sort compare imports;
+      cmt_interface_digest = this_crc;
+    } in
+    output_cmt oc cmt;
+    close_out oc;
+    set_saved_types [];
+  end;
+  set_saved_types  []
diff --git a/typing/cmt_format.mli b/typing/cmt_format.mli
new file mode 100644 (file)
index 0000000..ab49d0d
--- /dev/null
@@ -0,0 +1,111 @@
+(***********************************************************************)
+(*                                                                     *)
+(*                                OCaml                                *)
+(*                                                                     *)
+(*                  Fabrice Le Fessant, INRIA Saclay                   *)
+(*                                                                     *)
+(*  Copyright 2012 Institut National de Recherche en Informatique et   *)
+(*  en Automatique.  All rights reserved.  This file is distributed    *)
+(*  under the terms of the Q Public License version 1.0.               *)
+(*                                                                     *)
+(***********************************************************************)
+
+(** cmt and cmti files format. *)
+
+(** The layout of a cmt file is as follows:
+      <cmt> := \{<cmi>\} <cmt magic> \{cmt infos\} \{<source info>\}
+    where <cmi> is the cmi file format:
+      <cmi> := <cmi magic> <cmi info>.
+    More precisely, the optional <cmi> part must be present if and only if
+    the file is:
+    - a cmti, or
+    - a cmt, for a ml file which has no corresponding mli (hence no
+    corresponding cmti).
+
+    Thus, we provide a common reading function for cmi and cmt(i)
+    files which returns an option for each of the three parts: cmi
+    info, cmt info, source info. *)
+
+open Typedtree
+
+type binary_annots =
+  | Packed of Types.signature * string list
+  | Implementation of structure
+  | Interface of signature
+  | Partial_implementation of binary_part array
+  | Partial_interface of binary_part array
+
+and binary_part =
+  | Partial_structure of structure
+  | Partial_structure_item of structure_item
+  | Partial_expression of expression
+  | Partial_pattern of pattern
+  | Partial_class_expr of class_expr
+  | Partial_signature of signature
+  | Partial_signature_item of signature_item
+  | Partial_module_type of module_type
+
+type cmt_infos = {
+  cmt_modname : string;
+  cmt_annots : binary_annots;
+  cmt_comments : (string * Location.t) list;
+  cmt_args : string array;
+  cmt_sourcefile : string option;
+  cmt_builddir : string;
+  cmt_loadpath : string list;
+  cmt_source_digest : string option;
+  cmt_initial_env : Env.t;
+  cmt_imports : (string * Digest.t) list;
+  cmt_interface_digest : Digest.t option;
+}
+
+type error =
+    Not_a_typedtree of string
+
+exception Error of error
+
+(** [read filename] opens filename, and extract both the cmi_infos, if
+    it exists, and the cmt_infos, if it exists. Thus, it can be used
+    with .cmi, .cmt and .cmti files.
+
+    .cmti files always contain a cmi_infos at the beginning. .cmt files
+    only contain a cmi_infos at the beginning if there is no associated
+    .cmti file.
+*)
+val read : string -> Cmi_format.cmi_infos option * cmt_infos option
+
+val read_cmt : string -> cmt_infos
+val read_cmi : string -> Cmi_format.cmi_infos
+
+(** [save_cmt modname filename binary_annots sourcefile initial_env sg]
+    writes a cmt(i) file.  *)
+val save_cmt :
+  string ->  (* filename.cmt to generate *)
+  string ->  (* module name *)
+  binary_annots ->
+  string option ->  (* source file *)
+  Env.t -> (* initial env *)
+  Types.signature option -> (* if a .cmi was generated,
+                               the signature saved there *)
+  unit
+
+(* Miscellaneous functions *)
+
+val read_magic_number : in_channel -> string
+
+val add_saved_type : binary_part -> unit
+val get_saved_types : unit -> binary_part list
+val set_saved_types : binary_part list -> unit
+
+
+(*
+
+  val is_magic_number : string -> bool
+  val read : in_channel -> Env.cmi_infos option * t
+  val write_magic_number : out_channel -> unit
+  val write : out_channel -> t -> unit
+
+  val find : string list -> string -> string
+  val read_signature : 'a -> string -> Types.signature * 'b list * 'c list
+
+*)
index 86d744ac99b89f6c758a20440c7f40fbc240018a..ac984c4671ff0d03a40e21b89e20011db4ef7d3c 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: ctype.ml 12534 2012-06-01 05:24:38Z garrigue $ *)
 
 (* Operations on core types *)
 
@@ -189,14 +189,14 @@ module TypePairs =
 
 (**** unification mode ****)
 
-type unification_mode = 
+type unification_mode =
   | Expression (* unification in expression *)
   | Pattern (* unification in pattern which may add local constraints *)
 
 let umode = ref Expression
 let generate_equations = ref false
 
-let set_mode mode ?(generate = (mode = Pattern)) f = 
+let set_mode mode ?(generate = (mode = Pattern)) f =
   let old_unification_mode = !umode
   and old_gen = !generate_equations in
   try
@@ -218,10 +218,10 @@ let in_current_module = function
   | Path.Pident _ -> true
   | Path.Pdot _ | Path.Papply _ -> false
 
-let in_pervasives p = 
+let in_pervasives p =
     try ignore (Env.find_type p Env.initial); true
     with Not_found -> false
-        
+
 let is_datatype decl=
   match decl.type_kind with
     Type_record _ | Type_variant _ -> true
@@ -240,8 +240,6 @@ let is_datatype decl=
 
 (**** Object field manipulation. ****)
 
-let dummy_method = "*dummy method*"
-
 let object_fields ty =
   match (repr ty).desc with
     Tobject (fields, _) -> fields
@@ -368,18 +366,18 @@ let hide_private_methods ty =
 
 let rec signature_of_class_type =
   function
-    Tcty_constr (_, _, cty) -> signature_of_class_type cty
-  | Tcty_signature sign     -> sign
-  | Tcty_fun (_, ty, cty)   -> signature_of_class_type cty
+    Cty_constr (_, _, cty) -> signature_of_class_type cty
+  | Cty_signature sign     -> sign
+  | Cty_fun (_, ty, cty)   -> signature_of_class_type cty
 
 let self_type cty =
   repr (signature_of_class_type cty).cty_self
 
 let rec class_type_arity =
   function
-    Tcty_constr (_, _, cty) ->  class_type_arity cty
-  | Tcty_signature _        ->  0
-  | Tcty_fun (_, _, cty)    ->  1 + class_type_arity cty
+    Cty_constr (_, _, cty) ->  class_type_arity cty
+  | Cty_signature _        ->  0
+  | Cty_fun (_, _, cty)    ->  1 + class_type_arity cty
 
 
                   (*******************************************)
@@ -521,13 +519,13 @@ let closed_type_decl decl =
       Type_abstract ->
         ()
     | Type_variant v ->
-        List.iter 
+        List.iter
           (fun (_, tyl,ret_type_opt) ->
             match ret_type_opt with
             | Some _ -> ()
             | None ->
                 List.iter closed_type tyl)
-          v 
+          v
     | Type_record(r, rep) ->
         List.iter (fun (_, _, ty) -> closed_type ty) r
     end;
@@ -687,13 +685,13 @@ let forward_try_expand_once = (* Forward declaration *)
       module M = struct type t let _ = (x : t list ref) end
     (without this constraint, the type system would actually be unsound.)
 *)
-let get_level env p = 
+let get_level env p =
   try
     match (Env.find_type p env).type_newtype_level with
       | None -> Path.binding_time p
       | Some (x, _) -> x
-  with 
-    | _ -> 
+  with
+    | Not_found ->
       (* no newtypes in predef *)
       Path.binding_time p
 
@@ -734,7 +732,8 @@ let rec update_level env level ty =
         end;
         set_level ty level;
         iter_type_expr (update_level env level) ty
-    | Tfield(lab, _, _, _) when lab = dummy_method ->
+    | Tfield(lab, _, ty1, _)
+      when lab = dummy_method && (repr ty1).level > level->
         raise (Unify [(ty, newvar2 level)])
     | _ ->
         set_level ty level;
@@ -907,8 +906,8 @@ let abbreviations = ref (ref Mnil)
 
 (* partial: we may not wish to copy the non generic types
    before we call type_pat *)
-let rec copy ?env ?partial ty =
-  let copy = copy ?env ?partial in
+let rec copy ?env ?partial ?keep_names ty =
+  let copy = copy ?env ?partial ?keep_names in
   let ty = repr ty in
   match ty.desc with
     Tsubst ty -> ty
@@ -999,7 +998,7 @@ let rec copy ?env ?partial ty =
           end
       | Tobject (ty1, _) when partial <> None ->
           Tobject (copy ty1, ref None)
-      | _ -> copy_type_desc copy desc
+      | _ -> copy_type_desc ?keep_names copy desc
       end;
     t
 
@@ -1024,7 +1023,7 @@ let instance ?partial env sch =
 let instance_def sch =
   let ty = copy sch in
   cleanup_types ();
-  ty  
+  ty
 
 let instance_list env schl =
   let env = gadt_env env in
@@ -1033,9 +1032,9 @@ let instance_list env schl =
   tyl
 
 let reified_var_counter = ref Vars.empty
-    
-(* names given to new type constructors. 
-   Used for existential types and 
+
+(* names given to new type constructors.
+   Used for existential types and
    local constraints *)
 let get_new_abstract_name s =
   let index =
@@ -1044,7 +1043,7 @@ let get_new_abstract_name s =
   reified_var_counter := Vars.add s index !reified_var_counter;
   Printf.sprintf "%s#%d" s index
 
-let new_declaration newtype manifest = 
+let new_declaration newtype manifest =
   {
     type_params = [];
     type_arity = 0;
@@ -1062,7 +1061,7 @@ let instance_constructor ?in_pattern cstr =
   begin match in_pattern with
   | None -> ()
   | Some (env, newtype_lev) ->
-      let process existential = 
+      let process existential =
         let decl = new_declaration (Some (newtype_lev, newtype_lev)) None in
         let name =
           match repr existential with
@@ -1072,16 +1071,16 @@ let instance_constructor ?in_pattern cstr =
         let (id, new_env) =
           Env.enter_type (get_new_abstract_name name) decl !env in
         env := new_env;
-        let to_unify = newty (Tconstr (Path.Pident id,[],ref Mnil)) in 
-        link_type (copy existential) to_unify 
+        let to_unify = newty (Tconstr (Path.Pident id,[],ref Mnil)) in
+        link_type (copy existential) to_unify
       in
       List.iter process cstr.cstr_existentials
   end;
   cleanup_types ();
   (ty_args, ty_res)
 
-let instance_parameterized_type sch_args sch =
-  let ty_args = List.map copy sch_args in
+let instance_parameterized_type ?keep_names sch_args sch =
+  let ty_args = List.map (copy ?keep_names) sch_args in
   let ty = copy sch in
   cleanup_types ();
   (ty_args, ty)
@@ -1112,18 +1111,18 @@ let instance_declaration decl =
 let instance_class params cty =
   let rec copy_class_type =
     function
-      Tcty_constr (path, tyl, cty) ->
-        Tcty_constr (path, List.map copy tyl, copy_class_type cty)
-    | Tcty_signature sign ->
-        Tcty_signature
+      Cty_constr (path, tyl, cty) ->
+        Cty_constr (path, List.map copy tyl, copy_class_type cty)
+    | Cty_signature sign ->
+        Cty_signature
           {cty_self = copy sign.cty_self;
            cty_vars =
              Vars.map (function (m, v, ty) -> (m, v, copy ty)) sign.cty_vars;
            cty_concr = sign.cty_concr;
            cty_inher =
              List.map (fun (p,tl) -> (p, List.map copy tl)) sign.cty_inher}
-    | Tcty_fun (l, ty, cty) ->
-        Tcty_fun (l, copy ty, copy_class_type cty)
+    | Cty_fun (l, ty, cty) ->
+        Cty_fun (l, copy ty, copy_class_type cty)
   in
   let params' = List.map copy params in
   let cty' = copy_class_type cty in
@@ -1350,7 +1349,7 @@ let expand_abbrev_gen kind find_type_expansion env ty =
   | _ ->
       assert false
 
-(* inside objects and variants we do not want to 
+(* inside objects and variants we do not want to
    use local constraints *)
 let expand_abbrev ty =
   expand_abbrev_gen Public (fun level -> Env.find_type_expansion ~level) ty
@@ -1437,10 +1436,13 @@ let expand_head_opt env ty =
 let enforce_constraints env ty =
   match ty with
     {desc = Tconstr (path, args, abbrev); level = level} ->
-      let decl = Env.find_type path env in
-      ignore
-        (subst env level Public (ref Mnil) None decl.type_params args
-           (newvar2 level))
+      begin try
+        let decl = Env.find_type path env in
+        ignore
+          (subst env level Public (ref Mnil) None decl.type_params args
+             (newvar2 level))
+      with Not_found -> ()
+      end
   | _ ->
       assert false
 
@@ -1490,7 +1492,7 @@ let rec non_recursive_abbrev env ty0 ty =
         with Cannot_expand ->
           if !Clflags.recursive_types &&
             (in_current_module p || in_pervasives p ||
-             is_datatype (Env.find_type p env))
+             try is_datatype (Env.find_type p env) with Not_found -> false)
           then ()
           else iter_type_expr (non_recursive_abbrev env ty0) ty
         end
@@ -1793,26 +1795,26 @@ let deep_occur t0 ty =
 
 let newtype_level = ref None
 
-let get_newtype_level () = 
+let get_newtype_level () =
   match !newtype_level with
   | None -> assert false
   | Some x -> x
 
-(* a local constraint can be added only if the rhs 
+(* a local constraint can be added only if the rhs
    of the constraint does not contain any Tvars.
    They need to be removed using this function *)
 let reify env t =
   let newtype_level = get_newtype_level () in
-  let create_fresh_constr lev name = 
+  let create_fresh_constr lev name =
     let decl = new_declaration (Some (newtype_level, newtype_level)) None in
     let name = get_new_abstract_name name in
-    let (id, new_env) = Env.enter_type name decl !env in    
-    let t = newty2 lev (Tconstr (Path.Pident id,[],ref Mnil))  in 
+    let (id, new_env) = Env.enter_type name decl !env in
+    let t = newty2 lev (Tconstr (Path.Pident id,[],ref Mnil))  in
     env := new_env;
     t
   in
   let visited = ref TypeSet.empty in
-  let rec iterator ty = 
+  let rec iterator ty =
     let ty = repr ty in
     if TypeSet.mem ty !visited then () else begin
       visited := TypeSet.add ty !visited;
@@ -1832,16 +1834,18 @@ let reify env t =
   in
   iterator t
 
-let is_abstract_newtype env p = 
-  let decl = Env.find_type p env in 
-  not (decl.type_newtype_level = None) &&
-  decl.type_manifest = None &&
-  decl.type_kind = Type_abstract
+let is_abstract_newtype env p =
+  try
+    let decl = Env.find_type p env in
+    not (decl.type_newtype_level = None) &&
+    decl.type_manifest = None &&
+    decl.type_kind = Type_abstract
+  with Not_found -> false
 
-(* mcomp type_pairs subst env t1 t2 does not raise an 
+(* mcomp type_pairs subst env t1 t2 does not raise an
    exception if it is possible that t1 and t2 are actually
-   equal, assuming the types in type_pairs are equal and 
-   that the mapping subst holds. 
+   equal, assuming the types in type_pairs are equal and
+   that the mapping subst holds.
    Assumes that both t1 and t2 do not contain any tvars
    and that both their objects and variants are closed
  *)
@@ -1852,7 +1856,7 @@ let rec mcomp type_pairs subst env t1 t2 =
   let t2 = repr t2 in
   if t1 == t2 then () else
     match (t1.desc, t2.desc) with
-      | (Tvar _, _)  
+      | (Tvar _, _)
       | (_, Tvar _)  ->
         fatal_error "types should not include variables"
       | (Tconstr (p1, [], _), Tconstr (p2, [], _)) when Path.same p1 p2 ->
@@ -1952,40 +1956,42 @@ and mcomp_row type_pairs subst env row1 row2 =
       | _ -> ())
     pairs
 
-and mcomp_type_decl type_pairs subst env p1 p2 tl1 tl2 = 
+and mcomp_type_decl type_pairs subst env p1 p2 tl1 tl2 =
   let non_aliased p decl =
     in_pervasives p ||
     in_current_module p && decl.type_newtype_level = None
   in
-  let decl = Env.find_type p1 env in
-  let decl' = Env.find_type p2 env in
-  if Path.same p1 p2 then
-    if non_aliased p1 decl then mcomp_list type_pairs subst env tl1 tl2 else ()
-  else match decl.type_kind, decl'.type_kind with
-  | Type_record (lst,r), Type_record (lst',r') when r = r' ->
-      mcomp_list type_pairs subst env tl1 tl2;
-      mcomp_record_description type_pairs subst env lst lst'
-  | Type_variant v1, Type_variant v2 ->
-      mcomp_list type_pairs subst env tl1 tl2;
-      mcomp_variant_description type_pairs subst env v1 v2
-  | Type_variant _, Type_record _
-  | Type_record _, Type_variant _ -> raise (Unify [])
-  | _ ->
-      if non_aliased p1 decl && (non_aliased p2 decl' || is_datatype decl')
-      || is_datatype decl && non_aliased p2 decl' then raise (Unify [])
+  try
+    let decl = Env.find_type p1 env in
+    let decl' = Env.find_type p2 env in
+    if Path.same p1 p2 then
+      (if non_aliased p1 decl then mcomp_list type_pairs subst env tl1 tl2)
+    else match decl.type_kind, decl'.type_kind with
+    | Type_record (lst,r), Type_record (lst',r') when r = r' ->
+        mcomp_list type_pairs subst env tl1 tl2;
+        mcomp_record_description type_pairs subst env lst lst'
+    | Type_variant v1, Type_variant v2 ->
+        mcomp_list type_pairs subst env tl1 tl2;
+        mcomp_variant_description type_pairs subst env v1 v2
+    | Type_variant _, Type_record _
+    | Type_record _, Type_variant _ -> raise (Unify [])
+    | _ ->
+        if non_aliased p1 decl && (non_aliased p2 decl' || is_datatype decl')
+        || is_datatype decl && non_aliased p2 decl' then raise (Unify [])
+  with Not_found -> ()
 
-and mcomp_type_option type_pairs subst env t t' = 
+and mcomp_type_option type_pairs subst env t t' =
   match t, t' with
     None, None -> ()
-  | Some t, Some t' -> mcomp type_pairs subst env t t' 
-  | _ -> raise (Unify []) 
+  | Some t, Some t' -> mcomp type_pairs subst env t t'
+  | _ -> raise (Unify [])
 
-and mcomp_variant_description type_pairs subst env = 
+and mcomp_variant_description type_pairs subst env =
   let rec iter = fun x y ->
     match x, y with
     (name,mflag,t) :: xs, (name', mflag', t') :: ys   ->
       mcomp_type_option type_pairs subst env t t';
-      if name = name' && mflag = mflag' 
+      if name = name' && mflag = mflag'
       then iter xs ys
       else raise (Unify [])
     | [],[] -> ()
@@ -1993,12 +1999,12 @@ and mcomp_variant_description type_pairs subst env =
   in
   iter
 
-and mcomp_record_description type_pairs subst env = 
+and mcomp_record_description type_pairs subst env =
   let rec iter = fun x y ->
-    match x, y with 
+    match x, y with
       (name, mutable_flag, t) :: xs, (name', mutable_flag', t') :: ys ->
         mcomp type_pairs subst env t t';
-        if name = name' && mutable_flag = mutable_flag' 
+        if name = name' && mutable_flag = mutable_flag'
         then iter xs ys
         else raise (Unify [])
     | [], [] -> ()
@@ -2022,27 +2028,28 @@ let find_lowest_level ty =
     end
   in find ty; unmark_type ty; !lowest
 
-let find_newtype_level env path = 
-  match (Env.find_type path env).type_newtype_level with
+let find_newtype_level env path =
+  try match (Env.find_type path env).type_newtype_level with
     Some x -> x
   | None -> assert false
-        
+  with Not_found -> assert false
+
 let add_gadt_equation env source destination =
-  let destination = duplicate_type destination in 
+  let destination = duplicate_type destination in
   let source_lev = find_newtype_level !env (Path.Pident source) in
   let decl = new_declaration (Some source_lev) (Some destination) in
   let newtype_level = get_newtype_level () in
   env := Env.add_local_constraint source decl newtype_level !env;
-  cleanup_abbrev ()          
+  cleanup_abbrev ()
 
 let unify_eq_set = TypePairs.create 11
 
 let order_type_pair t1 t2 =
   if t1.id <= t2.id then (t1, t2) else (t2, t1)
 
-let add_type_equality t1 t2 = 
+let add_type_equality t1 t2 =
   TypePairs.add unify_eq_set (order_type_pair t1 t2) ()
-        
+
 let unify_eq env t1 t2 =
   t1 == t2 ||
   match !umode with
@@ -2058,7 +2065,7 @@ let rec unify (env:Env.t ref) t1 t2 =
   let t2 = repr t2 in
   if unify_eq !env t1 t2 then () else
   let reset_tracing = check_trace_gadt_instances !env in
-  
+
   try
     type_changed := true;
     begin match (t1.desc, t2.desc) with
@@ -2067,12 +2074,12 @@ let rec unify (env:Env.t ref) t1 t2 =
     | (Tconstr _, Tvar _) when deep_occur t2 t1 ->
         unify2 env t1 t2
     | (Tvar _, _) ->
-        occur !env t1 t2; 
+        occur !env t1 t2;
         occur_univar !env t2;
         link_type t1 t2;
         update_level !env t1.level t2
     | (_, Tvar _) ->
-        occur !env t2 t1; 
+        occur !env t2 t1;
         occur_univar !env t1;
         link_type t2 t1;
         update_level !env t2.level t1
@@ -2179,7 +2186,7 @@ and unify3 env t1 t1' t2 t2' =
       | (Tconstr (p1, tl1, _), Tconstr (p2, tl2, _)) when Path.same p1 p2 ->
           if !umode = Expression || not !generate_equations
           || in_current_module p1 || in_pervasives p1
-          || is_datatype (Env.find_type p1 !env)
+          || try is_datatype (Env.find_type p1 !env) with Not_found -> false
           then
             unify_list env tl1 tl2
           else
@@ -2293,9 +2300,9 @@ and unify_fields env ty1 ty2 =          (* Optimization *)
     List.iter
       (fun (n, k1, t1, k2, t2) ->
         unify_kind k1 k2;
-        try 
+        try
           if !trace_gadt_instances then update_level !env va.level t1;
-          unify env t1 t2 
+          unify env t1 t2
         with Unify trace ->
           raise (Unify ((newty (Tfield(n, k1, t1, newty Tnil)),
                          newty (Tfield(n, k2, t2, newty Tnil)))::trace)))
@@ -2488,7 +2495,7 @@ let unify_var env t1 t2 =
         if reset_tracing then trace_gadt_instances := false;
       with Unify trace ->
         if reset_tracing then trace_gadt_instances := false;
-        let expanded_trace = expand_trace env ((t1,t2)::trace) in 
+        let expanded_trace = expand_trace env ((t1,t2)::trace) in
         raise (Unify expanded_trace)
       end
   | _ ->
@@ -3072,16 +3079,16 @@ exception Failure of class_match_failure list
 let rec moregen_clty trace type_pairs env cty1 cty2 =
   try
     match cty1, cty2 with
-      Tcty_constr (_, _, cty1), _ ->
+      Cty_constr (_, _, cty1), _ ->
         moregen_clty true type_pairs env cty1 cty2
-    | _, Tcty_constr (_, _, cty2) ->
+    | _, Cty_constr (_, _, cty2) ->
         moregen_clty true type_pairs env cty1 cty2
-    | Tcty_fun (l1, ty1, cty1'), Tcty_fun (l2, ty2, cty2') when l1 = l2 ->
+    | Cty_fun (l1, ty1, cty1'), Cty_fun (l2, ty2, cty2') when l1 = l2 ->
         begin try moregen true type_pairs env ty1 ty2 with Unify trace ->
           raise (Failure [CM_Parameter_mismatch (expand_trace env trace)])
         end;
         moregen_clty false type_pairs env cty1' cty2'
-    | Tcty_signature sign1, Tcty_signature sign2 ->
+    | Cty_signature sign1, Cty_signature sign2 ->
         let ty1 = object_fields (repr sign1.cty_self) in
         let ty2 = object_fields (repr sign2.cty_self) in
         let (fields1, rest1) = flatten_fields ty1
@@ -3205,18 +3212,18 @@ let match_class_types ?(trace=true) env pat_sch subj_sch =
 let rec equal_clty trace type_pairs subst env cty1 cty2 =
   try
     match cty1, cty2 with
-      Tcty_constr (_, _, cty1), Tcty_constr (_, _, cty2) ->
+      Cty_constr (_, _, cty1), Cty_constr (_, _, cty2) ->
         equal_clty true type_pairs subst env cty1 cty2
-    | Tcty_constr (_, _, cty1), _ ->
+    | Cty_constr (_, _, cty1), _ ->
         equal_clty true type_pairs subst env cty1 cty2
-    | _, Tcty_constr (_, _, cty2) ->
+    | _, Cty_constr (_, _, cty2) ->
         equal_clty true type_pairs subst env cty1 cty2
-    | Tcty_fun (l1, ty1, cty1'), Tcty_fun (l2, ty2, cty2') when l1 = l2 ->
+    | Cty_fun (l1, ty1, cty1'), Cty_fun (l2, ty2, cty2') when l1 = l2 ->
         begin try eqtype true type_pairs subst env ty1 ty2 with Unify trace ->
           raise (Failure [CM_Parameter_mismatch (expand_trace env trace)])
         end;
         equal_clty false type_pairs subst env cty1' cty2'
-    | Tcty_signature sign1, Tcty_signature sign2 ->
+    | Cty_signature sign1, Cty_signature sign2 ->
         let ty1 = object_fields (repr sign1.cty_self) in
         let ty2 = object_fields (repr sign2.cty_self) in
         let (fields1, rest1) = flatten_fields ty1
@@ -3331,14 +3338,16 @@ let match_class_declarations env patt_params patt_type subj_params subj_type =
             raise (Failure [CM_Type_parameter_mismatch
                                (expand_trace env trace)]))
           patt_params subj_params;
-        (* old code: equal_clty false type_pairs subst env patt_type subj_type; *)
+     (* old code: equal_clty false type_pairs subst env patt_type subj_type; *)
         equal_clty false type_pairs subst env
-          (Tcty_signature sign1) (Tcty_signature sign2);
+          (Cty_signature sign1) (Cty_signature sign2);
         (* Use moregeneral for class parameters, need to recheck everything to
            keeps relationships (PR#4824) *)
-        let clty_params = List.fold_right (fun ty cty -> Tcty_fun ("*",ty,cty)) in
+        let clty_params =
+          List.fold_right (fun ty cty -> Cty_fun ("*",ty,cty)) in
         match_class_types ~trace:false env
-          (clty_params patt_params patt_type) (clty_params subj_params subj_type)
+          (clty_params patt_params patt_type)
+          (clty_params subj_params subj_type)
       with
         Failure r -> r
       end
@@ -4000,11 +4009,11 @@ let nondep_type_decl env mid id is_covariant decl =
       | Type_variant cstrs ->
           Type_variant
             (List.map
-               (fun (c, tl,ret_type_opt) -> 
-                 let ret_type_opt = 
+               (fun (c, tl,ret_type_opt) ->
+                 let ret_type_opt =
                    may_map (nondep_type_rec env mid) ret_type_opt
                  in
-                 (c, List.map (nondep_type_rec env mid) tl,ret_type_opt)) 
+                 (c, List.map (nondep_type_rec env mid) tl,ret_type_opt))
                cstrs)
       | Type_record(lbls, rep) ->
           Type_record
@@ -4053,15 +4062,15 @@ let nondep_class_signature env id sign =
 
 let rec nondep_class_type env id =
   function
-    Tcty_constr (p, _, cty) when Path.isfree id p ->
+    Cty_constr (p, _, cty) when Path.isfree id p ->
       nondep_class_type env id cty
-  | Tcty_constr (p, tyl, cty) ->
-      Tcty_constr (p, List.map (nondep_type_rec env id) tyl,
+  | Cty_constr (p, tyl, cty) ->
+      Cty_constr (p, List.map (nondep_type_rec env id) tyl,
                    nondep_class_type env id cty)
-  | Tcty_signature sign ->
-      Tcty_signature (nondep_class_signature env id sign)
-  | Tcty_fun (l, ty, cty) ->
-      Tcty_fun (l, nondep_type_rec env id ty, nondep_class_type env id cty)
+  | Cty_signature sign ->
+      Cty_signature (nondep_class_signature env id sign)
+  | Cty_fun (l, ty, cty) ->
+      Cty_fun (l, nondep_type_rec env id ty, nondep_class_type env id cty)
 
 let nondep_class_declaration env id decl =
   assert (not (Path.isfree id decl.cty_path));
index c4d4ff13a3d0843f98ba2776033be3ab67b3d982..65bf372af5ac8c8f96568fdd629d7ee8000c718c 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: ctype.mli 12534 2012-06-01 05:24:38Z garrigue $ *)
 
 (* Operations on core types *)
 
@@ -55,7 +55,6 @@ val none: type_expr
 val repr: type_expr -> type_expr
         (* Return the canonical representative of a type. *)
 
-val dummy_method: label
 val object_fields: type_expr -> type_expr
 val flatten_fields:
         type_expr -> (string * field_kind * type_expr) list * type_expr
@@ -120,6 +119,7 @@ val instance_constructor:
         constructor_description -> type_expr list * type_expr
         (* Same, for a constructor *)
 val instance_parameterized_type:
+        ?keep_names:bool ->
         type_expr list -> type_expr -> type_expr list * type_expr
 val instance_parameterized_type_2:
         type_expr list -> type_expr list -> type_expr ->
@@ -153,7 +153,8 @@ val enforce_constraints: Env.t -> type_expr -> unit
 val unify: Env.t -> type_expr -> type_expr -> unit
         (* Unify the two types given. Raise [Unify] if not possible. *)
 val unify_gadt: newtype_level:int -> Env.t ref -> type_expr -> type_expr -> unit
-        (* Unify the two types given and update the environment with the local constraints. Raise [Unify] if not possible. *)
+        (* Unify the two types given and update the environment with the
+           local constraints. Raise [Unify] if not possible. *)
 val unify_var: Env.t -> type_expr -> type_expr -> unit
         (* Same as [unify], but allow free univars when first type
            is a variable. *)
@@ -175,7 +176,7 @@ val rigidify: type_expr -> type_expr list
         (* "Rigidify" a type and return its type variable *)
 val all_distinct_vars: Env.t -> type_expr list -> bool
         (* Check those types are all distinct type variables *)
-val matches : Env.t -> type_expr -> type_expr -> bool
+val matches: Env.t -> type_expr -> type_expr -> bool
         (* Same as [moregeneral false], implemented using the two above
            functions and backtracking. Ignore levels *)
 
@@ -197,7 +198,7 @@ type class_match_failure =
   | CM_Private_method of string
   | CM_Virtual_method of string
 val match_class_types:
-        ?trace:bool -> Env.t -> class_type -> class_type -> class_match_failure list
+    ?trace:bool -> Env.t -> class_type -> class_type -> class_match_failure list
         (* Check if the first class type is more general than the second. *)
 val equal: Env.t -> bool -> type_expr list -> type_expr list -> bool
         (* [equal env [x1...xn] tau [y1...yn] sigma]
@@ -228,7 +229,7 @@ val nondep_class_declaration:
         Env.t -> Ident.t -> class_declaration -> class_declaration
         (* Same for class declarations. *)
 val nondep_cltype_declaration:
-        Env.t -> Ident.t -> cltype_declaration -> cltype_declaration
+        Env.t -> Ident.t -> class_type_declaration -> class_type_declaration
         (* Same for class type declarations. *)
 val correct_abbrev: Env.t -> Path.t -> type_expr list -> type_expr -> unit
 val cyclic_abbrev: Env.t -> Ident.t -> type_expr -> bool
index bc05d2a845a89847d5e2855e6992706702f32d62..edf0153e6b2f501323fc9dfaa2fdfc0aa72fdf57 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: datarepr.ml 12511 2012-05-30 13:29:48Z lefessan $ *)
 
 (* Compute constructor and label descriptions from type declarations,
    determining their representation. *)
@@ -111,7 +111,7 @@ let label_descrs ty_res lbls repres priv =
       [] -> []
     | (name, mut_flag, ty_arg) :: rest ->
         let lbl =
-          { lbl_name = name;
+          { lbl_name = Ident.name name;
             lbl_res = ty_res;
             lbl_arg = ty_arg;
             lbl_mut = mut_flag;
index bc1190d4540715aa46cb02b854c4d3c6539e22cf..e5d4428b57cb6c5f33fecd13eed1f29b7d932d81 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: datarepr.mli 12511 2012-05-30 13:29:48Z lefessan $ *)
 
 (* Compute constructor and label descriptions from type declarations,
    determining their representation. *)
@@ -19,17 +19,17 @@ open Asttypes
 open Types
 
 val constructor_descrs:
-  type_expr -> (string * type_expr list * type_expr option) list ->
-  private_flag -> (string * constructor_description) list
+  type_expr -> (Ident.t * type_expr list * type_expr option) list ->
+  private_flag -> (Ident.t * constructor_description) list
 val exception_descr:
   Path.t -> exception_declaration -> constructor_description
 val label_descrs:
-  type_expr -> (string * mutable_flag * type_expr) list ->
+  type_expr -> (Ident.t * mutable_flag * type_expr) list ->
     record_representation -> private_flag ->
-    (string * label_description) list
+    (Ident.t * label_description) list
 
 exception Constr_not_found
 
 val find_constr_by_tag:
-  constructor_tag -> (string * type_expr list * type_expr option) list ->
-    string * type_expr list * type_expr option
+  constructor_tag -> (Ident.t * type_expr list * type_expr option) list ->
+    Ident.t * type_expr list * type_expr option
index 7ec2028b6449935e2a675d93afacc65acbf28eee..99e083bc108bdfdf8f0fabd792bd2bdbf1836b4d 100644 (file)
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: env.ml 12542 2012-06-01 14:06:31Z frisch $ *)
 
 (* Environment handling *)
 
+open Cmi_format
 open Config
 open Misc
 open Asttypes
@@ -24,15 +25,17 @@ open Btype
 
 let add_delayed_check_forward = ref (fun _ -> assert false)
 
-let value_declarations : ((string * Location.t), (unit -> unit)) Hashtbl.t = Hashtbl.create 16
+let value_declarations : ((string * Location.t), (unit -> unit)) Hashtbl.t =
+  Hashtbl.create 16
     (* This table is used to usage of value declarations.  A declaration is
-       identified with its name and location.  The callback attached to a declaration
-       is called whenever the value is used explicitly (lookup_value) or implicitly
-       (inclusion test between signatures, cf Includemod.value_descriptions). *)
+       identified with its name and location.  The callback attached to a
+       declaration is called whenever the value is used explicitly
+       (lookup_value) or implicitly (inclusion test between signatures,
+       cf Includemod.value_descriptions). *)
 
 let type_declarations = Hashtbl.create 16
 
-type constructor_usage = [`Positive|`Pattern|`Privatize]
+type constructor_usage = Positive | Pattern | Privatize
 type constructor_usages =
     {
      mutable cu_positive: bool;
@@ -40,24 +43,58 @@ type constructor_usages =
      mutable cu_privatize: bool;
     }
 let add_constructor_usage cu = function
-  | `Positive -> cu.cu_positive <- true
-  | `Pattern -> cu.cu_pattern <- true
-  | `Privatize -> cu.cu_privatize <- true
+  | Positive -> cu.cu_positive <- true
+  | Pattern -> cu.cu_pattern <- true
+  | Privatize -> cu.cu_privatize <- true
 let constructor_usages () =
   {cu_positive = false; cu_pattern = false; cu_privatize = false}
 
-let used_constructors : (string * Location.t * string, (constructor_usage -> unit)) Hashtbl.t = Hashtbl.create 16
+let used_constructors :
+    (string * Location.t * string, (constructor_usage -> unit)) Hashtbl.t
+  = Hashtbl.create 16
 
 type error =
-    Not_an_interface of string
-  | Wrong_version_interface of string * string
-  | Corrupted_interface of string
   | Illegal_renaming of string * string
   | Inconsistent_import of string * string * string
   | Need_recursive_types of string * string
 
 exception Error of error
 
+module EnvLazy : sig
+  type ('a,'b) t
+
+  val force : ('a -> 'b) -> ('a,'b) t -> 'b
+  val create : 'a -> ('a,'b) t
+
+end  = struct
+
+  type ('a,'b) t = ('a,'b) eval ref
+
+  and ('a,'b) eval =
+      Done of 'b
+    | Raise of exn
+    | Thunk of 'a
+
+  let force f x =
+    match !x with
+        Done x -> x
+      | Raise e -> raise e
+      | Thunk e ->
+          try
+            let y = f e in
+            x := Done y;
+            y
+          with e ->
+            x := Raise e;
+            raise e
+
+  let create x =
+    let x = ref (Thunk x) in
+    x
+
+end
+
+
 type summary =
     Env_empty
   | Env_value of summary * Ident.t * value_description
@@ -66,32 +103,32 @@ type summary =
   | Env_module of summary * Ident.t * module_type
   | Env_modtype of summary * Ident.t * modtype_declaration
   | Env_class of summary * Ident.t * class_declaration
-  | Env_cltype of summary * Ident.t * cltype_declaration
+  | Env_cltype of summary * Ident.t * class_type_declaration
   | Env_open of summary * Path.t
 
 module EnvTbl =
   struct
     (* A table indexed by identifier, with an extra slot to record usage. *)
-    type 'a t = 'a Ident.tbl * bool ref Ident.tbl
+    type 'a t = ('a * bool ref) Ident.tbl
 
-    let empty = (Ident.empty, Ident.empty)
+    let empty = Ident.empty
     let current_slot = ref (ref true)
 
-    let add id x (tbl, slots) =
-      let slot = !current_slot in
-      let slots = if !slot then slots else Ident.add id slot slots in
-      Ident.add id x tbl, slots
+    let add id x tbl =
+      Ident.add id (x, !current_slot) tbl
 
-    let find_same_not_using id (tbl, _) =
-      Ident.find_same id tbl
+    let find_same_not_using id tbl =
+      fst (Ident.find_same id tbl)
 
-    let find_same id (tbl, slots) =
-      (try Ident.find_same id slots := true with Not_found -> ());
-      Ident.find_same id tbl
+    let find_same id tbl =
+      let (x, slot) = Ident.find_same id tbl in
+      slot := true;
+      x
 
-    let find_name s (tbl, slots) =
-      (try Ident.find_name s slots := true with Not_found -> ());
-      Ident.find_name s tbl
+    let find_name s tbl =
+      let (x, slot) = Ident.find_name s tbl in
+      slot := true;
+      x
 
     let with_slot slot f x =
       let old_slot = !current_slot in
@@ -100,29 +137,30 @@ module EnvTbl =
         (fun () -> f x)
         (fun () -> current_slot := old_slot)
 
-    let keys (tbl, _) =
+    let keys tbl =
       Ident.keys tbl
   end
 
 type t = {
   values: (Path.t * value_description) EnvTbl.t;
   annotations: (Path.t * Annot.ident) EnvTbl.t;
-  constrs: constructor_description EnvTbl.t;
-  labels: label_description EnvTbl.t;
+  constrs: (Path.t * constructor_description) EnvTbl.t;
+  labels: (Path.t * label_description) EnvTbl.t;
   constrs_by_path: (Path.t * (constructor_description list)) EnvTbl.t;
   types: (Path.t * type_declaration) EnvTbl.t;
   modules: (Path.t * module_type) EnvTbl.t;
   modtypes: (Path.t * modtype_declaration) EnvTbl.t;
   components: (Path.t * module_components) EnvTbl.t;
   classes: (Path.t * class_declaration) EnvTbl.t;
-  cltypes: (Path.t * cltype_declaration) EnvTbl.t;
+  cltypes: (Path.t * class_type_declaration) EnvTbl.t;
   summary: summary;
   local_constraints: bool;
   gadt_instances: (int * TypeSet.t ref) list;
   in_signature: bool;
 }
 
-and module_components = module_components_repr Lazy.t
+and module_components =
+  (t * Subst.t * Path.t * Types.module_type, module_components_repr) EnvLazy.t
 
 and module_components_repr =
     Structure_comps of structure_components
@@ -136,11 +174,12 @@ and structure_components = {
   mutable comp_constrs_by_path: 
       (string, (constructor_description list * int)) Tbl.t;
   mutable comp_types: (string, (type_declaration * int)) Tbl.t;
-  mutable comp_modules: (string, (module_type Lazy.t * int)) Tbl.t;
+  mutable comp_modules:
+   (string, ((Subst.t * Types.module_type,module_type) EnvLazy.t * int)) Tbl.t;
   mutable comp_modtypes: (string, (modtype_declaration * int)) Tbl.t;
   mutable comp_components: (string, (module_components * int)) Tbl.t;
   mutable comp_classes: (string, (class_declaration * int)) Tbl.t;
-  mutable comp_cltypes: (string, (cltype_declaration * int)) Tbl.t
+  mutable comp_cltypes: (string, (class_type_declaration * int)) Tbl.t
 }
 
 and functor_components = {
@@ -152,6 +191,8 @@ and functor_components = {
   fcomp_cache: (Path.t, module_components) Hashtbl.t  (* For memoization *)
 }
 
+let subst_modtype_maker (subst, mty) = Subst.modtype subst mty
+
 let empty = {
   values = EnvTbl.empty; annotations = EnvTbl.empty; constrs = EnvTbl.empty;
   labels = EnvTbl.empty; types = EnvTbl.empty; 
@@ -170,7 +211,8 @@ let diff_keys is_local tbl1 tbl2 =
   List.filter
     (fun id ->
       is_local (EnvTbl.find_same_not_using id tbl2) &&
-      try ignore (EnvTbl.find_same_not_using id tbl1); false with Not_found -> true)
+      try ignore (EnvTbl.find_same_not_using id tbl1); false
+      with Not_found -> true)
     keys2
 
 let is_ident = function
@@ -179,13 +221,9 @@ let is_ident = function
 
 let is_local (p, _) = is_ident p
 
-let is_local_exn = function
-    {cstr_tag = Cstr_exception (p, _)} -> is_ident p
-  | _ -> false
-
 let diff env1 env2 =
   diff_keys is_local env1.values env2.values @
-  diff_keys is_local_exn env1.constrs env2.constrs @
+  diff_keys is_local env1.constrs env2.constrs @
   diff_keys is_local env1.modules env2.modules @
   diff_keys is_local env1.classes env2.classes
 
@@ -194,6 +232,9 @@ let diff env1 env2 =
 let components_of_module' =
   ref ((fun env sub path mty -> assert false) :
           t -> Subst.t -> Path.t -> module_type -> module_components)
+let components_of_module_maker' =
+  ref ((fun (env, sub, path, mty) -> assert false) :
+          t * Subst.t * Path.t * module_type -> module_components_repr)
 let components_of_functor_appl' =
   ref ((fun f p1 p2 -> assert false) :
           functor_components -> Path.t -> Path.t -> module_components)
@@ -209,8 +250,6 @@ let current_unit = ref ""
 
 (* Persistent structure descriptions *)
 
-type pers_flags = Rectypes
-
 type pers_struct =
   { ps_name: string;
     ps_sig: signature;
@@ -237,28 +276,15 @@ let check_consistency filename crcs =
 (* Reading persistent structures from .cmi files *)
 
 let read_pers_struct modname filename =
-  let ic = open_in_bin filename in
-  try
-    let buffer = Misc.input_bytes ic (String.length cmi_magic_number) in
-    if buffer <> cmi_magic_number then begin
-      close_in ic;
-      let pre_len = String.length cmi_magic_number - 3 in
-      if String.sub buffer 0 pre_len = String.sub cmi_magic_number 0 pre_len then
-      begin
-        let msg = if buffer < cmi_magic_number then "an older" else "a newer" in
-         raise (Error (Wrong_version_interface (filename, msg)))
-      end else begin
-        raise(Error(Not_an_interface filename))
-      end
-    end;
-    let (name, sign) = input_value ic in
-    let crcs = input_value ic in
-    let flags = input_value ic in
-    close_in ic;
-    let comps =
+  let cmi = read_cmi filename in
+  let name = cmi.cmi_name in
+  let sign = cmi.cmi_sign in
+  let crcs = cmi.cmi_crcs in
+  let flags = cmi.cmi_flags in
+  let comps =
       !components_of_module' empty Subst.identity
                              (Pident(Ident.create_persistent name))
-                             (Tmty_signature sign) in
+                             (Mty_signature sign) in
     let ps = { ps_name = name;
                ps_sig = sign;
                ps_comps = comps;
@@ -275,9 +301,6 @@ let read_pers_struct modname filename =
       ps.ps_flags;
     Hashtbl.add persistent_structures modname (Some ps);
     ps
-  with End_of_file | Failure _ ->
-    close_in ic;
-    raise(Error(Corrupted_interface(filename)))
 
 let find_pers_struct name =
   if name = "*predef*" then raise Not_found;
@@ -305,7 +328,9 @@ let reset_cache () =
   Hashtbl.clear type_declarations
 
 let reset_missing_cmis () =
-  let l = Hashtbl.fold (fun name r acc -> if r = None then name :: acc else acc) persistent_structures [] in
+  let l = Hashtbl.fold
+      (fun name r acc -> if r = None then name :: acc else acc)
+      persistent_structures [] in
   List.iter (Hashtbl.remove persistent_structures) l
 
 let set_unit_name name =
@@ -325,7 +350,9 @@ let rec find_module_descr path env =
         else raise Not_found
       end
   | Pdot(p, s, pos) ->
-      begin match Lazy.force(find_module_descr p env) with
+      begin match
+        EnvLazy.force !components_of_module_maker' (find_module_descr p env)
+      with
         Structure_comps c ->
           let (descr, pos) = Tbl.find s c.comp_components in
           descr
@@ -333,7 +360,9 @@ let rec find_module_descr path env =
          raise Not_found
       end
   | Papply(p1, p2) ->
-      begin match Lazy.force(find_module_descr p1 env) with
+      begin match
+        EnvLazy.force !components_of_module_maker' (find_module_descr p1 env)
+      with
         Functor_comps f ->
           !components_of_functor_appl' f p1 p2
       | Structure_comps c ->
@@ -346,7 +375,9 @@ let find proj1 proj2 path env =
       let (p, data) = EnvTbl.find_same id (proj1 env)
       in data
   | Pdot(p, s, pos) ->
-      begin match Lazy.force(find_module_descr p env) with
+      begin match
+        EnvLazy.force !components_of_module_maker' (find_module_descr p env)
+      with
         Structure_comps c ->
           let (data, pos) = Tbl.find s (proj2 c) in data
       | Functor_comps f ->
@@ -357,6 +388,8 @@ let find proj1 proj2 path env =
 
 let find_value =
   find (fun env -> env.values) (fun sc -> sc.comp_values)
+and find_annot =
+  find (fun env -> env.annotations) (fun sc -> sc.comp_annotations)
 and find_type =
   find (fun env -> env.types) (fun sc -> sc.comp_types)
 and find_constructors =
@@ -398,8 +431,8 @@ let find_type_expansion_opt path env =
 
 let find_modtype_expansion path env =
   match find_modtype path env with
-    Tmodtype_abstract     -> raise Not_found
-  | Tmodtype_manifest mty -> mty
+    Modtype_abstract     -> raise Not_found
+  | Modtype_manifest mty -> mty
 
 let find_module path env =
   match path with
@@ -410,13 +443,16 @@ let find_module path env =
       with Not_found ->
         if Ident.persistent id then
           let ps = find_pers_struct (Ident.name id) in
-          Tmty_signature(ps.ps_sig)
+          Mty_signature(ps.ps_sig)
         else raise Not_found
       end
   | Pdot(p, s, pos) ->
-      begin match Lazy.force (find_module_descr p env) with
+      begin match
+        EnvLazy.force !components_of_module_maker' (find_module_descr p env)
+      with
         Structure_comps c ->
-          let (data, pos) = Tbl.find s c.comp_modules in Lazy.force data
+          let (data, pos) = Tbl.find s c.comp_modules in
+          EnvLazy.force subst_modtype_maker data
       | Functor_comps f ->
           raise Not_found
       end
@@ -437,7 +473,7 @@ let rec lookup_module_descr lid env =
       end
   | Ldot(l, s) ->
       let (p, descr) = lookup_module_descr l env in
-      begin match Lazy.force descr with
+      begin match EnvLazy.force !components_of_module_maker' descr with
         Structure_comps c ->
           let (descr, pos) = Tbl.find s c.comp_components in
           (Pdot(p, s, pos), descr)
@@ -447,7 +483,7 @@ let rec lookup_module_descr lid env =
   | Lapply(l1, l2) ->
       let (p1, desc1) = lookup_module_descr l1 env in
       let (p2, mty2) = lookup_module l2 env in
-      begin match Lazy.force desc1 with
+      begin match EnvLazy.force !components_of_module_maker' desc1 with
         Functor_comps f ->
           !check_modtype_inclusion env mty2 p2 f.fcomp_arg;
           (Papply(p1, p2), !components_of_functor_appl' f p1 p2)
@@ -463,14 +499,14 @@ and lookup_module lid env =
       with Not_found ->
         if s = !current_unit then raise Not_found;
         let ps = find_pers_struct s in
-        (Pident(Ident.create_persistent s), Tmty_signature ps.ps_sig)
+        (Pident(Ident.create_persistent s), Mty_signature ps.ps_sig)
       end
   | Ldot(l, s) ->
       let (p, descr) = lookup_module_descr l env in
-      begin match Lazy.force descr with
+      begin match EnvLazy.force !components_of_module_maker' descr with
         Structure_comps c ->
           let (data, pos) = Tbl.find s c.comp_modules in
-          (Pdot(p, s, pos), Lazy.force data)
+          (Pdot(p, s, pos), EnvLazy.force subst_modtype_maker data)
       | Functor_comps f ->
           raise Not_found
       end
@@ -478,7 +514,7 @@ and lookup_module lid env =
       let (p1, desc1) = lookup_module_descr l1 env in
       let (p2, mty2) = lookup_module l2 env in
       let p = Papply(p1, p2) in
-      begin match Lazy.force desc1 with
+      begin match EnvLazy.force !components_of_module_maker' desc1 with
         Functor_comps f ->
           !check_modtype_inclusion env mty2 p2 f.fcomp_arg;
           (p, Subst.modtype (Subst.add_module f.fcomp_param p2 f.fcomp_subst)
@@ -493,7 +529,7 @@ let lookup proj1 proj2 lid env =
       EnvTbl.find_name s (proj1 env)
   | Ldot(l, s) ->
       let (p, desc) = lookup_module_descr l env in
-      begin match Lazy.force desc with
+      begin match EnvLazy.force !components_of_module_maker' desc with
         Structure_comps c ->
           let (data, pos) = Tbl.find s (proj2 c) in
           (Pdot(p, s, pos), data)
@@ -509,7 +545,7 @@ let lookup_simple proj1 proj2 lid env =
       EnvTbl.find_name s (proj1 env)
   | Ldot(l, s) ->
       let (p, desc) = lookup_module_descr l env in
-      begin match Lazy.force desc with
+      begin match EnvLazy.force !components_of_module_maker' desc with
         Structure_comps c ->
           let (data, pos) = Tbl.find s (proj2 c) in
           data
@@ -526,9 +562,9 @@ let lookup_value =
 let lookup_annot id e =
   lookup (fun env -> env.annotations) (fun sc -> sc.comp_annotations) id e
 and lookup_constructor =
-  lookup_simple (fun env -> env.constrs) (fun sc -> sc.comp_constrs)
+  lookup (fun env -> env.constrs) (fun sc -> sc.comp_constrs)
 and lookup_label =
-  lookup_simple (fun env -> env.labels) (fun sc -> sc.comp_labels)
+  lookup (fun env -> env.labels) (fun sc -> sc.comp_labels)
 and lookup_type =
   lookup (fun env -> env.types) (fun sc -> sc.comp_types)
 and lookup_modtype =
@@ -567,7 +603,9 @@ let set_value_used_callback name vd callback =
     Hashtbl.add value_declarations key callback
 
 let set_type_used_callback name td callback =
-  let old = try Hashtbl.find type_declarations (name, td.type_loc) with Not_found -> assert false in
+  let old =
+    try Hashtbl.find type_declarations (name, td.type_loc)
+    with Not_found -> assert false in
   Hashtbl.replace type_declarations (name, td.type_loc) (fun () -> callback old)
 
 let lookup_value lid env =
@@ -580,6 +618,13 @@ let lookup_type lid env =
   mark_type_used (Longident.last lid) desc;
   r
 
+(* [path] must be the path to a type, not to a module ! *)
+let rec path_subst_last path id =
+  match path with
+    Pident _ -> Pident id
+  | Pdot (p, name, pos) -> Pdot(p, Ident.name id, pos)
+  | Papply (p1, p2) -> assert false
+
 let mark_type_path env path =
   let decl = try find_type path env with Not_found -> assert false in
   mark_type_used (Path.last path) decl
@@ -589,9 +634,9 @@ let ty_path = function
   | _ -> assert false
 
 let lookup_constructor lid env =
-  let desc = lookup_constructor lid env in
+  let (_,desc) as c = lookup_constructor lid env in
   mark_type_path env (ty_path desc.cstr_res);
-  desc
+  c
 
 let mark_constructor usage env name desc =
   match desc.cstr_tag with
@@ -607,9 +652,9 @@ let mark_constructor usage env name desc =
       mark_constructor_used usage ty_name ty_decl name
 
 let lookup_label lid env =
-  let desc = lookup_label lid env in
+  let (_,desc) as c = lookup_label lid env in
   mark_type_path env (ty_path desc.lbl_res);
-  desc
+  c
 
 let lookup_class lid env =
   let (_, desc) as r = lookup_class lid env in
@@ -674,7 +719,7 @@ let add_gadt_instance_chain env lv t =
 
 let rec scrape_modtype mty env =
   match mty with
-    Tmty_ident path ->
+    Mty_ident path ->
       begin try
         scrape_modtype (find_modtype_expansion path env) env
       with Not_found ->
@@ -709,36 +754,36 @@ let labels_of_type ty_path decl =
 
 let rec prefix_idents root pos sub = function
     [] -> ([], sub)
-  | Tsig_value(id, decl) :: rem ->
+  | Sig_value(id, decl) :: rem ->
       let p = Pdot(root, Ident.name id, pos) in
       let nextpos = match decl.val_kind with Val_prim _ -> pos | _ -> pos+1 in
       let (pl, final_sub) = prefix_idents root nextpos sub rem in
       (p::pl, final_sub)
-  | Tsig_type(id, decl, _) :: rem ->
+  | Sig_type(id, decl, _) :: rem ->
       let p = Pdot(root, Ident.name id, nopos) in
       let (pl, final_sub) =
         prefix_idents root pos (Subst.add_type id p sub) rem in
       (p::pl, final_sub)
-  | Tsig_exception(id, decl) :: rem ->
+  | Sig_exception(id, decl) :: rem ->
       let p = Pdot(root, Ident.name id, pos) in
       let (pl, final_sub) = prefix_idents root (pos+1) sub rem in
       (p::pl, final_sub)
-  | Tsig_module(id, mty, _) :: rem ->
+  | Sig_module(id, mty, _) :: rem ->
       let p = Pdot(root, Ident.name id, pos) in
       let (pl, final_sub) =
         prefix_idents root (pos+1) (Subst.add_module id p sub) rem in
       (p::pl, final_sub)
-  | Tsig_modtype(id, decl) :: rem ->
+  | Sig_modtype(id, decl) :: rem ->
       let p = Pdot(root, Ident.name id, nopos) in
       let (pl, final_sub) =
         prefix_idents root pos
-                      (Subst.add_modtype id (Tmty_ident p) sub) rem in
+                      (Subst.add_modtype id (Mty_ident p) sub) rem in
       (p::pl, final_sub)
-  | Tsig_class(id, decl, _) :: rem ->
+  | Sig_class(id, decl, _) :: rem ->
       let p = Pdot(root, Ident.name id, pos) in
       let (pl, final_sub) = prefix_idents root (pos + 1) sub rem in
       (p::pl, final_sub)
-  | Tsig_cltype(id, decl, _) :: rem ->
+  | Sig_class_type(id, decl, _) :: rem ->
       let p = Pdot(root, Ident.name id, nopos) in
       let (pl, final_sub) = prefix_idents root pos sub rem in
       (p::pl, final_sub)
@@ -746,8 +791,11 @@ let rec prefix_idents root pos sub = function
 (* Compute structure descriptions *)
 
 let rec components_of_module env sub path mty =
-  lazy(match scrape_modtype mty env with
-    Tmty_signature sg ->
+  EnvLazy.create (env, sub, path, mty)
+
+and components_of_module_maker (env, sub, path, mty) =
+  (match scrape_modtype mty env with
+    Mty_signature sg ->
       let c =
         { comp_values = Tbl.empty; comp_annotations = Tbl.empty;
           comp_constrs = Tbl.empty; 
@@ -761,7 +809,7 @@ let rec components_of_module env sub path mty =
       let pos = ref 0 in
       List.iter2 (fun item path ->
         match item with
-          Tsig_value(id, decl) ->
+          Sig_value(id, decl) ->
             let decl' = Subst.value_description sub decl in
             c.comp_values <-
               Tbl.add (Ident.name id) (decl', !pos) c.comp_values;
@@ -773,7 +821,7 @@ let rec components_of_module env sub path mty =
             begin match decl.val_kind with
               Val_prim _ -> () | _ -> incr pos
             end
-        | Tsig_type(id, decl, _) ->
+        | Sig_type(id, decl, _) ->
             let decl' = Subst.type_declaration sub decl in
             c.comp_types <-
               Tbl.add (Ident.name id) (decl', nopos) c.comp_types;
@@ -783,22 +831,24 @@ let rec components_of_module env sub path mty =
                (List.map snd constructors, nopos) c.comp_constrs_by_path;
             List.iter
               (fun (name, descr) ->
-                c.comp_constrs <- Tbl.add name (descr, nopos) c.comp_constrs)
+                c.comp_constrs <-
+                  Tbl.add (Ident.name name) (descr, nopos) c.comp_constrs)
               constructors;
            let labels = labels_of_type path decl' in
             List.iter
               (fun (name, descr) ->
-                c.comp_labels <- Tbl.add name (descr, nopos) c.comp_labels)
+                c.comp_labels <-
+                  Tbl.add (Ident.name name) (descr, nopos) c.comp_labels)
               (labels);
             env := store_type_infos id path decl !env
-        | Tsig_exception(id, decl) ->
+        | Sig_exception(id, decl) ->
             let decl' = Subst.exception_declaration sub decl in
             let cstr = Datarepr.exception_descr path decl' in
             c.comp_constrs <-
               Tbl.add (Ident.name id) (cstr, !pos) c.comp_constrs;
             incr pos
-        | Tsig_module(id, mty, _) ->
-            let mty' = lazy (Subst.modtype sub mty) in
+        | Sig_module(id, mty, _) ->
+            let mty' = EnvLazy.create (sub, mty) in
             c.comp_modules <-
               Tbl.add (Ident.name id) (mty', !pos) c.comp_modules;
             let comps = components_of_module !env sub path mty in
@@ -806,23 +856,23 @@ let rec components_of_module env sub path mty =
               Tbl.add (Ident.name id) (comps, !pos) c.comp_components;
             env := store_module id path mty !env;
             incr pos
-        | Tsig_modtype(id, decl) ->
+        | Sig_modtype(id, decl) ->
             let decl' = Subst.modtype_declaration sub decl in
             c.comp_modtypes <-
               Tbl.add (Ident.name id) (decl', nopos) c.comp_modtypes;
             env := store_modtype id path decl !env
-        | Tsig_class(id, decl, _) ->
+        | Sig_class(id, decl, _) ->
             let decl' = Subst.class_declaration sub decl in
             c.comp_classes <-
               Tbl.add (Ident.name id) (decl', !pos) c.comp_classes;
             incr pos
-        | Tsig_cltype(id, decl, _) ->
+        | Sig_class_type(id, decl, _) ->
             let decl' = Subst.cltype_declaration sub decl in
             c.comp_cltypes <-
               Tbl.add (Ident.name id) (decl', !pos) c.comp_cltypes)
         sg pl;
         Structure_comps c
-  | Tmty_functor(param, ty_arg, ty_res) ->
+  | Mty_functor(param, ty_arg, ty_res) ->
         Functor_comps {
           fcomp_param = param;
           (* fcomp_arg must be prefixed eagerly, because it is interpreted
@@ -833,7 +883,7 @@ let rec components_of_module env sub path mty =
           fcomp_env = env;
           fcomp_subst = sub;
           fcomp_cache = Hashtbl.create 17 }
-  | Tmty_ident p ->
+  | Mty_ident p ->
         Structure_comps {
           comp_values = Tbl.empty; comp_annotations = Tbl.empty;
           comp_constrs = Tbl.empty; 
@@ -859,7 +909,7 @@ and check_usage loc id warn tbl =
   end;
 
 and store_value ?check id path decl env =
-  begin match check with Some f -> check_usage decl.val_loc id f value_declarations | None -> () end;
+  may (fun f -> check_usage decl.val_loc id f value_declarations) check;
   { env with
     values = EnvTbl.add id (path, decl) env.values;
     summary = Env_value(env.summary, id, decl) }
@@ -872,7 +922,8 @@ and store_annot id path annot env =
 
 and store_type id path info env =
   let loc = info.type_loc in
-  check_usage loc id (fun s -> Warnings.Unused_type_declaration s) type_declarations;
+  check_usage loc id (fun s -> Warnings.Unused_type_declaration s)
+    type_declarations;
   let constructors = constructors_of_type path info in
   let labels = labels_of_type path info in
 
@@ -881,7 +932,8 @@ and store_type id path info env =
   then begin
     let ty = Ident.name id in
     List.iter
-      (fun (c, _) ->
+      begin fun (c, _) ->
+        let c = Ident.name c in
         let k = (ty, loc, c) in
         if not (Hashtbl.mem used_constructors k) then
           let used = constructor_usages () in
@@ -892,18 +944,16 @@ and store_type id path info env =
                 if not used.cu_positive then
                   Location.prerr_warning loc
                     (Warnings.Unused_constructor
-                       (c, used.cu_pattern, used.cu_privatize)
-                    )
-              )
-      )
+                       (c, used.cu_pattern, used.cu_privatize)))
+      end
       constructors
   end;
   { env with
     constrs =
       List.fold_right
         (fun (name, descr) constrs ->
-          EnvTbl.add (Ident.create name) descr constrs)
-        constructors 
+          EnvTbl.add name (path_subst_last path name, descr) constrs)
+        constructors
         env.constrs;
 
     constrs_by_path = 
@@ -912,7 +962,7 @@ and store_type id path info env =
     labels =
       List.fold_right
         (fun (name, descr) labels ->
-          EnvTbl.add (Ident.create name) descr labels)
+          EnvTbl.add name (path_subst_last path name, descr) labels)
         labels
         env.labels;
     types = EnvTbl.add id (path, info) env.types;
@@ -950,7 +1000,8 @@ and store_exception id path decl env =
     end;
   end;
   { env with
-    constrs = EnvTbl.add id (Datarepr.exception_descr path decl) env.constrs;
+    constrs = EnvTbl.add id (path_subst_last path id,
+                             Datarepr.exception_descr path decl) env.constrs;
     summary = Env_exception(env.summary, id, decl) }
 
 and store_module id path mty env =
@@ -994,7 +1045,8 @@ let components_of_functor_appl f p1 p2 =
 
 let _ =
   components_of_module' := components_of_module;
-  components_of_functor_appl' := components_of_functor_appl
+  components_of_functor_appl' := components_of_functor_appl;
+  components_of_module_maker' := components_of_module_maker
 
 (* Insertion of bindings by identifier *)
 
@@ -1048,13 +1100,13 @@ and enter_cltype = enter store_cltype
 
 let add_item comp env =
   match comp with
-    Tsig_value(id, decl)     -> add_value id decl env
-  | Tsig_type(id, decl, _)   -> add_type id decl env
-  | Tsig_exception(id, decl) -> add_exception id decl env
-  | Tsig_module(id, mty, _)  -> add_module id mty env
-  | Tsig_modtype(id, decl)   -> add_modtype id decl env
-  | Tsig_class(id, decl, _)  -> add_class id decl env
-  | Tsig_cltype(id, decl, _) -> add_cltype id decl env
+    Sig_value(id, decl)     -> add_value id decl env
+  | Sig_type(id, decl, _)   -> add_type id decl env
+  | Sig_exception(id, decl) -> add_exception id decl env
+  | Sig_module(id, mty, _)  -> add_module id mty env
+  | Sig_modtype(id, decl)   -> add_modtype id decl env
+  | Sig_class(id, decl, _)  -> add_class id decl env
+  | Sig_class_type(id, decl, _) -> add_cltype id decl env
 
 let rec add_signature sg env =
   match sg with
@@ -1071,25 +1123,25 @@ let open_signature root sg env =
     List.fold_left2
       (fun env item p ->
         match item with
-          Tsig_value(id, decl) ->
+          Sig_value(id, decl) ->
             let e1 = store_value (Ident.hide id) p
                         (Subst.value_description sub decl) env
             in store_annot (Ident.hide id) p (Annot.Iref_external) e1
-        | Tsig_type(id, decl, _) ->
+        | Sig_type(id, decl, _) ->
             store_type (Ident.hide id) p
                        (Subst.type_declaration sub decl) env
-        | Tsig_exception(id, decl) ->
+        | Sig_exception(id, decl) ->
             store_exception (Ident.hide id) p
                             (Subst.exception_declaration sub decl) env
-        | Tsig_module(id, mty, _) ->
+        | Sig_module(id, mty, _) ->
             store_module (Ident.hide id) p (Subst.modtype sub mty) env
-        | Tsig_modtype(id, decl) ->
+        | Sig_modtype(id, decl) ->
             store_modtype (Ident.hide id) p
                           (Subst.modtype_declaration sub decl) env
-        | Tsig_class(id, decl, _) ->
+        | Sig_class(id, decl, _) ->
             store_class (Ident.hide id) p
                         (Subst.class_declaration sub decl) env
-        | Tsig_cltype(id, decl, _) ->
+        | Sig_class_type(id, decl, _) ->
             store_cltype (Ident.hide id) p
                          (Subst.cltype_declaration sub decl) env)
       env sg pl in
@@ -1101,8 +1153,9 @@ let open_pers_signature name env =
   let ps = find_pers_struct name in
   open_signature (Pident(Ident.create_persistent name)) ps.ps_sig env
 
-let open_signature ?(loc = Location.none) root sg env =
-  if not loc.Location.loc_ghost && Warnings.is_active (Warnings.Unused_open "") then begin
+let open_signature ?(loc = Location.none) ?(toplevel = false) root sg env =
+  if not toplevel && not loc.Location.loc_ghost && Warnings.is_active (Warnings.Unused_open "")
+  then begin
     let used = ref false in
     !add_delayed_check_forward
       (fun () ->
@@ -1110,8 +1163,8 @@ let open_signature ?(loc = Location.none) root sg env =
           Location.prerr_warning loc (Warnings.Unused_open (Path.name root))
       );
     EnvTbl.with_slot used (open_signature root sg) env
-  end else
-    open_signature root sg env
+  end
+  else open_signature root sg env
 
 (* Read a signature from a file *)
 
@@ -1140,29 +1193,29 @@ let save_signature_with_imports sg modname filename imports =
   let sg = Subst.signature (Subst.for_saving Subst.identity) sg in
   let oc = open_out_bin filename in
   try
-    output_string oc cmi_magic_number;
-    output_value oc (modname, sg);
-    flush oc;
-    let crc = Digest.file filename in
-    let crcs = (modname, crc) :: imports in
-    output_value oc crcs;
-    let flags = if !Clflags.recursive_types then [Rectypes] else [] in
-    output_value oc flags;
+    let cmi = {
+      cmi_name = modname;
+      cmi_sign = sg;
+      cmi_crcs = imports;
+      cmi_flags = if !Clflags.recursive_types then [Rectypes] else [];
+    } in
+    let crc = output_cmi filename oc cmi in
     close_out oc;
     (* Enter signature in persistent table so that imported_unit()
        will also return its crc *)
     let comps =
       components_of_module empty Subst.identity
-        (Pident(Ident.create_persistent modname)) (Tmty_signature sg) in
+        (Pident(Ident.create_persistent modname)) (Mty_signature sg) in
     let ps =
       { ps_name = modname;
         ps_sig = sg;
         ps_comps = comps;
-        ps_crcs = crcs;
+        ps_crcs = (cmi.cmi_name, crc) :: imports;
         ps_filename = filename;
-        ps_flags = flags } in
+        ps_flags = cmi.cmi_flags } in
     Hashtbl.add persistent_structures modname (Some ps);
-    Consistbl.set crc_units modname crc filename
+    Consistbl.set crc_units modname crc filename;
+    sg
   with exn ->
     close_out oc;
     remove_file filename;
@@ -1171,6 +1224,78 @@ let save_signature_with_imports sg modname filename imports =
 let save_signature sg modname filename =
   save_signature_with_imports sg modname filename (imported_units())
 
+(* Folding on environments *)
+let ident_tbl_fold f t acc =
+  List.fold_right
+    (fun key acc -> f key (EnvTbl.find_same_not_using key t) acc)
+    (EnvTbl.keys t)
+    acc
+
+let find_all proj1 proj2 f lid env acc =
+  match lid with
+    | None ->
+      ident_tbl_fold
+        (fun id (p, data) acc -> f (Ident.name id) p data acc)
+        (proj1 env) acc
+    | Some l ->
+      let p, desc = lookup_module_descr l env in
+      begin match EnvLazy.force components_of_module_maker desc with
+          Structure_comps c ->
+            Tbl.fold
+              (fun s (data, pos) acc -> f s (Pdot (p, s, pos)) data acc)
+              (proj2 c) acc
+        | Functor_comps _ ->
+          raise Not_found
+      end
+
+let fold_modules f lid env acc =
+  match lid with
+    | None ->
+      let acc =
+        ident_tbl_fold
+          (fun id (p, data) acc -> f (Ident.name id) p data acc)
+          env.modules
+          acc
+      in
+      Hashtbl.fold
+        (fun name ps acc ->
+          match ps with
+              None -> acc
+            | Some ps ->
+              f name (Pident(Ident.create_persistent name))
+                     (Mty_signature ps.ps_sig) acc)
+        persistent_structures
+        acc
+    | Some l ->
+      let p, desc = lookup_module_descr l env in
+      begin match EnvLazy.force components_of_module_maker desc with
+          Structure_comps c ->
+            Tbl.fold
+              (fun s (data, pos) acc ->
+                f s (Pdot (p, s, pos))
+                    (EnvLazy.force subst_modtype_maker data) acc)
+              c.comp_modules
+              acc
+        | Functor_comps _ ->
+          raise Not_found
+      end
+
+let fold_values f =
+  find_all (fun env -> env.values) (fun sc -> sc.comp_values) f
+and fold_constructors f =
+  find_all (fun env -> env.constrs) (fun sc -> sc.comp_constrs) f
+and fold_labels f =
+  find_all (fun env -> env.labels) (fun sc -> sc.comp_labels) f
+and fold_types f =
+  find_all (fun env -> env.types) (fun sc -> sc.comp_types) f
+and fold_modtypes f =
+  find_all (fun env -> env.modtypes) (fun sc -> sc.comp_modtypes) f
+and fold_classs f =
+  find_all (fun env -> env.classes) (fun sc -> sc.comp_classes) f
+and fold_cltypes f =
+  find_all (fun env -> env.cltypes) (fun sc -> sc.comp_cltypes) f
+
+
 (* Make the initial environment *)
 
 let initial = Predef.build_initial_env add_type add_exception empty
@@ -1184,13 +1309,6 @@ let summary env = env.summary
 open Format
 
 let report_error ppf = function
-  | Not_an_interface filename -> fprintf ppf
-      "%a@ is not a compiled interface" Location.print_filename filename
-  | Wrong_version_interface (filename, older_newer) -> fprintf ppf
-      "%a@ is not a compiled interface for this version of OCaml.@.\
-       It seems to be for %s version of OCaml." Location.print_filename filename older_newer
-  | Corrupted_interface filename -> fprintf ppf
-      "Corrupted compiled interface@ %a" Location.print_filename filename
   | Illegal_renaming(modname, filename) -> fprintf ppf
       "Wrong file naming: %a@ contains the compiled interface for@ %s"
       Location.print_filename filename modname
index 599daf88e3fba07db8efa8ff05345100661580ea..d8ca283776024bbcb8c90cc477e67cb13cbb9600 100644 (file)
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: env.mli 12542 2012-06-01 14:06:31Z frisch $ *)
 
 (* Environment handling *)
 
 open Types
 
+type summary =
+    Env_empty
+  | Env_value of summary * Ident.t * value_description
+  | Env_type of summary * Ident.t * type_declaration
+  | Env_exception of summary * Ident.t * exception_declaration
+  | Env_module of summary * Ident.t * module_type
+  | Env_modtype of summary * Ident.t * modtype_declaration
+  | Env_class of summary * Ident.t * class_declaration
+  | Env_cltype of summary * Ident.t * class_type_declaration
+  | Env_open of summary * Path.t
+
 type t
 
 val empty: t
@@ -25,12 +36,13 @@ val diff: t -> t -> Ident.t list
 (* Lookup by paths *)
 
 val find_value: Path.t -> t -> value_description
+val find_annot: Path.t -> t -> Annot.ident
 val find_type: Path.t -> t -> type_declaration
 val find_constructors: Path.t -> t -> constructor_description list
 val find_module: Path.t -> t -> module_type
 val find_modtype: Path.t -> t -> modtype_declaration
 val find_class: Path.t -> t -> class_declaration
-val find_cltype: Path.t -> t -> cltype_declaration
+val find_cltype: Path.t -> t -> class_type_declaration
 
 val find_type_expansion:
     ?level:int -> Path.t -> t -> type_expr list * type_expr * int option
@@ -50,24 +62,25 @@ val add_gadt_instance_chain: t -> int -> type_expr -> unit
 
 val lookup_value: Longident.t -> t -> Path.t * value_description
 val lookup_annot: Longident.t -> t -> Path.t * Annot.ident
-val lookup_constructor: Longident.t -> t -> constructor_description
-val lookup_label: Longident.t -> t -> label_description
+val lookup_constructor: Longident.t -> t -> Path.t * constructor_description
+val lookup_label: Longident.t -> t -> Path.t * label_description
 val lookup_type: Longident.t -> t -> Path.t * type_declaration
 val lookup_module: Longident.t -> t -> Path.t * module_type
 val lookup_modtype: Longident.t -> t -> Path.t * modtype_declaration
 val lookup_class: Longident.t -> t -> Path.t * class_declaration
-val lookup_cltype: Longident.t -> t -> Path.t * cltype_declaration
+val lookup_cltype: Longident.t -> t -> Path.t * class_type_declaration
 
 (* Insertion by identifier *)
 
-val add_value: ?check:(string -> Warnings.t) -> Ident.t -> value_description -> t -> t
+val add_value:
+    ?check:(string -> Warnings.t) -> Ident.t -> value_description -> t -> t
 val add_annot: Ident.t -> Annot.ident -> t -> t
 val add_type: Ident.t -> type_declaration -> t -> t
 val add_exception: Ident.t -> exception_declaration -> t -> t
 val add_module: Ident.t -> module_type -> t -> t
 val add_modtype: Ident.t -> modtype_declaration -> t -> t
 val add_class: Ident.t -> class_declaration -> t -> t
-val add_cltype: Ident.t -> cltype_declaration -> t -> t
+val add_cltype: Ident.t -> class_type_declaration -> t -> t
 val add_local_constraint: Ident.t -> type_declaration -> int -> t -> t
 
 (* Insertion of all fields of a signature. *)
@@ -78,18 +91,20 @@ val add_signature: signature -> t -> t
 (* Insertion of all fields of a signature, relative to the given path.
    Used to implement open. *)
 
-val open_signature: ?loc:Location.t -> Path.t -> signature -> t -> t
+val open_signature: ?loc:Location.t -> ?toplevel:bool -> Path.t -> signature -> t -> t
 val open_pers_signature: string -> t -> t
 
 (* Insertion by name *)
 
-val enter_value: ?check:(string -> Warnings.t) -> string -> value_description -> t -> Ident.t * t
+val enter_value:
+    ?check:(string -> Warnings.t) ->
+    string -> value_description -> t -> Ident.t * t
 val enter_type: string -> type_declaration -> t -> Ident.t * t
 val enter_exception: string -> exception_declaration -> t -> Ident.t * t
 val enter_module: string -> module_type -> t -> Ident.t * t
 val enter_modtype: string -> modtype_declaration -> t -> Ident.t * t
 val enter_class: string -> class_declaration -> t -> Ident.t * t
-val enter_cltype: string -> cltype_declaration -> t -> Ident.t * t
+val enter_cltype: string -> class_type_declaration -> t -> Ident.t * t
 
 (* Initialize the cache of in-core module interfaces. *)
 val reset_cache: unit -> unit
@@ -102,10 +117,10 @@ val set_unit_name: string -> unit
 
 val read_signature: string -> string -> signature
         (* Arguments: module name, file name. Results: signature. *)
-val save_signature: signature -> string -> string -> unit
+val save_signature: signature -> string -> string -> signature
         (* Arguments: signature, module name, file name. *)
 val save_signature_with_imports:
-            signature -> string -> string -> (string * Digest.t) list -> unit
+    signature -> string -> string -> (string * Digest.t) list -> signature
         (* Arguments: signature, module name, file name,
            imported units with their CRCs. *)
 
@@ -124,25 +139,11 @@ val crc_units: Consistbl.t
 (* Summaries -- compact representation of an environment, to be
    exported in debugging information. *)
 
-type summary =
-    Env_empty
-  | Env_value of summary * Ident.t * value_description
-  | Env_type of summary * Ident.t * type_declaration
-  | Env_exception of summary * Ident.t * exception_declaration
-  | Env_module of summary * Ident.t * module_type
-  | Env_modtype of summary * Ident.t * modtype_declaration
-  | Env_class of summary * Ident.t * class_declaration
-  | Env_cltype of summary * Ident.t * cltype_declaration
-  | Env_open of summary * Path.t
-
 val summary: t -> summary
 
 (* Error report *)
 
 type error =
-    Not_an_interface of string
-  | Wrong_version_interface of string * string
-  | Corrupted_interface of string
   | Illegal_renaming of string * string
   | Inconsistent_import of string * string * string
   | Need_recursive_types of string * string
@@ -157,18 +158,56 @@ val report_error: formatter -> error -> unit
 val mark_value_used: string -> value_description -> unit
 val mark_type_used: string -> type_declaration -> unit
 
-type constructor_usage = [`Positive|`Pattern|`Privatize]
-val mark_constructor_used: constructor_usage -> string -> type_declaration -> string -> unit
-val mark_constructor: constructor_usage -> t -> string -> constructor_description -> unit
-val mark_exception_used: constructor_usage -> exception_declaration -> string -> unit
+type constructor_usage = Positive | Pattern | Privatize
+val mark_constructor_used:
+    constructor_usage -> string -> type_declaration -> string -> unit
+val mark_constructor:
+    constructor_usage -> t -> string -> constructor_description -> unit
+val mark_exception_used:
+    constructor_usage -> exception_declaration -> string -> unit
 
 val in_signature: t -> t
 
-val set_value_used_callback: string -> value_description -> (unit -> unit) -> unit
-val set_type_used_callback: string -> type_declaration -> ((unit -> unit) -> unit) -> unit
+val set_value_used_callback:
+    string -> value_description -> (unit -> unit) -> unit
+val set_type_used_callback:
+    string -> type_declaration -> ((unit -> unit) -> unit) -> unit
 
 (* Forward declaration to break mutual recursion with Includemod. *)
 val check_modtype_inclusion:
       (t -> module_type -> Path.t -> module_type -> unit) ref
 (* Forward declaration to break mutual recursion with Typecore. *)
 val add_delayed_check_forward: ((unit -> unit) -> unit) ref
+
+(** Folding over all identifiers (for analysis purpose) *)
+
+val fold_values:
+  (string -> Path.t -> Types.value_description -> 'a -> 'a) ->
+  Longident.t option -> t -> 'a -> 'a
+val fold_types:
+  (string -> Path.t -> Types.type_declaration -> 'a -> 'a) ->
+  Longident.t option -> t -> 'a -> 'a
+val fold_constructors:
+  (string -> Path.t -> Types.constructor_description -> 'a -> 'a) ->
+  Longident.t option -> t -> 'a -> 'a
+val fold_labels:
+  (string -> Path.t -> Types.label_description -> 'a -> 'a) ->
+  Longident.t option -> t -> 'a -> 'a
+
+(** Persistent structures are only traversed if they are already loaded. *)
+val fold_modules:
+  (string -> Path.t -> Types.module_type -> 'a -> 'a) ->
+  Longident.t option -> t -> 'a -> 'a
+
+val fold_modtypes:
+  (string -> Path.t -> Types.modtype_declaration -> 'a -> 'a) ->
+  Longident.t option -> t -> 'a -> 'a
+val fold_classs:
+  (string -> Path.t -> Types.class_declaration -> 'a -> 'a) ->
+  Longident.t option -> t -> 'a -> 'a
+val fold_cltypes:
+  (string -> Path.t -> Types.class_type_declaration -> 'a -> 'a) ->
+  Longident.t option -> t -> 'a -> 'a
+
+
+
index 4196bb8338fd9ade0f91e7ed8742d22089a641c1..aaf5aaad3fc5b5a4530d4d5b5285fa9ce6905e0e 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: ident.ml 11156 2011-07-27 14:17:02Z doligez $ *)
 
 open Format
 
index e26490a9c31f3cda0a7b0e2ee1bbd53cf30d230b..c7d2a07178130db633d4b2c952d14377a9efc1c1 100644 (file)
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: ident.mli 12511 2012-05-30 13:29:48Z lefessan $ *)
 
 (* Identifiers (unique names) *)
 
-type t
+type t = { stamp: int; name: string; mutable flags: int }
 
 val create: string -> t
 val create_persistent: string -> t
index 8dc35115ead91d7c3c502c60e0aae072cffd1a82..90e494ebeefebbe7526b48a80068f774afb05864 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: includeclass.ml 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (* Inclusion checks for the class language *)
 
index f5bc98a032b7c6c37eeae849e06543c5591b40bc..72169a73251e502ddb6647c1fa11760cc610d717 100644 (file)
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: includeclass.mli 12511 2012-05-30 13:29:48Z lefessan $ *)
 
 (* Inclusion checks for the class language *)
 
 open Types
-open Typedtree
 open Ctype
 open Format
 
 val class_types:
         Env.t -> class_type -> class_type -> class_match_failure list
 val class_type_declarations:
-        Env.t -> cltype_declaration -> cltype_declaration ->
+        Env.t -> class_type_declaration -> class_type_declaration ->
         class_match_failure list
 val class_declarations:
         Env.t -> class_declaration -> class_declaration ->
index 55113e1b07447bdf900faaa7099ea2b9f93beeb0..711a809d0b6a16d296942da6f3ba3cb1eb871891 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: includecore.ml 12520 2012-05-31 07:41:37Z garrigue $ *)
 
 (* Inclusion checks for the core language *)
 
@@ -118,11 +118,11 @@ type type_mismatch =
   | Constraint
   | Manifest
   | Variance
-  | Field_type of string
-  | Field_mutable of string
-  | Field_arity of string
-  | Field_names of int * string * string
-  | Field_missing of bool * string
+  | Field_type of Ident.t
+  | Field_mutable of Ident.t
+  | Field_arity of Ident.t
+  | Field_names of int * Ident.t * Ident.t
+  | Field_missing of bool * Ident.t
   | Record_representation of bool
 
 let nth n =
@@ -141,17 +141,17 @@ let report_type_mismatch0 first second decl ppf err =
   | Manifest -> ()
   | Variance -> pr "Their variances do not agree"
   | Field_type s ->
-      pr "The types for field %s are not equal" s
+      pr "The types for field %s are not equal" (Ident.name s)
   | Field_mutable s ->
-      pr "The mutability of field %s is different" s
+      pr "The mutability of field %s is different" (Ident.name s)
   | Field_arity s ->
-      pr "The arities for field %s differ" s
+      pr "The arities for field %s differ" (Ident.name s)
   | Field_names (n, name1, name2) ->
       pr "Their %s fields have different names, %s and %s"
-        (nth n) name1 name2
+        (nth n) (Ident.name name1) (Ident.name name2)
   | Field_missing (b, s) ->
       pr "The field %s is only present in %s %s"
-        s (if b then second else first) decl
+        (Ident.name s) (if b then second else first) decl
   | Record_representation b ->
       pr "Their internal representations differ:@ %s %s %s"
         (if b then second else first) decl
@@ -169,50 +169,58 @@ let rec compare_variants env decl1 decl2 n cstrs1 cstrs2 =
   | [], (cstr2,_,_)::_ -> [Field_missing (true, cstr2)]
   | (cstr1,_,_)::_, [] -> [Field_missing (false, cstr1)]
   | (cstr1, arg1, ret1)::rem1, (cstr2, arg2,ret2)::rem2 ->
-      if cstr1 <> cstr2 then [Field_names (n, cstr1, cstr2)] else
-      if List.length arg1 <> List.length arg2 then [Field_arity cstr1] else
-      match ret1, ret2 with
-      | Some r1, Some r2 when not (Ctype.equal env true [r1] [r2]) -> 
+      if Ident.name cstr1 <> Ident.name cstr2 then
+        [Field_names (n, cstr1, cstr2)]
+      else if List.length arg1 <> List.length arg2 then
+        [Field_arity cstr1]
+      else match ret1, ret2 with
+      | Some r1, Some r2 when not (Ctype.equal env true [r1] [r2]) ->
          [Field_type cstr1]
       | Some _, None | None, Some _ ->
          [Field_type cstr1]
-      | _ ->      
+      | _ ->
          if Misc.for_all2
              (fun ty1 ty2 ->
                Ctype.equal env true (ty1::decl1.type_params)
                  (ty2::decl2.type_params))
-             (arg1) (arg2) 
-         then 
+             (arg1) (arg2)
+         then
            compare_variants env decl1 decl2 (n+1) rem1 rem2
          else [Field_type cstr1]
-             
-           
+
+
 let rec compare_records env decl1 decl2 n labels1 labels2 =
   match labels1, labels2 with
     [], []           -> []
   | [], (lab2,_,_)::_ -> [Field_missing (true, lab2)]
   | (lab1,_,_)::_, [] -> [Field_missing (false, lab1)]
   | (lab1, mut1, arg1)::rem1, (lab2, mut2, arg2)::rem2 ->
-      if lab1 <> lab2 then [Field_names (n, lab1, lab2)] else
-      if mut1 <> mut2 then [Field_mutable lab1] else
+      if Ident.name lab1 <> Ident.name lab2
+      then [Field_names (n, lab1, lab2)]
+      else if mut1 <> mut2 then [Field_mutable lab1] else
       if Ctype.equal env true (arg1::decl1.type_params)
                               (arg2::decl2.type_params)
       then compare_records env decl1 decl2 (n+1) rem1 rem2
       else [Field_type lab1]
 
-let type_declarations env name decl1 id decl2 =
+let type_declarations ?(equality = false) env name decl1 id decl2 =
   if decl1.type_arity <> decl2.type_arity then [Arity] else
   if not (private_flags decl1 decl2) then [Privacy] else
   let err = match (decl1.type_kind, decl2.type_kind) with
       (_, Type_abstract) -> []
     | (Type_variant cstrs1, Type_variant cstrs2) ->
+        let mark cstrs usage name decl =
+          List.iter
+            (fun (c, _, _) ->
+              Env.mark_constructor_used usage name decl (Ident.name c))
+            cstrs
+        in
         let usage =
           if decl1.type_private = Private || decl2.type_private = Public
-          then `Positive else `Privatize
+          then Env.Positive else Env.Privatize
         in
-        List.iter
-          (fun (c, _, _) -> Env.mark_constructor_used usage name decl1 c)
-          cstrs1;
+        mark cstrs1 usage name decl1;
+        if equality then mark cstrs2 Env.Positive (Ident.name id) decl2;
         compare_variants env decl1 decl2 1 cstrs1 cstrs2
     | (Type_record(labels1,rep1), Type_record(labels2,rep2)) ->
         let err = compare_records env decl1 decl2 1 labels1 labels2 in
@@ -255,7 +263,8 @@ let type_declarations env name decl1 id decl2 =
 (* Inclusion between exception declarations *)
 
 let exception_declarations env ed1 ed2 =
-  Misc.for_all2 (fun ty1 ty2 -> Ctype.equal env false [ty1] [ty2]) ed1.exn_args ed2.exn_args
+  Misc.for_all2 (fun ty1 ty2 -> Ctype.equal env false [ty1] [ty2])
+    ed1.exn_args ed2.exn_args
 
 (* Inclusion between class types *)
 let encode_val (mut, ty) rem =
index 17515a8e205f6b6f4643418f8c3db72a67044874..26ce7b3966a70cb147512a23d313425837064f3a 100644 (file)
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: includecore.mli 12511 2012-05-30 13:29:48Z lefessan $ *)
 
 (* Inclusion checks for the core language *)
 
-open Types
 open Typedtree
+open Types
 
 exception Dont_match
 
@@ -26,18 +26,19 @@ type type_mismatch =
   | Constraint
   | Manifest
   | Variance
-  | Field_type of string
-  | Field_mutable of string
-  | Field_arity of string
-  | Field_names of int * string * string
-  | Field_missing of bool * string
+  | Field_type of Ident.t
+  | Field_mutable of Ident.t
+  | Field_arity of Ident.t
+  | Field_names of int * Ident.t * Ident.t
+  | Field_missing of bool * Ident.t
   | Record_representation of bool
 
 val value_descriptions:
     Env.t -> value_description -> value_description -> module_coercion
 val type_declarations:
-    Env.t -> string ->
-    type_declaration -> Ident.t -> type_declaration -> type_mismatch list
+    ?equality:bool ->
+      Env.t -> string ->
+        type_declaration -> Ident.t -> type_declaration -> type_mismatch list
 val exception_declarations:
     Env.t -> exception_declaration -> exception_declaration -> bool
 (*
index bc981ddefcdafbc9751fc70d3e1483e57fd4bcdc..985afb549c8f77c33758cec80b4bb233022257cf 100644 (file)
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: includemod.ml 12520 2012-05-31 07:41:37Z garrigue $ *)
 
 (* Inclusion checks for the module language *)
 
 open Misc
 open Path
-open Types
 open Typedtree
+open Types
 
 type symptom =
     Missing_field of Ident.t
@@ -31,7 +31,7 @@ type symptom =
   | Modtype_permutation
   | Interface_mismatch of string * string
   | Class_type_declarations of
-      Ident.t * cltype_declaration * cltype_declaration *
+      Ident.t * class_type_declaration * class_type_declaration *
       Ctype.class_match_failure list
   | Class_declarations of
       Ident.t * class_declaration * class_declaration *
@@ -69,7 +69,7 @@ let type_declarations env cxt subst id decl1 decl2 =
 (* Inclusion between exception declarations *)
 
 let exception_declarations env cxt subst id decl1 decl2 =
-  Env.mark_exception_used `Positive decl1 (Ident.name id);
+  Env.mark_exception_used Env.Positive decl1 (Ident.name id);
   let decl2 = Subst.exception_declaration subst decl2 in
   if Includecore.exception_declarations env decl1 decl2
   then ()
@@ -112,13 +112,13 @@ type field_desc =
   | Field_classtype of string
 
 let item_ident_name = function
-    Tsig_value(id, _) -> (id, Field_value(Ident.name id))
-  | Tsig_type(id, _, _) -> (id, Field_type(Ident.name id))
-  | Tsig_exception(id, _) -> (id, Field_exception(Ident.name id))
-  | Tsig_module(id, _, _) -> (id, Field_module(Ident.name id))
-  | Tsig_modtype(id, _) -> (id, Field_modtype(Ident.name id))
-  | Tsig_class(id, _, _) -> (id, Field_class(Ident.name id))
-  | Tsig_cltype(id, _, _) -> (id, Field_classtype(Ident.name id))
+    Sig_value(id, _) -> (id, Field_value(Ident.name id))
+  | Sig_type(id, _, _) -> (id, Field_type(Ident.name id))
+  | Sig_exception(id, _) -> (id, Field_exception(Ident.name id))
+  | Sig_module(id, _, _) -> (id, Field_module(Ident.name id))
+  | Sig_modtype(id, _) -> (id, Field_modtype(Ident.name id))
+  | Sig_class(id, _, _) -> (id, Field_class(Ident.name id))
+  | Sig_class_type(id, _, _) -> (id, Field_classtype(Ident.name id))
 
 (* Simplify a structure coercion *)
 
@@ -148,13 +148,13 @@ let rec modtypes env cxt subst mty1 mty2 =
 
 and try_modtypes env cxt subst mty1 mty2 =
   match (mty1, mty2) with
-    (_, Tmty_ident p2) ->
+    (_, Mty_ident p2) ->
       try_modtypes2 env cxt mty1 (Subst.modtype subst mty2)
-  | (Tmty_ident p1, _) ->
+  | (Mty_ident p1, _) ->
       try_modtypes env cxt subst (expand_module_path env cxt p1) mty2
-  | (Tmty_signature sig1, Tmty_signature sig2) ->
+  | (Mty_signature sig1, Mty_signature sig2) ->
       signatures env cxt subst sig1 sig2
-  | (Tmty_functor(param1, arg1, res1), Tmty_functor(param2, arg2, res2)) ->
+  | (Mty_functor(param1, arg1, res1), Mty_functor(param2, arg2, res2)) ->
       let arg2' = Subst.modtype subst arg2 in
       let cc_arg = modtypes env (Arg param1::cxt) Subst.identity arg2' arg1 in
       let cc_res =
@@ -170,9 +170,9 @@ and try_modtypes env cxt subst mty1 mty2 =
 and try_modtypes2 env cxt mty1 mty2 =
   (* mty2 is an identifier *)
   match (mty1, mty2) with
-    (Tmty_ident p1, Tmty_ident p2) when Path.same p1 p2 ->
+    (Mty_ident p1, Mty_ident p2) when Path.same p1 p2 ->
       Tcoerce_none
-  | (_, Tmty_ident p2) ->
+  | (_, Mty_ident p2) ->
       try_modtypes env cxt Subst.identity mty1 (expand_module_path env cxt p2)
   | (_, _) ->
       assert false
@@ -191,14 +191,14 @@ and signatures env cxt subst sig1 sig2 =
         let (id, name) = item_ident_name item in
         let nextpos =
           match item with
-            Tsig_value(_,{val_kind = Val_prim _})
-          | Tsig_type(_,_,_)
-          | Tsig_modtype(_,_)
-          | Tsig_cltype(_,_,_) -> pos
-          | Tsig_value(_,_)
-          | Tsig_exception(_,_)
-          | Tsig_module(_,_,_)
-          | Tsig_class(_, _,_) -> pos+1 in
+            Sig_value(_,{val_kind = Val_prim _})
+          | Sig_type(_,_,_)
+          | Sig_modtype(_,_)
+          | Sig_class_type(_,_,_) -> pos
+          | Sig_value(_,_)
+          | Sig_exception(_,_)
+          | Sig_module(_,_,_)
+          | Sig_class(_, _,_) -> pos+1 in
         build_component_table nextpos
                               (Tbl.add name (id, item, pos) tbl) rem in
   let comps1 =
@@ -218,7 +218,7 @@ and signatures env cxt subst sig1 sig2 =
         let (id2, name2) = item_ident_name item2 in
         let name2, report =
           match item2, name2 with
-            Tsig_type (_, {type_manifest=None}, _), Field_type s
+            Sig_type (_, {type_manifest=None}, _), Field_type s
             when let l = String.length s in
             l >= 4 && String.sub s (l-4) 4 = "#row" ->
               (* Do not report in case of failure,
@@ -230,13 +230,13 @@ and signatures env cxt subst sig1 sig2 =
           let (id1, item1, pos1) = Tbl.find name2 comps1 in
           let new_subst =
             match item2 with
-              Tsig_type _ ->
+              Sig_type _ ->
                 Subst.add_type id2 (Pident id1) subst
-            | Tsig_module _ ->
+            | Sig_module _ ->
                 Subst.add_module id2 (Pident id1) subst
-            | Tsig_modtype _ ->
-                Subst.add_modtype id2 (Tmty_ident (Pident id1)) subst
-            | Tsig_value _ | Tsig_exception _ | Tsig_class _ | Tsig_cltype _ ->
+            | Sig_modtype _ ->
+                Subst.add_modtype id2 (Mty_ident (Pident id1)) subst
+            | Sig_value _ | Sig_exception _ | Sig_class _ | Sig_class_type _ ->
                 subst
           in
           pair_components new_subst
@@ -253,31 +253,32 @@ and signatures env cxt subst sig1 sig2 =
 
 and signature_components env cxt subst = function
     [] -> []
-  | (Tsig_value(id1, valdecl1), Tsig_value(id2, valdecl2), pos) :: rem ->
+  | (Sig_value(id1, valdecl1), Sig_value(id2, valdecl2), pos) :: rem ->
       let cc = value_descriptions env cxt subst id1 valdecl1 valdecl2 in
       begin match valdecl2.val_kind with
         Val_prim p -> signature_components env cxt subst rem
       | _ -> (pos, cc) :: signature_components env cxt subst rem
       end
-  | (Tsig_type(id1, tydecl1, _), Tsig_type(id2, tydecl2, _), pos) :: rem ->
+  | (Sig_type(id1, tydecl1, _), Sig_type(id2, tydecl2, _), pos) :: rem ->
       type_declarations env cxt subst id1 tydecl1 tydecl2;
       signature_components env cxt subst rem
-  | (Tsig_exception(id1, excdecl1), Tsig_exception(id2, excdecl2), pos)
+  | (Sig_exception(id1, excdecl1), Sig_exception(id2, excdecl2), pos)
     :: rem ->
       exception_declarations env cxt subst id1 excdecl1 excdecl2;
       (pos, Tcoerce_none) :: signature_components env cxt subst rem
-  | (Tsig_module(id1, mty1, _), Tsig_module(id2, mty2, _), pos) :: rem ->
+  | (Sig_module(id1, mty1, _), Sig_module(id2, mty2, _), pos) :: rem ->
       let cc =
         modtypes env (Module id1::cxt) subst
           (Mtype.strengthen env mty1 (Pident id1)) mty2 in
       (pos, cc) :: signature_components env cxt subst rem
-  | (Tsig_modtype(id1, info1), Tsig_modtype(id2, info2), pos) :: rem ->
+  | (Sig_modtype(id1, info1), Sig_modtype(id2, info2), pos) :: rem ->
       modtype_infos env cxt subst id1 info1 info2;
       signature_components env cxt subst rem
-  | (Tsig_class(id1, decl1, _), Tsig_class(id2, decl2, _), pos) :: rem ->
+  | (Sig_class(id1, decl1, _), Sig_class(id2, decl2, _), pos) :: rem ->
       class_declarations env cxt subst id1 decl1 decl2;
       (pos, Tcoerce_none) :: signature_components env cxt subst rem
-  | (Tsig_cltype(id1, info1, _), Tsig_cltype(id2, info2, _), pos) :: rem ->
+  | (Sig_class_type(id1, info1, _),
+     Sig_class_type(id2, info2, _), pos) :: rem ->
       class_type_declarations env cxt subst id1 info1 info2;
       signature_components env cxt subst rem
   | _ ->
@@ -290,12 +291,12 @@ and modtype_infos env cxt subst id info1 info2 =
   let cxt' = Modtype id :: cxt in
   try
     match (info1, info2) with
-      (Tmodtype_abstract, Tmodtype_abstract) -> ()
-    | (Tmodtype_manifest mty1, Tmodtype_abstract) -> ()
-    | (Tmodtype_manifest mty1, Tmodtype_manifest mty2) ->
+      (Modtype_abstract, Modtype_abstract) -> ()
+    | (Modtype_manifest mty1, Modtype_abstract) -> ()
+    | (Modtype_manifest mty1, Modtype_manifest mty2) ->
         check_modtype_equiv env cxt' mty1 mty2
-    | (Tmodtype_abstract, Tmodtype_manifest mty2) ->
-        check_modtype_equiv env cxt' (Tmty_ident(Pident id)) mty2
+    | (Modtype_abstract, Modtype_manifest mty2) ->
+        check_modtype_equiv env cxt' (Mty_ident(Pident id)) mty2
   with Error reasons ->
     raise(Error((cxt, Modtype_infos(id, info1, info2)) :: reasons))
 
index c1c9c1f0c091279e1ad38285ff669733a7d209eb..347b19826af5ab35cefe8ce93bf5dd334ec9a78b 100644 (file)
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: includemod.mli 12511 2012-05-30 13:29:48Z lefessan $ *)
 
 (* Inclusion checks for the module language *)
 
-open Types
 open Typedtree
+open Types
 open Format
 
 val modtypes: Env.t -> module_type -> module_type -> module_coercion
@@ -36,7 +36,7 @@ type symptom =
   | Modtype_permutation
   | Interface_mismatch of string * string
   | Class_type_declarations of
-      Ident.t * cltype_declaration * cltype_declaration *
+      Ident.t * class_type_declaration * class_type_declaration *
       Ctype.class_match_failure list
   | Class_declarations of
       Ident.t * class_declaration * class_declaration *
index 5700b59e0eb4e4b3f4465c5132434656cc3327d4..2e5fd28fd0bdc229ac8f8d80c0c810c2bac96ccc 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: mtype.ml 12511 2012-05-30 13:29:48Z lefessan $ *)
 
 (* Operations on module types *)
 
@@ -21,7 +21,7 @@ open Types
 
 let rec scrape env mty =
   match mty with
-    Tmty_ident p ->
+    Mty_ident p ->
       begin try
         scrape env (Env.find_modtype_expansion p env)
       with Not_found ->
@@ -34,19 +34,19 @@ let freshen mty =
 
 let rec strengthen env mty p =
   match scrape env mty with
-    Tmty_signature sg ->
-      Tmty_signature(strengthen_sig env sg p)
-  | Tmty_functor(param, arg, res) when !Clflags.applicative_functors ->
-      Tmty_functor(param, arg, strengthen env res (Papply(p, Pident param)))
+    Mty_signature sg ->
+      Mty_signature(strengthen_sig env sg p)
+  | Mty_functor(param, arg, res) when !Clflags.applicative_functors ->
+      Mty_functor(param, arg, strengthen env res (Papply(p, Pident param)))
   | mty ->
       mty
 
 and strengthen_sig env sg p =
   match sg with
     [] -> []
-  | (Tsig_value(id, desc) as sigelt) :: rem ->
+  | (Sig_value(id, desc) as sigelt) :: rem ->
       sigelt :: strengthen_sig env rem p
-  | Tsig_type(id, decl, rs) :: rem ->
+  | Sig_type(id, decl, rs) :: rem ->
       let newdecl =
         match decl.type_manifest, decl.type_private, decl.type_kind with
           Some _, Public, _ -> decl
@@ -60,26 +60,26 @@ and strengthen_sig env sg p =
             else
               { decl with type_manifest = manif }
       in
-      Tsig_type(id, newdecl, rs) :: strengthen_sig env rem p
-  | (Tsig_exception(id, d) as sigelt) :: rem ->
+      Sig_type(id, newdecl, rs) :: strengthen_sig env rem p
+  | (Sig_exception(id, d) as sigelt) :: rem ->
       sigelt :: strengthen_sig env rem p
-  | Tsig_module(id, mty, rs) :: rem ->
-      Tsig_module(id, strengthen env mty (Pdot(p, Ident.name id, nopos)), rs)
+  | Sig_module(id, mty, rs) :: rem ->
+      Sig_module(id, strengthen env mty (Pdot(p, Ident.name id, nopos)), rs)
       :: strengthen_sig (Env.add_module id mty env) rem p
       (* Need to add the module in case it defines manifest module types *)
-  | Tsig_modtype(id, decl) :: rem ->
+  | Sig_modtype(id, decl) :: rem ->
       let newdecl =
         match decl with
-          Tmodtype_abstract ->
-            Tmodtype_manifest(Tmty_ident(Pdot(p, Ident.name id, nopos)))
-        | Tmodtype_manifest _ ->
+          Modtype_abstract ->
+            Modtype_manifest(Mty_ident(Pdot(p, Ident.name id, nopos)))
+        | Modtype_manifest _ ->
             decl in
-      Tsig_modtype(id, newdecl) ::
+      Sig_modtype(id, newdecl) ::
       strengthen_sig (Env.add_modtype id decl env) rem p
       (* Need to add the module type in case it is manifest *)
-  | (Tsig_class(id, decl, rs) as sigelt) :: rem ->
+  | (Sig_class(id, decl, rs) as sigelt) :: rem ->
       sigelt :: strengthen_sig env rem p
-  | (Tsig_cltype(id, decl, rs) as sigelt) :: rem ->
+  | (Sig_class_type(id, decl, rs) as sigelt) :: rem ->
       sigelt :: strengthen_sig env rem p
 
 (* In nondep_supertype, env is only used for the type it assigns to id.
@@ -92,16 +92,16 @@ let nondep_supertype env mid mty =
 
   let rec nondep_mty env va mty =
     match mty with
-      Tmty_ident p ->
+      Mty_ident p ->
         if Path.isfree mid p then
           nondep_mty env va (Env.find_modtype_expansion p env)
         else mty
-    | Tmty_signature sg ->
-        Tmty_signature(nondep_sig env va sg)
-    | Tmty_functor(param, arg, res) ->
+    | Mty_signature sg ->
+        Mty_signature(nondep_sig env va sg)
+    | Mty_functor(param, arg, res) ->
         let var_inv =
           match va with Co -> Contra | Contra -> Co | Strict -> Strict in
-        Tmty_functor(param, nondep_mty env var_inv arg,
+        Mty_functor(param, nondep_mty env var_inv arg,
                      nondep_mty (Env.add_module param arg env) va res)
 
   and nondep_sig env va = function
@@ -109,38 +109,38 @@ let nondep_supertype env mid mty =
   | item :: rem ->
       let rem' = nondep_sig env va rem in
       match item with
-        Tsig_value(id, d) ->
-          Tsig_value(id, {val_type = Ctype.nondep_type env mid d.val_type;
+        Sig_value(id, d) ->
+          Sig_value(id, {val_type = Ctype.nondep_type env mid d.val_type;
                           val_kind = d.val_kind;
                           val_loc = d.val_loc;
-                         }) :: rem'
-      | Tsig_type(id, d, rs) ->
-          Tsig_type(id, Ctype.nondep_type_decl env mid id (va = Co) d, rs)
+                        }) :: rem'
+      | Sig_type(id, d, rs) ->
+          Sig_type(id, Ctype.nondep_type_decl env mid id (va = Co) d, rs)
           :: rem'
-      | Tsig_exception(id, d) ->
+      | Sig_exception(id, d) ->
           let d = {exn_args = List.map (Ctype.nondep_type env mid) d.exn_args;
                    exn_loc = d.exn_loc} in
-          Tsig_exception(id, d) :: rem'
-      | Tsig_module(id, mty, rs) ->
-          Tsig_module(id, nondep_mty env va mty, rs) :: rem'
-      | Tsig_modtype(id, d) ->
+          Sig_exception(id, d) :: rem'
+      | Sig_module(id, mty, rs) ->
+          Sig_module(id, nondep_mty env va mty, rs) :: rem'
+      | Sig_modtype(id, d) ->
           begin try
-            Tsig_modtype(id, nondep_modtype_decl env d) :: rem'
+            Sig_modtype(id, nondep_modtype_decl env d) :: rem'
           with Not_found ->
             match va with
-              Co -> Tsig_modtype(id, Tmodtype_abstract) :: rem'
+              Co -> Sig_modtype(id, Modtype_abstract) :: rem'
             | _  -> raise Not_found
           end
-      | Tsig_class(id, d, rs) ->
-          Tsig_class(id, Ctype.nondep_class_declaration env mid d, rs)
+      | Sig_class(id, d, rs) ->
+          Sig_class(id, Ctype.nondep_class_declaration env mid d, rs)
           :: rem'
-      | Tsig_cltype(id, d, rs) ->
-          Tsig_cltype(id, Ctype.nondep_cltype_declaration env mid d, rs)
+      | Sig_class_type(id, d, rs) ->
+          Sig_class_type(id, Ctype.nondep_cltype_declaration env mid d, rs)
           :: rem'
 
   and nondep_modtype_decl env = function
-      Tmodtype_abstract -> Tmodtype_abstract
-    | Tmodtype_manifest mty -> Tmodtype_manifest(nondep_mty env Strict mty)
+      Modtype_abstract -> Modtype_abstract
+    | Modtype_manifest mty -> Modtype_manifest(nondep_mty env Strict mty)
 
   in
     nondep_mty env Co mty
@@ -160,62 +160,62 @@ let enrich_typedecl env p decl =
 
 let rec enrich_modtype env p mty =
   match mty with
-    Tmty_signature sg ->
-      Tmty_signature(List.map (enrich_item env p) sg)
+    Mty_signature sg ->
+      Mty_signature(List.map (enrich_item env p) sg)
   | _ ->
       mty
 
 and enrich_item env p = function
-    Tsig_type(id, decl, rs) ->
-      Tsig_type(id,
+    Sig_type(id, decl, rs) ->
+      Sig_type(id,
                 enrich_typedecl env (Pdot(p, Ident.name id, nopos)) decl, rs)
-  | Tsig_module(id, mty, rs) ->
-      Tsig_module(id,
+  | Sig_module(id, mty, rs) ->
+      Sig_module(id,
                   enrich_modtype env (Pdot(p, Ident.name id, nopos)) mty, rs)
   | item -> item
 
 let rec type_paths env p mty =
   match scrape env mty with
-    Tmty_ident p -> []
-  | Tmty_signature sg -> type_paths_sig env p 0 sg
-  | Tmty_functor(param, arg, res) -> []
+    Mty_ident p -> []
+  | Mty_signature sg -> type_paths_sig env p 0 sg
+  | Mty_functor(param, arg, res) -> []
 
 and type_paths_sig env p pos sg =
   match sg with
     [] -> []
-  | Tsig_value(id, decl) :: rem ->
+  | Sig_value(id, decl) :: rem ->
       let pos' = match decl.val_kind with Val_prim _ -> pos | _ -> pos + 1 in
       type_paths_sig env p pos' rem
-  | Tsig_type(id, decl, _) :: rem ->
+  | Sig_type(id, decl, _) :: rem ->
       Pdot(p, Ident.name id, nopos) :: type_paths_sig env p pos rem
-  | Tsig_module(id, mty, _) :: rem ->
+  | Sig_module(id, mty, _) :: rem ->
       type_paths env (Pdot(p, Ident.name id, pos)) mty @
       type_paths_sig (Env.add_module id mty env) p (pos+1) rem
-  | Tsig_modtype(id, decl) :: rem ->
+  | Sig_modtype(id, decl) :: rem ->
       type_paths_sig (Env.add_modtype id decl env) p pos rem
-  | (Tsig_exception _ | Tsig_class _) :: rem ->
+  | (Sig_exception _ | Sig_class _) :: rem ->
       type_paths_sig env p (pos+1) rem
-  | (Tsig_cltype _) :: rem ->
+  | (Sig_class_type _) :: rem ->
       type_paths_sig env p pos rem
 
 let rec no_code_needed env mty =
   match scrape env mty with
-    Tmty_ident p -> false
-  | Tmty_signature sg -> no_code_needed_sig env sg
-  | Tmty_functor(_, _, _) -> false
+    Mty_ident p -> false
+  | Mty_signature sg -> no_code_needed_sig env sg
+  | Mty_functor(_, _, _) -> false
 
 and no_code_needed_sig env sg =
   match sg with
     [] -> true
-  | Tsig_value(id, decl) :: rem ->
+  | Sig_value(id, decl) :: rem ->
       begin match decl.val_kind with
       | Val_prim _ -> no_code_needed_sig env rem
       | _ -> false
       end
-  | Tsig_module(id, mty, _) :: rem ->
+  | Sig_module(id, mty, _) :: rem ->
       no_code_needed env mty &&
       no_code_needed_sig (Env.add_module id mty env) rem
-  | (Tsig_type _ | Tsig_modtype _ | Tsig_cltype _) :: rem ->
+  | (Sig_type _ | Sig_modtype _ | Sig_class_type _) :: rem ->
       no_code_needed_sig env rem
-  | (Tsig_exception _ | Tsig_class _) :: rem ->
+  | (Sig_exception _ | Sig_class _) :: rem ->
       false
index a24756dc083e68e711f4510651bfbb89cb9870bc..7e366ad01770f7ba3538b0227371e4f216f15ee1 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: mtype.mli 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (* Operations on module types *)
 
index 0bfd8797cdd38b6984c3605c5b403a98939c0c5c..2a7c31d32a916bdf69e214ef4e6bd03f5a9fe529 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: oprint.ml 11964 2011-12-28 02:22:38Z garrigue $ *)
 
 open Format
 open Outcometree
index 5724355b856f80e53b89ae9faf50f220398b53dd..a7d18ad186676bc88d10bd87804d9e4dd356089d 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: oprint.mli 11156 2011-07-27 14:17:02Z doligez $ *)
 
 open Format
 open Outcometree
index 7d95672a0cb2327db60e2f2b8a06edada4c5f9b8..e4ed50b96158c01db71417fb1706fd17ff933c34 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: outcometree.mli 11160 2011-07-29 10:32:43Z garrigue $ *)
 
 (* Module [Outcometree]: results displayed by the toplevel *)
 
index 99bb5afe934138390efdc06c003d109140c0821d..e23153c43ec7ea246b5188b77cb981b63a1b5843 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: parmatch.ml 12520 2012-05-31 07:41:37Z garrigue $ *)
 
 (* Detection of partial matches and unused match cases. *)
 
@@ -24,13 +24,15 @@ open Typedtree
 (*************************************)
 
 let make_pat desc ty tenv =
-  {pat_desc = desc; pat_loc = Location.none;
+  {pat_desc = desc; pat_loc = Location.none; pat_extra = [];
    pat_type = ty ; pat_env = tenv }
 
 let omega = make_pat Tpat_any Ctype.none Env.empty
 
 let extra_pat =
-  make_pat (Tpat_var (Ident.create "+")) Ctype.none Env.empty
+  make_pat
+    (Tpat_var (Ident.create "+", mknoloc "+"))
+    Ctype.none Env.empty
 
 let rec omegas i =
   if i <= 0 then [] else omega :: omegas (i-1)
@@ -55,9 +57,9 @@ let records_args l1 l2 =
   (* Invariant: fields are already sorted by Typecore.type_label_a_list *)
   let rec combine r1 r2 l1 l2 = match l1,l2 with
   | [],[] -> List.rev r1, List.rev r2
-  | [],(_,p2)::rem2 -> combine (omega::r1) (p2::r2) [] rem2
-  | (_,p1)::rem1,[] -> combine (p1::r1) (omega::r2) rem1 []
-  | (lbl1,p1)::rem1, (lbl2,p2)::rem2 ->
+  | [],(_,_,_,p2)::rem2 -> combine (omega::r1) (p2::r2) [] rem2
+  | (_,_,_,p1)::rem1,[] -> combine (p1::r1) (omega::r2) rem1 []
+  | (_,_,lbl1,p1)::rem1, (_, _,lbl2,p2)::rem2 ->
       if lbl1.lbl_pos < lbl2.lbl_pos then
         combine (p1::r1) (omega::r2) rem1 l2
       else if lbl1.lbl_pos > lbl2.lbl_pos then
@@ -69,8 +71,8 @@ let records_args l1 l2 =
 
 let rec compat p q =
   match p.pat_desc,q.pat_desc with
-  | Tpat_alias (p,_),_      -> compat p q
-  | _,Tpat_alias (q,_)      -> compat p q
+  | Tpat_alias (p,_,_),_      -> compat p q
+  | _,Tpat_alias (q,_,_)      -> compat p q
   | (Tpat_any|Tpat_var _),_ -> true
   | _,(Tpat_any|Tpat_var _) -> true
   | Tpat_or (p1,p2,_),_     -> compat p1 q || compat p2 q
@@ -78,7 +80,7 @@ let rec compat p q =
   | Tpat_constant c1, Tpat_constant c2 -> c1=c2
   | Tpat_tuple ps, Tpat_tuple qs -> compats ps qs
   | Tpat_lazy p, Tpat_lazy q -> compat p q
-  | Tpat_construct (c1,ps1), Tpat_construct (c2,ps2) ->
+  | Tpat_construct (_, _, c1,ps1, _), Tpat_construct (_, _, c2,ps2, _) ->
       c1.cstr_tag = c2.cstr_tag && compats ps1 ps2
   | Tpat_variant(l1,Some p1, r1), Tpat_variant(l2,Some p2,_) ->
       l1=l2 && compat p1 p2
@@ -86,7 +88,7 @@ let rec compat p q =
       l1 = l2
   | Tpat_variant (_, None, _), Tpat_variant (_,Some _, _) -> false
   | Tpat_variant (_, Some _, _), Tpat_variant (_, None, _) -> false
-  | Tpat_record l1,Tpat_record l2 ->
+  | Tpat_record (l1,_),Tpat_record (l2,_) ->
       let ps,qs = records_args l1 l2 in
       compats ps qs
   | Tpat_array ps, Tpat_array qs ->
@@ -135,7 +137,7 @@ let find_label lbl lbls =
   try
     let name,_,_ = List.nth lbls lbl.lbl_pos in
     name
-  with Failure "nth" -> "*Unkown label*"
+  with Failure "nth" -> Ident.create "*Unknown label*"
 
 let rec get_record_labels ty tenv =
   match get_type_descr ty tenv with
@@ -156,7 +158,7 @@ let get_constr_name tag ty tenv  = match tag with
 | Cstr_exception (path, _) -> Path.name path
 | _ ->
   try
-    let name,_,_ = get_constr tag ty tenv in name
+    let name,_,_ = get_constr tag ty tenv in Ident.name name
   with
   | Datarepr.Constr_not_found -> "*Unknown constructor*"
 
@@ -165,9 +167,21 @@ let is_cons tag v  = match get_constr_name tag v.pat_type v.pat_env with
 | _ -> false
 
 
-let rec pretty_val ppf v = match v.pat_desc with
+let rec pretty_val ppf v =
+  match v.pat_extra with
+      (cstr,_) :: rem ->
+        begin match cstr with
+          | Tpat_unpack ->
+            fprintf ppf "@[(module %a)@]" pretty_val { v with pat_extra = rem }
+          | Tpat_constraint ctyp ->
+            fprintf ppf "@[(%a : _)@]" pretty_val { v with pat_extra = rem }
+          | Tpat_type _ ->
+            fprintf ppf "@[(# %a)@]" pretty_val { v with pat_extra = rem }
+        end
+    | [] ->
+  match v.pat_desc with
   | Tpat_any -> fprintf ppf "_"
-  | Tpat_var x -> Ident.print ppf x
+  | Tpat_var (x,_) -> Ident.print ppf x
   | Tpat_constant (Const_int i) -> fprintf ppf "%d" i
   | Tpat_constant (Const_char c) -> fprintf ppf "%C" c
   | Tpat_constant (Const_string s) -> fprintf ppf "%S" s
@@ -177,13 +191,13 @@ let rec pretty_val ppf v = match v.pat_desc with
   | Tpat_constant (Const_nativeint i) -> fprintf ppf "%ndn" i
   | Tpat_tuple vs ->
       fprintf ppf "@[(%a)@]" (pretty_vals ",") vs
-  | Tpat_construct ({cstr_tag=tag},[]) ->
+  | Tpat_construct (_, _, {cstr_tag=tag},[], _) ->
       let name = get_constr_name tag v.pat_type v.pat_env in
       fprintf ppf "%s" name
-  | Tpat_construct ({cstr_tag=tag},[w]) ->
+  | Tpat_construct (_, _, {cstr_tag=tag},[w], _) ->
       let name = get_constr_name tag v.pat_type v.pat_env in
       fprintf ppf "@[<2>%s@ %a@]" name pretty_arg w
-  | Tpat_construct ({cstr_tag=tag},vs) ->
+  | Tpat_construct (_, _, {cstr_tag=tag},vs, _) ->
       let name = get_constr_name tag v.pat_type v.pat_env in
       begin match (name, vs) with
         ("::", [v1;v2]) ->
@@ -195,36 +209,36 @@ let rec pretty_val ppf v = match v.pat_desc with
       fprintf ppf "`%s" l
   | Tpat_variant (l, Some w, _) ->
       fprintf ppf "@[<2>`%s@ %a@]" l pretty_arg w
-  | Tpat_record lvs ->
+  | Tpat_record (lvs,_) ->
       fprintf ppf "@[{%a}@]"
         (pretty_lvals (get_record_labels v.pat_type v.pat_env))
         (List.filter
            (function
-             | (_,{pat_desc=Tpat_any}) -> false (* do not show lbl=_ *)
+             | (_,_,_,{pat_desc=Tpat_any}) -> false (* do not show lbl=_ *)
              | _ -> true) lvs)
   | Tpat_array vs ->
       fprintf ppf "@[[| %a |]@]" (pretty_vals " ;") vs
   | Tpat_lazy v ->
       fprintf ppf "@[<2>lazy@ %a@]" pretty_arg v
-  | Tpat_alias (v,x) ->
+  | Tpat_alias (v, x,_) ->
       fprintf ppf "@[(%a@ as %a)@]" pretty_val v Ident.print x
   | Tpat_or (v,w,_)    ->
       fprintf ppf "@[(%a|@,%a)@]" pretty_or v pretty_or w
 
 and pretty_car ppf v = match v.pat_desc with
-| Tpat_construct ({cstr_tag=tag}, [_ ; _])
+| Tpat_construct (_,_,{cstr_tag=tag}, [_ ; _], _)
     when is_cons tag v ->
       fprintf ppf "(%a)" pretty_val v
 | _ -> pretty_val ppf v
 
 and pretty_cdr ppf v = match v.pat_desc with
-| Tpat_construct ({cstr_tag=tag}, [v1 ; v2])
+| Tpat_construct (_,_,{cstr_tag=tag}, [v1 ; v2], _)
     when is_cons tag v ->
       fprintf ppf "%a::@,%a" pretty_car v1 pretty_cdr v2
 | _ -> pretty_val ppf v
 
 and pretty_arg ppf v = match v.pat_desc with
-| Tpat_construct (_,_::_) -> fprintf ppf "(%a)" pretty_val v
+| Tpat_construct (_,_,_,_::_, _) -> fprintf ppf "(%a)" pretty_val v
 |  _ -> pretty_val ppf v
 
 and pretty_or ppf v = match v.pat_desc with
@@ -240,12 +254,13 @@ and pretty_vals sep ppf = function
 
 and pretty_lvals lbls ppf = function
   | [] -> ()
-  | [lbl,v] ->
+  | [_, _,lbl,v] ->
       let name = find_label lbl lbls in
-      fprintf ppf "%s=%a" name pretty_val v
-  | (lbl,v)::rest ->
+      fprintf ppf "%s=%a" (Ident.name name) pretty_val v
+  | (_, _, lbl,v)::rest ->
       let name = find_label lbl lbls in
-      fprintf ppf "%s=%a;@ %a" name pretty_val v (pretty_lvals lbls) rest
+      fprintf ppf "%s=%a;@ %a"
+        (Ident.name name) pretty_val v (pretty_lvals lbls) rest
 
 let top_pretty ppf v =
   fprintf ppf "@[%a@]@?" pretty_val v
@@ -263,7 +278,7 @@ let prerr_pat v =
 (* Check top matching *)
 let simple_match p1 p2 =
   match p1.pat_desc, p2.pat_desc with
-  | Tpat_construct(c1, _), Tpat_construct(c2, _) ->
+  | Tpat_construct(_, _, c1, _, _), Tpat_construct(_,_, c2, _, _) ->
       c1.cstr_tag = c2.cstr_tag
   | Tpat_variant(l1, _, _), Tpat_variant(l2, _, _) ->
       l1 = l2
@@ -283,30 +298,32 @@ let simple_match p1 p2 =
 (* extract record fields as a whole *)
 let record_arg p = match p.pat_desc with
 | Tpat_any -> []
-| Tpat_record args -> args
+| Tpat_record (args,_) -> args
 | _ -> fatal_error "Parmatch.as_record"
 
 
 (* Raise Not_found when pos is not present in arg *)
 let get_field pos arg =
-  let _,p = List.find (fun (lbl,_) -> pos = lbl.lbl_pos) arg in
+  let _,_,_, p = List.find (fun (_,_,lbl,_) -> pos = lbl.lbl_pos) arg in
   p
 
 let extract_fields omegas arg =
   List.map
-    (fun (lbl,_) ->
+    (fun (_,_,lbl,_) ->
       try
         get_field lbl.lbl_pos arg
       with Not_found -> omega)
     omegas
 
 let all_record_args lbls = match lbls with
-| ({lbl_all=lbl_all},_)::_ ->
+| (_,_,{lbl_all=lbl_all},_)::_ ->
     let t =
       Array.map
-        (fun lbl -> lbl,omega) lbl_all in
+        (fun lbl -> Path.Pident (Ident.create "?temp?"),
+          mknoloc (Longident.Lident "?temp?"), lbl,omega)
+        lbl_all in
     List.iter
-      (fun ((lbl,_) as x) ->  t.(lbl.lbl_pos) <- x)
+      (fun ((_,_, lbl,_) as x) ->  t.(lbl.lbl_pos) <- x)
       lbls ;
     Array.to_list t
 |  _ -> fatal_error "Parmatch.all_record_args"
@@ -314,19 +331,19 @@ let all_record_args lbls = match lbls with
 
 (* Build argument list when p2 >= p1, where p1 is a simple pattern *)
 let rec simple_match_args p1 p2 = match p2.pat_desc with
-| Tpat_alias (p2,_) -> simple_match_args p1 p2
-| Tpat_construct(cstr, args) -> args
+| Tpat_alias (p2,_,_) -> simple_match_args p1 p2
+| Tpat_construct(_,_, cstr, args, _) -> args
 | Tpat_variant(lab, Some arg, _) -> [arg]
 | Tpat_tuple(args)  -> args
-| Tpat_record(args) ->  extract_fields (record_arg p1) args
+| Tpat_record(args,_) ->  extract_fields (record_arg p1) args
 | Tpat_array(args) -> args
 | Tpat_lazy arg -> [arg]
 | (Tpat_any | Tpat_var(_)) ->
     begin match p1.pat_desc with
-      Tpat_construct(_, args) -> omega_list args
+      Tpat_construct(_,_, _,args, _) -> omega_list args
     | Tpat_variant(_, Some _, _) -> [omega]
     | Tpat_tuple(args) -> omega_list args
-    | Tpat_record(args) ->  omega_list args
+    | Tpat_record(args,_) ->  omega_list args
     | Tpat_array(args) ->  omega_list args
     | Tpat_lazy _ -> [omega]
     | _ -> []
@@ -341,24 +358,27 @@ let rec simple_match_args p1 p2 = match p2.pat_desc with
 let rec normalize_pat q = match q.pat_desc with
   | Tpat_any | Tpat_constant _ -> q
   | Tpat_var _ -> make_pat Tpat_any q.pat_type q.pat_env
-  | Tpat_alias (p,_) -> normalize_pat p
+  | Tpat_alias (p,_,_) -> normalize_pat p
   | Tpat_tuple (args) ->
       make_pat (Tpat_tuple (omega_list args)) q.pat_type q.pat_env
-  | Tpat_construct  (c,args) ->
-      make_pat (Tpat_construct (c,omega_list args)) q.pat_type q.pat_env
+  | Tpat_construct  (lid, lid_loc, c,args,explicit_arity) ->
+      make_pat
+        (Tpat_construct (lid, lid_loc, c,omega_list args, explicit_arity))
+        q.pat_type q.pat_env
   | Tpat_variant (l, arg, row) ->
       make_pat (Tpat_variant (l, may_map (fun _ -> omega) arg, row))
         q.pat_type q.pat_env
   | Tpat_array (args) ->
       make_pat (Tpat_array (omega_list args))  q.pat_type q.pat_env
-  | Tpat_record (largs) ->
-      make_pat (Tpat_record (List.map (fun (lbl,_) -> lbl,omega) largs))
+  | Tpat_record (largs, closed) ->
+      make_pat
+        (Tpat_record (List.map (fun (lid,lid_loc,lbl,_) ->
+                                 lid, lid_loc, lbl,omega) largs, closed))
         q.pat_type q.pat_env
   | Tpat_lazy _ ->
       make_pat (Tpat_lazy omega) q.pat_type q.pat_env
   | Tpat_or _ -> fatal_error "Parmatch.normalize_pat"
 
-
 (*
   Build normalized (cf. supra) discriminating pattern,
   in the non-data type case
@@ -367,7 +387,7 @@ let rec normalize_pat q = match q.pat_desc with
 let discr_pat q pss =
 
   let rec acc_pat acc pss = match pss with
-    ({pat_desc = Tpat_alias (p,_)}::ps)::pss ->
+    ({pat_desc = Tpat_alias (p,_,_)}::ps)::pss ->
         acc_pat acc ((p::ps)::pss)
   | ({pat_desc = Tpat_or (p1,p2,_)}::ps)::pss ->
         acc_pat acc ((p1::ps)::(p2::ps)::pss)
@@ -375,19 +395,19 @@ let discr_pat q pss =
         acc_pat acc pss
   | (({pat_desc = Tpat_tuple _} as p)::_)::_ -> normalize_pat p
   | (({pat_desc = Tpat_lazy _} as p)::_)::_ -> normalize_pat p
-  | (({pat_desc = Tpat_record largs} as p)::_)::pss ->
+  | (({pat_desc = Tpat_record (largs,closed)} as p)::_)::pss ->
       let new_omegas =
         List.fold_right
-          (fun (lbl,_) r ->
+          (fun (lid, lid_loc, lbl,_) r ->
             try
               let _ = get_field lbl.lbl_pos r in
               r
             with Not_found ->
-              (lbl,omega)::r)
+              (lid, lid_loc, lbl,omega)::r)
           largs (record_arg acc)
       in
       acc_pat
-        (make_pat (Tpat_record new_omegas) p.pat_type p.pat_env)
+        (make_pat (Tpat_record (new_omegas, closed)) p.pat_type p.pat_env)
         pss
   | _ -> acc in
 
@@ -412,26 +432,27 @@ let do_set_args erase_mutable q r = match q with
 | {pat_desc = Tpat_tuple omegas} ->
     let args,rest = read_args omegas r in
     make_pat (Tpat_tuple args) q.pat_type q.pat_env::rest
-| {pat_desc = Tpat_record omegas} ->
+| {pat_desc = Tpat_record (omegas,closed)} ->
     let args,rest = read_args omegas r in
     make_pat
       (Tpat_record
-         (List.map2 (fun (lbl,_) arg ->
+         (List.map2 (fun (lid, lid_loc, lbl,_) arg ->
            if
              erase_mutable &&
              (match lbl.lbl_mut with
              | Mutable -> true | Immutable -> false)
            then
-             lbl, omega
+             lid, lid_loc, lbl, omega
            else
-             lbl,arg)
-            omegas args))
+             lid, lid_loc, lbl, arg)
+            omegas args, closed))
       q.pat_type q.pat_env::
     rest
-| {pat_desc = Tpat_construct (c,omegas)} ->
+| {pat_desc = Tpat_construct (lid, lid_loc, c,omegas, explicit_arity)} ->
     let args,rest = read_args omegas r in
     make_pat
-      (Tpat_construct (c,args)) q.pat_type q.pat_env::
+      (Tpat_construct (lid, lid_loc, c,args, explicit_arity))
+      q.pat_type q.pat_env::
     rest
 | {pat_desc = Tpat_variant (l, omega, row)} ->
     let arg, rest =
@@ -464,7 +485,7 @@ and set_args_erase_mutable q r = do_set_args true q r
 (* filter pss acording to pattern q *)
 let filter_one q pss =
   let rec filter_rec = function
-      ({pat_desc = Tpat_alias(p,_)}::ps)::pss ->
+      ({pat_desc = Tpat_alias(p,_,_)}::ps)::pss ->
         filter_rec ((p::ps)::pss)
     | ({pat_desc = Tpat_or(p1,p2,_)}::ps)::pss ->
         filter_rec ((p1::ps)::(p2::ps)::pss)
@@ -482,7 +503,7 @@ let filter_one q pss =
 *)
 let filter_extra pss =
   let rec filter_rec = function
-      ({pat_desc = Tpat_alias(p,_)}::ps)::pss ->
+      ({pat_desc = Tpat_alias(p,_,_)}::ps)::pss ->
         filter_rec ((p::ps)::pss)
     | ({pat_desc = Tpat_or(p1,p2,_)}::ps)::pss ->
         filter_rec ((p1::ps)::(p2::ps)::pss)
@@ -517,7 +538,7 @@ let filter_all pat0 pss =
         else c :: insert q qs env in
 
   let rec filter_rec env = function
-    ({pat_desc = Tpat_alias(p,_)}::ps)::pss ->
+    ({pat_desc = Tpat_alias(p,_,_)}::ps)::pss ->
       filter_rec env ((p::ps)::pss)
   | ({pat_desc = Tpat_or(p1,p2,_)}::ps)::pss ->
       filter_rec env ((p1::ps)::(p2::ps)::pss)
@@ -528,13 +549,14 @@ let filter_all pat0 pss =
   | _ -> env
 
   and filter_omega env = function
-    ({pat_desc = Tpat_alias(p,_)}::ps)::pss ->
+    ({pat_desc = Tpat_alias(p,_,_)}::ps)::pss ->
       filter_omega env ((p::ps)::pss)
   | ({pat_desc = Tpat_or(p1,p2,_)}::ps)::pss ->
       filter_omega env ((p1::ps)::(p2::ps)::pss)
   | ({pat_desc = (Tpat_any | Tpat_var(_))}::ps)::pss ->
       filter_omega
-        (List.map (fun (q,qss) -> (q,(simple_match_args q omega @ ps) :: qss)) env)
+        (List.map (fun (q,qss) -> (q,(simple_match_args q omega @ ps) :: qss))
+           env)
         pss
   | _::pss -> filter_omega env pss
   | [] -> env in
@@ -556,7 +578,7 @@ let rec set_last a = function
 
 (* mark constructor lines for failure when they are incomplete *)
 let rec mark_partial = function
-    ({pat_desc = Tpat_alias(p,_)}::ps)::pss ->
+    ({pat_desc = Tpat_alias(p,_,_)}::ps)::pss ->
       mark_partial ((p::ps)::pss)
   | ({pat_desc = Tpat_or(p1,p2,_)}::ps)::pss ->
       mark_partial ((p1::ps)::(p2::ps)::pss)
@@ -596,14 +618,14 @@ let row_of_pat pat =
   not.
 *)
 
-let generalized_constructor x = 
-  match x with 
-    ({pat_desc = Tpat_construct(c,_);pat_env=env},_) ->
+let generalized_constructor x =
+  match x with
+    ({pat_desc = Tpat_construct(_,_,c,_, _);pat_env=env},_) ->
       c.cstr_generalized
   | _ -> assert false
 
-let clean_env env = 
-  let rec loop = 
+let clean_env env =
+  let rec loop =
     function
       | [] -> []
       | x :: xs ->
@@ -612,12 +634,13 @@ let clean_env env =
   loop env
 
 let full_match ignore_generalized closing env =  match env with
-| ({pat_desc = Tpat_construct ({cstr_tag=Cstr_exception _},_)},_)::_ ->
+| ({pat_desc = Tpat_construct (_,_,{cstr_tag=Cstr_exception _},_,_)},_)::_ ->
     false
-| ({pat_desc = Tpat_construct(c,_);pat_type=typ},_) :: _ -> 
+| ({pat_desc = Tpat_construct(_,_,c,_,_);pat_type=typ},_) :: _ ->
     if ignore_generalized then
-      (* remove generalized constructors; those cases will be handled separately *)
-      let env = clean_env env in 
+      (* remove generalized constructors;
+         those cases will be handled separately *)
+      let env = clean_env env in
       List.length env = c.cstr_normal
     else
       List.length env = c.cstr_consts + c.cstr_nonconsts
@@ -656,12 +679,13 @@ let full_match ignore_generalized closing env =  match env with
 | _ -> fatal_error "Parmatch.full_match"
 
 let full_match_gadt env = match env with
-  | ({pat_desc = Tpat_construct(c,_);pat_type=typ},_) :: _ -> 
+  | ({pat_desc = Tpat_construct(_,_,c,_,_);pat_type=typ},_) :: _ ->
     List.length env = c.cstr_consts + c.cstr_nonconsts
   | _ -> true
 
 let extendable_match env = match env with
-| ({pat_desc = Tpat_construct({cstr_tag=(Cstr_constant _|Cstr_block _)},_)} as p,_) :: _ ->
+| ({pat_desc=Tpat_construct(_,_,{cstr_tag=(Cstr_constant _|Cstr_block _)},_,_)}
+     as p,_) :: _ ->
     let path = get_type_path p.pat_type p.pat_env in
     not
       (Path.same path Predef.path_bool ||
@@ -673,9 +697,9 @@ let extendable_match env = match env with
 let should_extend ext env = match ext with
 | None -> false
 | Some ext -> match env with
-  | ({pat_desc =
-       Tpat_construct({cstr_tag=(Cstr_constant _|Cstr_block _)},_)} as p,_)
-    :: _ ->
+  | ({pat_desc = 
+      Tpat_construct(_, _, {cstr_tag=(Cstr_constant _|Cstr_block _)},_,_)}
+     as p, _) :: _ ->
       let path = get_type_path p.pat_type p.pat_env in
       Path.same path ext
   | _ -> false
@@ -703,7 +727,10 @@ let complete_tags nconsts nconstrs tags =
 
 (* build a pattern from a constructor list *)
 let pat_of_constr ex_pat cstr =
- {ex_pat with pat_desc = Tpat_construct (cstr,omegas cstr.cstr_arity)}
+ {ex_pat with pat_desc =
+  Tpat_construct (Path.Pident (Ident.create "?pat_of_constr?"),
+                  mknoloc (Longident.Lident "?pat_of_constr?"),
+                  cstr,omegas cstr.cstr_arity,false)}
 
 let rec pat_of_constrs ex_pat = function
 | [] -> raise Empty
@@ -729,7 +756,7 @@ let rec adt_path env ty =
   | _ -> raise Not_an_adt
 ;;
 
-let rec map_filter f  = 
+let rec map_filter f  =
   function
       [] -> []
     | x :: xs ->
@@ -738,12 +765,13 @@ let rec map_filter f  =
        | Some y -> y :: map_filter f xs
 
 (* Sends back a pattern that complements constructor tags all_tag *)
-let complete_constrs p all_tags = 
+let complete_constrs p all_tags =
   match p.pat_desc with
-  | Tpat_construct (c,_) ->
+  | Tpat_construct (_,_,c,_,_) ->
       begin try
        let not_tags = complete_tags c.cstr_consts c.cstr_nonconsts all_tags in
-       let constrs = Env.find_constructors (adt_path p.pat_env p.pat_type) p.pat_env in
+       let constrs =
+          Env.find_constructors (adt_path p.pat_env p.pat_type) p.pat_env in
        map_filter
           (fun cnstr ->
            if List.mem cnstr.cstr_tag not_tags then Some cnstr else None)
@@ -771,22 +799,23 @@ let build_other_constant proj make first next p env =
 *)
 
 let build_other ext env =  match env with
-| ({pat_desc = Tpat_construct ({cstr_tag=Cstr_exception _} as c,_)},_)
+| ({pat_desc =
+    Tpat_construct (lid, lid_loc, ({cstr_tag=Cstr_exception _} as c),_,_)},_)
   ::_ ->
     make_pat
       (Tpat_construct
-         ({c with
+         (lid, lid_loc, {c with
            cstr_tag=(Cstr_exception
             (Path.Pident (Ident.create "*exception*"), Location.none))},
-          []))
+          [], false))
       Ctype.none Env.empty
-| ({pat_desc = Tpat_construct (_,_)} as p,_) :: _ ->
+| ({pat_desc = Tpat_construct (_,_, _,_,_)} as p,_) :: _ ->
     begin match ext with
     | Some ext when Path.same ext (get_type_path p.pat_type p.pat_env) ->
         extra_pat
     | _ ->
         let get_tag = function
-          | {pat_desc = Tpat_construct (c,_)} -> c.cstr_tag
+          | {pat_desc = Tpat_construct (_,_,c,_,_)} -> c.cstr_tag
           | _ -> fatal_error "Parmatch.get_tag" in
         let all_tags =  List.map (fun (p,_) -> get_tag p) env in
         pat_of_constrs p (complete_constrs p all_tags)
@@ -899,11 +928,11 @@ let build_other ext env =  match env with
 | [] -> omega
 | _ -> omega
 
-let build_other_gadt ext env = 
+let build_other_gadt ext env =
   match env with
-    | ({pat_desc = Tpat_construct (_,_)} as p,_) :: _ ->
+    | ({pat_desc = Tpat_construct _} as p,_) :: _ ->
         let get_tag = function
-          | {pat_desc = Tpat_construct (c,_)} -> c.cstr_tag
+          | {pat_desc = Tpat_construct (_,_,c,_,_)} -> c.cstr_tag
           | _ -> fatal_error "Parmatch.get_tag" in
         let all_tags =  List.map (fun (p,_) -> get_tag p) env in
        let cnstrs  = complete_constrs p all_tags in
@@ -912,7 +941,7 @@ let build_other_gadt ext env =
            Format.eprintf "@.@."; *)
         pats
     | _ -> assert false
-         
+
 (*
   Core function :
   Is the last row of pattern matrix pss + qs satisfiable ?
@@ -925,11 +954,14 @@ let build_other_gadt ext env =
 let rec has_instance p = match p.pat_desc with
   | Tpat_variant (l,_,r) when is_absent l r -> false
   | Tpat_any | Tpat_var _ | Tpat_constant _ | Tpat_variant (_,None,_) -> true
-  | Tpat_alias (p,_) | Tpat_variant (_,Some p,_) -> has_instance p
+  | Tpat_alias (p,_,_) | Tpat_variant (_,Some p,_) -> has_instance p
   | Tpat_or (p1,p2,_) -> has_instance p1 || has_instance p2
-  | Tpat_construct (_,ps) | Tpat_tuple ps | Tpat_array ps -> has_instances ps
-  | Tpat_record lps -> has_instances (List.map snd lps)
-  | Tpat_lazy p -> has_instance p
+  | Tpat_construct (_, _,_,ps,_) | Tpat_tuple ps | Tpat_array ps ->
+      has_instances ps
+  | Tpat_record (lps,_) -> has_instances (List.map (fun (_,_,_,x) -> x) lps)
+  | Tpat_lazy p
+    -> has_instance p
+
 
 and has_instances = function
   | [] -> true
@@ -942,7 +974,7 @@ let rec satisfiable pss qs = match pss with
     | [] -> false
     | {pat_desc = Tpat_or(q1,q2,_)}::qs ->
         satisfiable pss (q1::qs) || satisfiable pss (q2::qs)
-    | {pat_desc = Tpat_alias(q,_)}::qs ->
+    | {pat_desc = Tpat_alias(q,_,_)}::qs ->
           satisfiable pss (q::qs)
     | {pat_desc = (Tpat_any | Tpat_var(_))}::qs ->
         let q0 = discr_pat omega pss in
@@ -976,14 +1008,14 @@ type 'a result =
   | Rsome of 'a     (* This matching value *)
 
 let rec orify_many =
-  let rec orify x y = 
-    make_pat (Tpat_or (x, y, None)) x.pat_type x.pat_env       
+  let rec orify x y =
+    make_pat (Tpat_or (x, y, None)) x.pat_type x.pat_env
   in
   function
     | [] -> assert false
     | [x] -> x
     | x :: xs -> orify x (orify_many xs)
-  
+
 let rec try_many  f = function
   | [] -> Rnone
   | (p,pss)::rest ->
@@ -997,13 +1029,13 @@ let rec try_many_gadt  f = function
   | (p,pss)::rest ->
       match f (p,pss) with
       | Rnone -> try_many f rest
-      | Rsome sofar -> 
-         let others = try_many f rest in 
+      | Rsome sofar ->
+         let others = try_many f rest in
          match others with
            Rnone -> Rsome sofar
          | Rsome sofar' ->
              Rsome (sofar @ sofar')
-                 
+
 
 
 let rec exhaust ext pss n = match pss with
@@ -1053,8 +1085,8 @@ let rec exhaust ext pss n = match pss with
               | Empty -> fatal_error "Parmatch.exhaust"
     end
 
-let combinations f lst lst' = 
-  let rec iter2 x = 
+let combinations f lst lst' =
+  let rec iter2 x =
     function
        [] -> []
       | y :: ys ->
@@ -1066,10 +1098,33 @@ let combinations f lst lst' =
       | x :: xs -> iter2 x lst' @ iter xs
   in
   iter lst
-    
+
+(*
+let print_pat pat =
+  let rec string_of_pat pat =
+    match pat.pat_desc with
+        Tpat_var _ -> "v"
+      | Tpat_any -> "_"
+      | Tpat_alias (p, x) -> Printf.sprintf "(%s) as ?"  (string_of_pat p)
+      | Tpat_constant n -> "0"
+      | Tpat_construct (_, lid, _, _) ->
+        Printf.sprintf "%s" (String.concat "." (Longident.flatten lid.txt))
+      | Tpat_lazy p ->
+        Printf.sprintf "(lazy %s)" (string_of_pat p)
+      | Tpat_or (p1,p2,_) ->
+        Printf.sprintf "(%s | %s)" (string_of_pat p1) (string_of_pat p2)
+      | Tpat_tuple list ->
+        Printf.sprintf "(%s)" (String.concat "," (List.map string_of_pat list))
+      | Tpat_variant (_, _, _) -> "variant"
+      | Tpat_record (_, _) -> "record"
+      | Tpat_array _ -> "array"
+  in
+  Printf.fprintf stderr "PAT[%s]\n%!" (string_of_pat pat)
+*)
+
 (* strictly more powerful than exhaust; however, exhaust
    was kept for backwards compatibility *)
-let rec exhaust_gadt ext pss n = match pss with
+let rec exhaust_gadt (ext:Path.t option) pss n = match pss with
 | []    ->  Rsome [omegas n]
 | []::_ ->  Rnone
 | pss   ->
@@ -1112,34 +1167,33 @@ let rec exhaust_gadt ext pss n = match pss with
           | Rsome r ->
               try
                let missing_trailing = build_other_gadt ext constrs in
-               let before = 
-                 match before with 
-                   Rnone -> [] 
-                 | Rsome lst -> lst 
+               let before =
+                 match before with
+                   Rnone -> []
+                 | Rsome lst -> lst
                in
-               let dug = 
+               let dug =
                  combinations
-                   (fun head tail ->
-                     head :: tail)
+                   (fun head tail -> head :: tail)
                    missing_trailing
                    r
                in
-                Rsome (dug @ before) 
+                Rsome (dug @ before)
               with
       (* cannot occur, since constructors don't make a full signature *)
               | Empty -> fatal_error "Parmatch.exhaust"
     end
 
-let exhaust_gadt ext pss n = 
-  let ret = exhaust_gadt ext pss n in 
+let exhaust_gadt ext pss n =
+  let ret = exhaust_gadt ext pss n in
   match ret with
     Rnone -> Rnone
   | Rsome lst ->
       (* The following line is needed to compile stdlib/printf.ml *)
       if lst = [] then Rsome (omegas n) else
-      let singletons = 
-       List.map 
-         (function 
+      let singletons =
+       List.map
+         (function
              [x] -> x
            | _ -> assert false)
          lst
@@ -1205,7 +1259,7 @@ let rec pressure_variants tdefs = function
 type answer =
   | Used                                (* Useful pattern *)
   | Unused                              (* Useless pattern *)
-  | Upartial of Typedtree.pattern list  (* Neither, with list of useless pattern *)
+  | Upartial of Typedtree.pattern list  (* Mixed, with list of useless ones *)
 
 
 let pretty_pat p =
@@ -1261,7 +1315,7 @@ let make_rows pss = List.map make_row pss
 
 (* Useful to detect and expand  or pats inside as pats *)
 let rec unalias p = match p.pat_desc with
-| Tpat_alias (p,_) -> unalias p
+| Tpat_alias (p,_,_) -> unalias p
 | _ -> p
 
 
@@ -1279,7 +1333,7 @@ let is_var_column rs =
 (* Standard or-args for left-to-right matching *)
 let rec or_args p = match p.pat_desc with
 | Tpat_or (p1,p2,_) -> p1,p2
-| Tpat_alias (p,_)  -> or_args p
+| Tpat_alias (p,_,_)  -> or_args p
 | _                 -> assert false
 
 (* Just remove current column *)
@@ -1314,7 +1368,7 @@ let filter_one q rs =
   | r::rem ->
       match r.active with
       | [] -> assert false
-      | {pat_desc = Tpat_alias(p,_)}::ps ->
+      | {pat_desc = Tpat_alias(p,_,_)}::ps ->
           filter_rec ({r with active = p::ps}::rem)
       | {pat_desc = Tpat_or(p1,p2,_)}::ps ->
           filter_rec
@@ -1467,10 +1521,10 @@ and every_both pss qs q1 q2 =
 let rec le_pat p q =
   match (p.pat_desc, q.pat_desc) with
   | (Tpat_var _|Tpat_any),_ -> true
-  | Tpat_alias(p,_), _ -> le_pat p q
-  | _, Tpat_alias(q,_) -> le_pat p q
+  | Tpat_alias(p,_,_), _ -> le_pat p q
+  | _, Tpat_alias(q,_,_) -> le_pat p q
   | Tpat_constant(c1), Tpat_constant(c2) -> c1 = c2
-  | Tpat_construct(c1,ps), Tpat_construct(c2,qs) ->
+  | Tpat_construct(_,_,c1,ps,_), Tpat_construct(_,_,c2,qs,_) ->
       c1.cstr_tag = c2.cstr_tag && le_pats ps qs
   | Tpat_variant(l1,Some p1,_), Tpat_variant(l2,Some p2,_) ->
       (l1 = l2 && le_pat p1 p2)
@@ -1479,7 +1533,7 @@ let rec le_pat p q =
   | Tpat_variant(_,_,_), Tpat_variant(_,_,_) -> false
   | Tpat_tuple(ps), Tpat_tuple(qs) -> le_pats ps qs
   | Tpat_lazy p, Tpat_lazy q -> le_pat p q
-  | Tpat_record l1, Tpat_record l2 ->
+  | Tpat_record (l1,_), Tpat_record (l2,_) ->
       let ps,qs = records_args l1 l2 in
       le_pats ps qs
   | Tpat_array(ps), Tpat_array(qs) ->
@@ -1507,8 +1561,8 @@ let get_mins le ps =
 *)
 
 let rec lub p q = match p.pat_desc,q.pat_desc with
-| Tpat_alias (p,_),_      -> lub p q
-| _,Tpat_alias (q,_)      -> lub p q
+| Tpat_alias (p,_,_),_      -> lub p q
+| _,Tpat_alias (q,_,_)      -> lub p q
 | (Tpat_any|Tpat_var _),_ -> q
 | _,(Tpat_any|Tpat_var _) -> p
 | Tpat_or (p1,p2,_),_     -> orlub p1 p2 q
@@ -1520,19 +1574,20 @@ let rec lub p q = match p.pat_desc,q.pat_desc with
 | Tpat_lazy p, Tpat_lazy q ->
     let r = lub p q in
     make_pat (Tpat_lazy r) p.pat_type p.pat_env
-| Tpat_construct (c1,ps1), Tpat_construct (c2,ps2)
+| Tpat_construct (lid, lid_loc, c1,ps1,_), Tpat_construct (_, _,c2,ps2,_)
       when  c1.cstr_tag = c2.cstr_tag  ->
         let rs = lubs ps1 ps2 in
-        make_pat (Tpat_construct (c1,rs)) p.pat_type p.pat_env
+        make_pat (Tpat_construct (lid, lid_loc, c1,rs, false))
+          p.pat_type p.pat_env
 | Tpat_variant(l1,Some p1,row), Tpat_variant(l2,Some p2,_)
           when  l1=l2 ->
             let r=lub p1 p2 in
             make_pat (Tpat_variant (l1,Some r,row)) p.pat_type p.pat_env
 | Tpat_variant (l1,None,row), Tpat_variant(l2,None,_)
               when l1 = l2 -> p
-| Tpat_record l1,Tpat_record l2 ->
+| Tpat_record (l1,closed),Tpat_record (l2,_) ->
     let rs = record_lubs l1 l2 in
-    make_pat (Tpat_record rs) p.pat_type p.pat_env
+    make_pat (Tpat_record (rs, closed)) p.pat_type p.pat_env
 | Tpat_array ps, Tpat_array qs
       when List.length ps = List.length qs ->
         let rs = lubs ps qs in
@@ -1554,13 +1609,13 @@ and record_lubs l1 l2 =
   let rec lub_rec l1 l2 = match l1,l2 with
   | [],_ -> l2
   | _,[] -> l1
-  | (lbl1,p1)::rem1, (lbl2,p2)::rem2 ->
+  | (lid1, lid1_loc, lbl1,p1)::rem1, (lid2, lid2_loc, lbl2,p2)::rem2 ->
       if lbl1.lbl_pos < lbl2.lbl_pos then
-        (lbl1,p1)::lub_rec rem1 l2
+        (lid1, lid1_loc, lbl1,p1)::lub_rec rem1 l2
       else if lbl2.lbl_pos < lbl1.lbl_pos  then
-        (lbl2,p2)::lub_rec l1 rem2
+        (lid2, lid2_loc, lbl2,p2)::lub_rec l1 rem2
       else
-        (lbl1,lub p1 p2)::lub_rec rem1 rem2 in
+        (lid1, lid1_loc, lbl1,lub p1 p2)::lub_rec rem1 rem2 in
   lub_rec l1 l2
 
 and lubs ps qs = match ps,qs with
@@ -1631,7 +1686,7 @@ let rec do_filter_var = function
 
 let do_filter_one q pss =
   let rec filter_rec = function
-    | ({pat_desc = Tpat_alias(p,_)}::ps,loc)::pss ->
+    | ({pat_desc = Tpat_alias(p,_,_)}::ps,loc)::pss ->
         filter_rec ((p::ps,loc)::pss)
     | ({pat_desc = Tpat_or(p1,p2,_)}::ps,loc)::pss ->
         filter_rec ((p1::ps,loc)::(p2::ps,loc)::pss)
@@ -1673,11 +1728,11 @@ let check_partial_all v casel =
 (************************)
 
 
-  let rec get_first f = 
+  let rec get_first f =
     function
       | [] -> None
-      | x :: xs -> 
-         match f x with 
+      | x :: xs ->
+         match f x with
          | None -> get_first f xs
          | x -> x
 
@@ -1685,11 +1740,11 @@ let check_partial_all v casel =
 (* conversion from Typedtree.pattern to Parsetree.pattern list *)
 module Conv = struct
   open Parsetree
-  let mkpat desc = 
+  let mkpat desc =
     {ppat_desc = desc;
      ppat_loc = Location.none}
 
-  let rec select : 'a list list -> 'a list list = 
+  let rec select : 'a list list -> 'a list list =
     function
       | xs :: [] -> List.map (fun y -> [y]) xs
       | (x::xs)::ys ->
@@ -1700,48 +1755,49 @@ module Conv = struct
            select (xs::ys)
       | _ -> []
 
-  let name_counter = ref 0 
-  let fresh () = 
-    let current = !name_counter in 
+  let name_counter = ref 0
+  let fresh () =
+    let current = !name_counter in
     name_counter := !name_counter + 1;
     "#$%^@*@" ^ string_of_int current
 
-  let conv (typed: Typedtree.pattern) : 
-      Parsetree.pattern list * 
-      (string,Types.constructor_description) Hashtbl.t * 
-      (string,Types.label_description) Hashtbl.t
-      = 
-    let constrs = Hashtbl.create 0 in 
-    let labels = Hashtbl.create 0 in 
-    let rec loop pat = 
+  let conv (typed: Typedtree.pattern) :
+      Parsetree.pattern list *
+      (string,Path.t * Types.constructor_description) Hashtbl.t *
+      (string,Path.t * Types.label_description) Hashtbl.t
+      =
+    let constrs = Hashtbl.create 0 in
+    let labels = Hashtbl.create 0 in
+    let rec loop pat =
       match pat.pat_desc with
         Tpat_or (a,b,_) ->
          loop a @ loop b
       | Tpat_any | Tpat_constant _ | Tpat_var _ ->
          [mkpat Ppat_any]
-      | Tpat_alias (p,_) -> loop p
+      | Tpat_alias (p,_,_) -> loop p
       | Tpat_tuple lst ->
-         let results = select (List.map loop lst) in 
+         let results = select (List.map loop lst) in
          List.map
            (fun lst -> mkpat (Ppat_tuple lst))
            results
-      | Tpat_construct (cstr,lst) ->
-         let id = fresh () in 
-         Hashtbl.add constrs id cstr;
+      | Tpat_construct (cstr_path, cstr_lid, cstr,lst,_) ->
+         let id = fresh () in
+          let lid = { cstr_lid with txt = Longident.Lident id } in
+         Hashtbl.add constrs id (cstr_path,cstr);
          let results = select (List.map loop lst) in
          begin match lst with
            [] ->
-             [mkpat (Ppat_construct(Longident.Lident id, None, false))]
+             [mkpat (Ppat_construct(lid, None, false))]
           | _ ->
-             List.map 
+             List.map
                (fun lst ->
-                 let arg = 
+                 let arg =
                    match lst with
                      [] -> assert false
                    | [x] -> Some x
                    | _ -> Some (mkpat (Ppat_tuple lst))
                  in
-                 mkpat (Ppat_construct(Longident.Lident id, arg, false)))
+                 mkpat (Ppat_construct(lid, arg, false)))
                results
           end
       | Tpat_variant(label,p_opt,row_desc) ->
@@ -1749,38 +1805,40 @@ module Conv = struct
          | None ->
              [mkpat (Ppat_variant(label, None))]
          | Some p ->
-             let results = loop p in 
+             let results = loop p in
              List.map
                (fun p ->
                  mkpat (Ppat_variant(label, Some p)))
                results
           end
-      | Tpat_record subpatterns ->
-         let pats = 
+      | Tpat_record (subpatterns, _closed_flag) ->
+         let pats =
            select
-             (List.map (fun (_,x) -> (loop x)) subpatterns)
+             (List.map (fun (_,_,_,x) -> (loop x)) subpatterns)
          in
-         let label_idents = 
-           List.map 
-             (fun (lbl,_) -> 
-               let id = fresh () in 
-               Hashtbl.add labels id lbl;
-               Longident.Lident id)  
+         let label_idents =
+           List.map
+             (fun (lbl_path,_,lbl,_) ->
+               let id = fresh () in
+               Hashtbl.add labels id (lbl_path, lbl);
+               Longident.Lident id)
              subpatterns
-         in 
+         in
          List.map
            (fun lst ->
-             let lst = List.combine label_idents lst in
-             mkpat (Ppat_record (lst, Open)))
+             let lst = List.map2 (fun lid pat ->
+                (mknoloc lid, pat)
+              )  label_idents lst in
+              mkpat (Ppat_record (lst, Open)))
            pats
       | Tpat_array lst ->
-         let results = select (List.map loop lst) in 
+         let results = select (List.map loop lst) in
          List.map (fun lst -> mkpat (Ppat_array lst)) results
       | Tpat_lazy p ->
-         let results = loop p in 
+         let results = loop p in
          List.map (fun p -> mkpat (Ppat_lazy p)) results
     in
-    let ps = loop typed in 
+    let ps = loop typed in
     (ps, constrs, labels)
 end
 
@@ -1804,10 +1862,14 @@ let do_check_partial ?pred exhaust loc casel pss = match pss with
     begin match exhaust None pss (List.length ps) with
     | Rnone -> Total
     | Rsome [u] ->
-       let v = 
-         match pred with 
+       let v =
+         match pred with
          | Some pred ->
-             let (patterns,constrs,labels) = Conv.conv u in 
+             let (patterns,constrs,labels) = Conv.conv u in
+(*              Hashtbl.iter (fun s (path, _) ->
+                Printf.fprintf stderr "CONV: %s -> %s \n%!" s (Path.name path))
+                constrs
+              ; *)
              get_first (pred constrs labels) patterns
          | None -> Some u
        in
@@ -1838,10 +1900,10 @@ let do_check_partial ?pred exhaust loc casel pss = match pss with
         fatal_error "Parmatch.check_partial"
     end
 
-let do_check_partial_normal loc casel pss = 
+let do_check_partial_normal loc casel pss =
   do_check_partial exhaust loc casel pss
 
-let do_check_partial_gadt pred loc casel pss = 
+let do_check_partial_gadt pred loc casel pss =
   do_check_partial ~pred exhaust_gadt loc casel pss
 
 
@@ -1866,7 +1928,7 @@ let extendable_path path =
     Path.same path Predef.path_option)
 
 let rec collect_paths_from_pat r p = match p.pat_desc with
-| Tpat_construct({cstr_tag=(Cstr_constant _|Cstr_block _)},ps) ->
+| Tpat_construct(_, _, {cstr_tag=(Cstr_constant _|Cstr_block _)},ps,_) ->
     let path =  get_type_path p.pat_type p.pat_env in
     List.fold_left
       collect_paths_from_pat
@@ -1874,16 +1936,17 @@ let rec collect_paths_from_pat r p = match p.pat_desc with
       ps
 | Tpat_any|Tpat_var _|Tpat_constant _| Tpat_variant (_,None,_) -> r
 | Tpat_tuple ps | Tpat_array ps
-| Tpat_construct ({cstr_tag=Cstr_exception _}, ps)->
+| Tpat_construct (_, _, {cstr_tag=Cstr_exception _}, ps,_)->
     List.fold_left collect_paths_from_pat r ps
-| Tpat_record lps ->
+| Tpat_record (lps,_) ->
     List.fold_left
-      (fun r (_,p) -> collect_paths_from_pat r p)
+      (fun r (_, _, _, p) -> collect_paths_from_pat r p)
       r lps
-| Tpat_variant (_, Some p, _) | Tpat_alias (p,_) -> collect_paths_from_pat r p
+| Tpat_variant (_, Some p, _) | Tpat_alias (p,_,_) -> collect_paths_from_pat r p
 | Tpat_or (p1,p2,_) ->
     collect_paths_from_pat (collect_paths_from_pat r p1) p2
-| Tpat_lazy p ->
+| Tpat_lazy p
+    ->
     collect_paths_from_pat r p
 
 
@@ -1967,26 +2030,26 @@ let rec inactive pat = match pat with
     false
 | Tpat_any | Tpat_var _ | Tpat_constant _ | Tpat_variant (_, None, _) ->
     true
-| Tpat_tuple ps | Tpat_construct (_, ps) | Tpat_array ps ->
+| Tpat_tuple ps | Tpat_construct (_, _, _, ps,_) | Tpat_array ps ->
     List.for_all (fun p -> inactive p.pat_desc) ps
-| Tpat_alias (p,_) | Tpat_variant (_, Some p, _) ->
+| Tpat_alias (p,_,_) | Tpat_variant (_, Some p, _) ->
     inactive p.pat_desc
-| Tpat_record ldps ->
-    List.exists (fun (_, p) -> inactive p.pat_desc) ldps
+| Tpat_record (ldps,_) ->
+    List.exists (fun (_, _, _, p) -> inactive p.pat_desc) ldps
 | Tpat_or (p,q,_) ->
     inactive p.pat_desc && inactive q.pat_desc
 
-
 (* A `fluid' pattern is both irrefutable and inactive *)
 
-let fluid pat = irrefutable pat && inactive pat.pat_desc
+let fluid pat =  irrefutable pat && inactive pat.pat_desc
+
+
 
 
 
 
 
 
-           
 (********************************)
 (* Exported exhustiveness check *)
 (********************************)
@@ -1996,7 +2059,7 @@ let fluid pat = irrefutable pat && inactive pat.pat_desc
    on exhaustive matches only.
 *)
 
-let check_partial_param do_check_partial do_check_fragile loc casel = 
+let check_partial_param do_check_partial do_check_fragile loc casel =
     if Warnings.is_active (Warnings.Partial_match "") then begin
       let pss = initial_matrix casel in
       let pss = get_mins le_pats pss in
@@ -2008,11 +2071,11 @@ let check_partial_param do_check_partial do_check_fragile loc casel =
       end ;
       total
     end else
-      Partial  
+      Partial
 
-let check_partial = 
-    check_partial_param 
-      do_check_partial_normal 
+let check_partial =
+    check_partial_param
+      do_check_partial_normal
       do_check_fragile_normal
 
 let check_partial_gadt pred loc casel =
@@ -2020,7 +2083,7 @@ let check_partial_gadt pred loc casel =
   let first_check = check_partial loc casel in
   match first_check with
   | Partial -> Partial
-  | Total -> 
+  | Total ->
       (* checks for missing GADT constructors *)
       check_partial_param (do_check_partial_gadt pred)
         do_check_fragile_gadt loc casel
index 0cfaad7b812d8928b67219da9f18793c676bfe4c..ccbf36a819aba16174ead883bafd78a6edd2d949 100644 (file)
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: parmatch.mli 12521 2012-05-31 07:57:32Z garrigue $ *)
 
 (* Detection of partial matches and unused match cases. *)
-open Types
+open Asttypes
 open Typedtree
+open Types
 
 val top_pretty : Format.formatter -> pattern -> unit
 val pretty_pat : pattern -> unit
@@ -26,7 +27,8 @@ val omegas : int -> pattern list
 val omega_list : 'a list -> pattern list
 val normalize_pat : pattern -> pattern
 val all_record_args :
-    (label_description * pattern) list -> (label_description * pattern) list
+    (Path.t * Longident.t loc * label_description * pattern) list ->
+    (Path.t * Longident.t loc * label_description * pattern) list
 
 val le_pat : pattern -> pattern -> bool
 val le_pats : pattern list -> pattern list -> bool
@@ -52,10 +54,10 @@ val complete_constrs :
 
 val pressure_variants: Env.t -> pattern list -> unit
 val check_partial: Location.t -> (pattern * expression) list -> partial
-val check_partial_gadt: 
-    ((string,constructor_description) Hashtbl.t -> 
-     (string,label_description) Hashtbl.t ->
-     Parsetree.pattern -> pattern option) -> 
+val check_partial_gadt:
+    ((string,Path.t * constructor_description) Hashtbl.t ->
+     (string,Path.t * label_description) Hashtbl.t ->
+     Parsetree.pattern -> pattern option) ->
     Location.t -> (pattern * expression) list -> partial
 val check_unused: Env.t -> (pattern * expression) list -> unit
 
index 7dc821a1e3344103bddc33fb8495a440ac8444e5..2b19a9f9ecaf4cf681eee306e0ed06f58e7b04e6 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: path.ml 12035 2012-01-18 09:15:27Z frisch $ *)
 
 type t =
     Pident of Ident.t
index bdcc6ccabe90df49e0dde5750c64a10d55ae92ac..aa9b99967837d79563fa2ef52ef83183fa3c0fd1 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: path.mli 12035 2012-01-18 09:15:27Z frisch $ *)
 
 (* Access paths *)
 
index 432440b17700949fbdef85a955e4f2b304843663..0b1fc340ecc7cb9493a4b43e2d7423fe2237d87f 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: predef.ml 12520 2012-05-31 07:41:37Z garrigue $ *)
 
 (* Predefined type constructors (with special typing rules in typecore) *)
 
@@ -19,21 +19,31 @@ open Path
 open Types
 open Btype
 
-let ident_int = Ident.create "int"
-and ident_char = Ident.create "char"
-and ident_string = Ident.create "string"
-and ident_float = Ident.create "float"
-and ident_bool = Ident.create "bool"
-and ident_unit = Ident.create "unit"
-and ident_exn = Ident.create "exn"
-and ident_array = Ident.create "array"
-and ident_list = Ident.create "list"
-and ident_format6 = Ident.create "format6"
-and ident_option = Ident.create "option"
-and ident_nativeint = Ident.create "nativeint"
-and ident_int32 = Ident.create "int32"
-and ident_int64 = Ident.create "int64"
-and ident_lazy_t = Ident.create "lazy_t"
+let builtin_idents = ref []
+
+let wrap create s =
+  let id = create s in
+  builtin_idents := (s, id) :: !builtin_idents;
+  id
+
+let ident_create = wrap Ident.create
+let ident_create_predef_exn = wrap Ident.create_predef_exn
+
+let ident_int = ident_create "int"
+and ident_char = ident_create "char"
+and ident_string = ident_create "string"
+and ident_float = ident_create "float"
+and ident_bool = ident_create "bool"
+and ident_unit = ident_create "unit"
+and ident_exn = ident_create "exn"
+and ident_array = ident_create "array"
+and ident_list = ident_create "list"
+and ident_format6 = ident_create "format6"
+and ident_option = ident_create "option"
+and ident_nativeint = ident_create "nativeint"
+and ident_int32 = ident_create "int32"
+and ident_int64 = ident_create "int64"
+and ident_lazy_t = ident_create "lazy_t"
 
 let path_int = Pident ident_int
 and path_char = Pident ident_char
@@ -66,24 +76,31 @@ and type_int32 = newgenty (Tconstr(path_int32, [], ref Mnil))
 and type_int64 = newgenty (Tconstr(path_int64, [], ref Mnil))
 and type_lazy_t t = newgenty (Tconstr(path_lazy_t, [t], ref Mnil))
 
-let ident_match_failure = Ident.create_predef_exn "Match_failure"
-and ident_out_of_memory = Ident.create_predef_exn "Out_of_memory"
-and ident_invalid_argument = Ident.create_predef_exn "Invalid_argument"
-and ident_failure = Ident.create_predef_exn "Failure"
-and ident_not_found = Ident.create_predef_exn "Not_found"
-and ident_sys_error = Ident.create_predef_exn "Sys_error"
-and ident_end_of_file = Ident.create_predef_exn "End_of_file"
-and ident_division_by_zero = Ident.create_predef_exn "Division_by_zero"
-and ident_stack_overflow = Ident.create_predef_exn "Stack_overflow"
-and ident_sys_blocked_io = Ident.create_predef_exn "Sys_blocked_io"
-and ident_assert_failure = Ident.create_predef_exn "Assert_failure"
+let ident_match_failure = ident_create_predef_exn "Match_failure"
+and ident_out_of_memory = ident_create_predef_exn "Out_of_memory"
+and ident_invalid_argument = ident_create_predef_exn "Invalid_argument"
+and ident_failure = ident_create_predef_exn "Failure"
+and ident_not_found = ident_create_predef_exn "Not_found"
+and ident_sys_error = ident_create_predef_exn "Sys_error"
+and ident_end_of_file = ident_create_predef_exn "End_of_file"
+and ident_division_by_zero = ident_create_predef_exn "Division_by_zero"
+and ident_stack_overflow = ident_create_predef_exn "Stack_overflow"
+and ident_sys_blocked_io = ident_create_predef_exn "Sys_blocked_io"
+and ident_assert_failure = ident_create_predef_exn "Assert_failure"
 and ident_undefined_recursive_module =
-        Ident.create_predef_exn "Undefined_recursive_module"
+        ident_create_predef_exn "Undefined_recursive_module"
 
 let path_match_failure = Pident ident_match_failure
 and path_assert_failure = Pident ident_assert_failure
 and path_undefined_recursive_module = Pident ident_undefined_recursive_module
 
+let ident_false = ident_create "false"
+and ident_true = ident_create "true"
+and ident_void = ident_create "()"
+and ident_nil = ident_create "[]"
+and ident_cons = ident_create "::"
+and ident_none = ident_create "None"
+and ident_some = ident_create "Some"
 let build_initial_env add_type add_exception empty_env =
   let decl_abstr =
     {type_params = [];
@@ -97,7 +114,7 @@ let build_initial_env add_type add_exception empty_env =
   and decl_bool =
     {type_params = [];
      type_arity = 0;
-     type_kind = Type_variant(["false", [], None; "true", [], None]);
+     type_kind = Type_variant([ident_false, [], None; ident_true, [], None]);
      type_loc = Location.none;
      type_private = Public;
      type_manifest = None;
@@ -106,7 +123,7 @@ let build_initial_env add_type add_exception empty_env =
   and decl_unit =
     {type_params = [];
      type_arity = 0;
-     type_kind = Type_variant(["()", [], None]);
+     type_kind = Type_variant([ident_void, [], None]);
      type_loc = Location.none;
      type_private = Public;
      type_manifest = None;
@@ -136,7 +153,8 @@ let build_initial_env add_type add_exception empty_env =
     {type_params = [tvar];
      type_arity = 1;
      type_kind =
-     Type_variant(["[]", [], None; "::", [tvar; type_list tvar], None]);
+     Type_variant([ident_nil, [], None; ident_cons, [tvar; type_list tvar],
+                   None]);
      type_loc = Location.none;
      type_private = Public;
      type_manifest = None;
@@ -162,7 +180,7 @@ let build_initial_env add_type add_exception empty_env =
     let tvar = newgenvar() in
     {type_params = [tvar];
      type_arity = 1;
-     type_kind = Type_variant(["None", [], None; "Some", [tvar], None]);
+     type_kind = Type_variant([ident_none, [], None; ident_some, [tvar], None]);
      type_loc = Location.none;
      type_private = Public;
      type_manifest = None;
@@ -180,7 +198,8 @@ let build_initial_env add_type add_exception empty_env =
      type_newtype_level = None}
   in
 
-  let add_exception id l = add_exception id { exn_args = l; exn_loc = Location.none } in
+  let add_exception id l =
+    add_exception id { exn_args = l; exn_loc = Location.none } in
   add_exception ident_match_failure
                          [newgenty (Ttuple[type_string; type_int; type_int])] (
   add_exception ident_out_of_memory [] (
@@ -225,4 +244,5 @@ let builtin_values =
    be defined in this file (above!) without breaking .cmi
    compatibility. *)
 
-let _ = Ident.set_current_time 999 
+let _ = Ident.set_current_time 999
+let builtin_idents = List.rev !builtin_idents
index 43e37965c8d34b4c97042caf82049bb7ab379516..a582bed415c3476056f8535bd343c310a52ca991 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: predef.mli 12511 2012-05-30 13:29:48Z lefessan $ *)
 
 (* Predefined type constructors (with special typing rules in typecore) *)
 
@@ -63,3 +63,4 @@ val build_initial_env:
 (* To initialize linker tables *)
 
 val builtin_values: (string * Ident.t) list
+val builtin_idents: (string * Ident.t) list
index a5c376596764ccc3b8b47ae6f8046dccde508181..41c2bb83830162482302ac54f7ef530c202b4095 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: primitive.ml 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (* Description of primitive functions *)
 
index 0b48079a825a30a7a718292c5921ff716557a9ad..a9b250486a6c1fc4b8657feb0997262c1e986aec 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: primitive.mli 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (* Description of primitive functions *)
 
index 84c0d19425a1dcec3ab02c36c2703c5dfcb2973e..1932a7282d81c7ca13408748afdcce12228cf48d 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: printtyp.ml 12520 2012-05-31 07:41:37Z garrigue $ *)
 
 (* Printing functions *)
 
@@ -449,7 +449,8 @@ let rec tree_of_typexp sch ty =
     | Tunivar _ ->
         Otyp_var (false, name_of_type ty)
     | Tpackage (p, n, tyl) ->
-        let n = List.map (fun li -> String.concat "." (Longident.flatten li)) n in
+        let n =
+          List.map (fun li -> String.concat "." (Longident.flatten li)) n in
         Otyp_module (Path.name p, n, tree_of_typlist sch tyl)
   in
   if List.memq px !delayed then delayed := List.filter ((!=) px) !delayed;
@@ -587,8 +588,8 @@ let rec tree_of_type_decl id decl =
   begin match decl.type_kind with
   | Type_abstract -> ()
   | Type_variant cstrs ->
-      List.iter 
-       (fun (_, args,ret_type_opt) -> 
+      List.iter
+       (fun (_, args,ret_type_opt) ->
          List.iter mark_loops args;
          may mark_loops ret_type_opt)
        cstrs
@@ -647,6 +648,7 @@ let rec tree_of_type_decl id decl =
   (name, args, ty, priv, constraints)
 
 and tree_of_constructor (name, args, ret_type_opt) =
+  let name = Ident.name name in
   if ret_type_opt = None then (name, tree_of_typlist false args, None) else
   let nm = !names in
   names := [];
@@ -654,7 +656,7 @@ and tree_of_constructor (name, args, ret_type_opt) =
   let args = tree_of_typlist false args in
   names := nm;
   (name, args, ret)
-    
+
 
 and tree_of_constructor_ret =
   function
@@ -662,7 +664,7 @@ and tree_of_constructor_ret =
     | Some ret_type -> Some (tree_of_typexp false ret_type)
 
 and tree_of_label (name, mut, arg) =
-  (name, mut = Mutable, tree_of_typexp false arg)
+  (Ident.name name, mut = Mutable, tree_of_typexp false arg)
 
 let tree_of_type_declaration id decl rs =
   Osig_type (tree_of_type_decl id decl, tree_of_rec rs)
@@ -719,14 +721,14 @@ let tree_of_metho sch concrete csil (lab, kind, ty) =
   else csil
 
 let rec prepare_class_type params = function
-  | Tcty_constr (p, tyl, cty) ->
+  | Cty_constr (p, tyl, cty) ->
       let sty = Ctype.self_type cty in
       if List.memq (proxy sty) !visited_objects
       || not (List.for_all is_Tvar params)
       || List.exists (deep_occur sty) tyl
       then prepare_class_type params cty
       else List.iter mark_loops tyl
-  | Tcty_signature sign ->
+  | Cty_signature sign ->
       let sty = repr sign.cty_self in
       (* Self may have a name *)
       let px = proxy sty in
@@ -737,13 +739,13 @@ let rec prepare_class_type params = function
       in
       List.iter (fun met -> mark_loops (fst (method_type met))) fields;
       Vars.iter (fun _ (_, _, ty) -> mark_loops ty) sign.cty_vars
-  | Tcty_fun (_, ty, cty) ->
+  | Cty_fun (_, ty, cty) ->
       mark_loops ty;
       prepare_class_type params cty
 
 let rec tree_of_class_type sch params =
   function
-  | Tcty_constr (p', tyl, cty) ->
+  | Cty_constr (p', tyl, cty) ->
       let sty = Ctype.self_type cty in
       if List.memq (proxy sty) !visited_objects
       || not (List.for_all is_Tvar params)
@@ -751,7 +753,7 @@ let rec tree_of_class_type sch params =
         tree_of_class_type sch params cty
       else
         Octy_constr (tree_of_path p', tree_of_typlist true tyl)
-  | Tcty_signature sign ->
+  | Cty_signature sign ->
       let sty = repr sign.cty_self in
       let self_ty =
         if is_aliased sty then
@@ -783,7 +785,7 @@ let rec tree_of_class_type sch params =
         List.fold_left (tree_of_metho sch sign.cty_concr) csil fields
       in
       Octy_signature (self_ty, List.rev csil)
-  | Tcty_fun (l, ty, cty) ->
+  | Cty_fun (l, ty, cty) ->
       let lab = if !print_labels && l <> "" || is_optional l then l else "" in
       let ty =
        if is_optional l then
@@ -867,33 +869,33 @@ let cltype_declaration id ppf cl =
 (* Print a module type *)
 
 let rec tree_of_modtype = function
-  | Tmty_ident p ->
+  | Mty_ident p ->
       Omty_ident (tree_of_path p)
-  | Tmty_signature sg ->
+  | Mty_signature sg ->
       Omty_signature (tree_of_signature sg)
-  | Tmty_functor(param, ty_arg, ty_res) ->
+  | Mty_functor(param, ty_arg, ty_res) ->
       Omty_functor
         (Ident.name param, tree_of_modtype ty_arg, tree_of_modtype ty_res)
 
 and tree_of_signature = function
   | [] -> []
-  | Tsig_value(id, decl) :: rem ->
+  | Sig_value(id, decl) :: rem ->
       tree_of_value_description id decl :: tree_of_signature rem
-  | Tsig_type(id, _, _) :: rem when is_row_name (Ident.name id) ->
+  | Sig_type(id, _, _) :: rem when is_row_name (Ident.name id) ->
       tree_of_signature rem
-  | Tsig_type(id, decl, rs) :: rem ->
+  | Sig_type(id, decl, rs) :: rem ->
       Osig_type(tree_of_type_decl id decl, tree_of_rec rs) ::
       tree_of_signature rem
-  | Tsig_exception(id, decl) :: rem ->
+  | Sig_exception(id, decl) :: rem ->
       tree_of_exception_declaration id decl :: tree_of_signature rem
-  | Tsig_module(id, mty, rs) :: rem ->
+  | Sig_module(id, mty, rs) :: rem ->
       Osig_module (Ident.name id, tree_of_modtype mty, tree_of_rec rs) ::
       tree_of_signature rem
-  | Tsig_modtype(id, decl) :: rem ->
+  | Sig_modtype(id, decl) :: rem ->
       tree_of_modtype_declaration id decl :: tree_of_signature rem
-  | Tsig_class(id, decl, rs) :: ctydecl :: tydecl1 :: tydecl2 :: rem ->
+  | Sig_class(id, decl, rs) :: ctydecl :: tydecl1 :: tydecl2 :: rem ->
       tree_of_class_declaration id decl rs :: tree_of_signature rem
-  | Tsig_cltype(id, decl, rs) :: tydecl1 :: tydecl2 :: rem ->
+  | Sig_class_type(id, decl, rs) :: tydecl1 :: tydecl2 :: rem ->
       tree_of_cltype_declaration id decl rs :: tree_of_signature rem
   | _ ->
       assert false
@@ -901,8 +903,8 @@ and tree_of_signature = function
 and tree_of_modtype_declaration id decl =
   let mty =
     match decl with
-    | Tmodtype_abstract -> Omty_abstract
-    | Tmodtype_manifest mty -> tree_of_modtype mty
+    | Modtype_abstract -> Omty_abstract
+    | Modtype_manifest mty -> tree_of_modtype mty
   in
   Osig_modtype (Ident.name id, mty)
 
@@ -992,7 +994,7 @@ let rec mismatch unif = function
 
 let explanation unif t3 t4 ppf =
   match t3.desc, t4.desc with
-  | Tfield _, Tvar _ | Tvar _, Tfield _ ->
+  | Ttuple [], Tvar _ | Tvar _, Ttuple [] ->
       fprintf ppf "@,Self type cannot escape its class"
   | Tconstr (p, tl, _), Tvar _
     when unif && t4.level < Path.binding_time p ->
index 5417ebf41f44f0174ab31504228c3cbe7441bd10..f2865204291816f09be2845819a0ab12f896ac2d 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: printtyp.mli 12521 2012-05-31 07:57:32Z garrigue $ *)
 
 (* Printing functions *)
 
@@ -38,20 +38,28 @@ val type_scheme_max: ?b_reset_names: bool ->
 (* Fin Maxence *)
 val tree_of_value_description: Ident.t -> value_description -> out_sig_item
 val value_description: Ident.t -> formatter -> value_description -> unit
-val tree_of_type_declaration: Ident.t -> type_declaration -> rec_status -> out_sig_item
+val tree_of_type_declaration:
+    Ident.t -> type_declaration -> rec_status -> out_sig_item
 val type_declaration: Ident.t -> formatter -> type_declaration -> unit
-val tree_of_exception_declaration: Ident.t -> exception_declaration -> out_sig_item
-val exception_declaration: Ident.t -> formatter -> exception_declaration -> unit
+val tree_of_exception_declaration:
+    Ident.t -> exception_declaration -> out_sig_item
+val exception_declaration:
+    Ident.t -> formatter -> exception_declaration -> unit
 val tree_of_module: Ident.t -> module_type -> rec_status -> out_sig_item
 val modtype: formatter -> module_type -> unit
 val signature: formatter -> signature -> unit
-val tree_of_modtype_declaration: Ident.t -> modtype_declaration -> out_sig_item
+val tree_of_modtype_declaration:
+    Ident.t -> modtype_declaration -> out_sig_item
+val tree_of_signature: Types.signature -> out_sig_item list
+val tree_of_typexp: bool -> type_expr -> out_type
 val modtype_declaration: Ident.t -> formatter -> modtype_declaration -> unit
 val class_type: formatter -> class_type -> unit
-val tree_of_class_declaration: Ident.t -> class_declaration -> rec_status -> out_sig_item
+val tree_of_class_declaration:
+    Ident.t -> class_declaration -> rec_status -> out_sig_item
 val class_declaration: Ident.t -> formatter -> class_declaration -> unit
-val tree_of_cltype_declaration: Ident.t -> cltype_declaration -> rec_status -> out_sig_item
-val cltype_declaration: Ident.t -> formatter -> cltype_declaration -> unit
+val tree_of_cltype_declaration:
+    Ident.t -> class_type_declaration -> rec_status -> out_sig_item
+val cltype_declaration: Ident.t -> formatter -> class_type_declaration -> unit
 val type_expansion: type_expr -> Format.formatter -> type_expr -> unit
 val prepare_expansion: type_expr * type_expr -> type_expr * type_expr
 val trace: bool -> string -> formatter -> (type_expr * type_expr) list -> unit
diff --git a/typing/printtyped.ml b/typing/printtyped.ml
new file mode 100644 (file)
index 0000000..28969ff
--- /dev/null
@@ -0,0 +1,761 @@
+(***********************************************************************)
+(*                                                                     *)
+(*                                OCaml                                *)
+(*                                                                     *)
+(*                  Fabrice Le Fessant, INRIA Saclay                   *)
+(*                                                                     *)
+(*  Copyright 1999 Institut National de Recherche en Informatique et   *)
+(*  en Automatique.  All rights reserved.  This file is distributed    *)
+(*  under the terms of the Q Tublic License version 1.0.               *)
+(*                                                                     *)
+(***********************************************************************)
+
+(* $Id: printast.ml 12414 2012-05-02 14:36:55Z lefessan $ *)
+
+open Asttypes;;
+open Format;;
+open Lexing;;
+open Location;;
+open Typedtree;;
+
+let fmt_position f l =
+  if l.pos_lnum = -1
+  then fprintf f "%s[%d]" l.pos_fname l.pos_cnum
+  else fprintf f "%s[%d,%d+%d]" l.pos_fname l.pos_lnum l.pos_bol
+               (l.pos_cnum - l.pos_bol)
+;;
+
+let fmt_location f loc =
+  fprintf f "(%a..%a)" fmt_position loc.loc_start fmt_position loc.loc_end;
+  if loc.loc_ghost then fprintf f " ghost";
+;;
+
+let rec fmt_longident_aux f x =
+  match x with
+  | Longident.Lident (s) -> fprintf f "%s" s;
+  | Longident.Ldot (y, s) -> fprintf f "%a.%s" fmt_longident_aux y s;
+  | Longident.Lapply (y, z) ->
+      fprintf f "%a(%a)" fmt_longident_aux y fmt_longident_aux z;
+;;
+
+let fmt_longident_noloc f x = fprintf f "\"%a\"" fmt_longident_aux x;;
+let fmt_longident f x = fprintf f "\"%a\"" fmt_longident_aux x.txt;;
+
+let fmt_ident = Ident.print
+
+let rec fmt_path_aux f x =
+  match x with
+  | Path.Pident (s) -> fprintf f "%a" fmt_ident s;
+  | Path.Pdot (y, s, _pos) -> fprintf f "%a.%s" fmt_path_aux y s;
+  | Path.Papply (y, z) ->
+      fprintf f "%a(%a)" fmt_path_aux y fmt_path_aux z;
+;;
+
+let fmt_path f x = fprintf f "\"%a\"" fmt_path_aux x;;
+let fmt_path_loc f x = fprintf f "\"%a\"" fmt_path_aux x.txt;;
+
+let fmt_constant f x =
+  match x with
+  | Const_int (i) -> fprintf f "Const_int %d" i;
+  | Const_char (c) -> fprintf f "Const_char %02x" (Char.code c);
+  | Const_string (s) -> fprintf f "Const_string %S" s;
+  | Const_float (s) -> fprintf f "Const_float %s" s;
+  | Const_int32 (i) -> fprintf f "Const_int32 %ld" i;
+  | Const_int64 (i) -> fprintf f "Const_int64 %Ld" i;
+  | Const_nativeint (i) -> fprintf f "Const_nativeint %nd" i;
+;;
+
+let fmt_mutable_flag f x =
+  match x with
+  | Immutable -> fprintf f "Immutable";
+  | Mutable -> fprintf f "Mutable";
+;;
+
+let fmt_virtual_flag f x =
+  match x with
+  | Virtual -> fprintf f "Virtual";
+  | Concrete -> fprintf f "Concrete";
+;;
+
+let fmt_override_flag f x =
+  match x with
+  | Override -> fprintf f "Override";
+  | Fresh -> fprintf f "Fresh";
+;;
+
+let fmt_rec_flag f x =
+  match x with
+  | Nonrecursive -> fprintf f "Nonrec";
+  | Recursive -> fprintf f "Rec";
+  | Default -> fprintf f "Default";
+;;
+
+let fmt_direction_flag f x =
+  match x with
+  | Upto -> fprintf f "Up";
+  | Downto -> fprintf f "Down";
+;;
+
+let fmt_private_flag f x =
+  match x with
+  | Public -> fprintf f "Public";
+  | Private -> fprintf f "Private";
+;;
+
+let line i f s (*...*) =
+  fprintf f "%s" (String.make (2*i) ' ');
+  fprintf f s (*...*)
+;;
+
+let list i f ppf l =
+  match l with
+  | [] -> line i ppf "[]\n";
+  | _ :: _ ->
+     line i ppf "[\n";
+     List.iter (f (i+1) ppf) l;
+     line i ppf "]\n";
+;;
+
+let option i f ppf x =
+  match x with
+  | None -> line i ppf "None\n";
+  | Some x ->
+      line i ppf "Some\n";
+      f (i+1) ppf x;
+;;
+
+let longident i ppf li = line i ppf "%a\n" fmt_longident li;;
+let path i ppf li = line i ppf "%a\n" fmt_path li;;
+let ident i ppf li = line i ppf "%a\n" fmt_ident li;;
+let string i ppf s = line i ppf "\"%s\"\n" s;;
+let string_loc i ppf s = line i ppf "\"%s\"\n" s.txt;;
+let bool i ppf x = line i ppf "%s\n" (string_of_bool x);;
+let label i ppf x = line i ppf "label=\"%s\"\n" x;;
+
+let rec core_type i ppf x =
+  line i ppf "core_type %a\n" fmt_location x.ctyp_loc;
+  let i = i+1 in
+  match x.ctyp_desc with
+  | Ttyp_any -> line i ppf "Ptyp_any\n";
+  | Ttyp_var (s) -> line i ppf "Ptyp_var %s\n" s;
+  | Ttyp_arrow (l, ct1, ct2) ->
+      line i ppf "Ptyp_arrow\n";
+      string i ppf l;
+      core_type i ppf ct1;
+      core_type i ppf ct2;
+  | Ttyp_tuple l ->
+      line i ppf "Ptyp_tuple\n";
+      list i core_type ppf l;
+  | Ttyp_constr (li, _, l) ->
+      line i ppf "Ptyp_constr %a\n" fmt_path li;
+      list i core_type ppf l;
+  | Ttyp_variant (l, closed, low) ->
+      line i ppf "Ptyp_variant closed=%s\n" (string_of_bool closed);
+      list i label_x_bool_x_core_type_list ppf l;
+      option i (fun i -> list i string) ppf low
+  | Ttyp_object (l) ->
+      line i ppf "Ptyp_object\n";
+      list i core_field_type ppf l;
+  | Ttyp_class (li, _, l, low) ->
+      line i ppf "Ptyp_class %a\n" fmt_path li;
+      list i core_type ppf l;
+      list i string ppf low
+  | Ttyp_alias (ct, s) ->
+      line i ppf "Ptyp_alias \"%s\"\n" s;
+      core_type i ppf ct;
+  | Ttyp_poly (sl, ct) ->
+      line i ppf "Ptyp_poly%a\n"
+        (fun ppf -> List.iter (fun x -> fprintf ppf " '%s" x)) sl;
+      core_type i ppf ct;
+  | Ttyp_package { pack_name = s; pack_fields = l } ->
+      line i ppf "Ptyp_package %a\n" fmt_path s;
+      list i package_with ppf l;
+
+and package_with i ppf (s, t) =
+  line i ppf "with type %a\n" fmt_longident s;
+  core_type i ppf t
+
+and core_field_type i ppf x =
+  line i ppf "core_field_type %a\n" fmt_location x.field_loc;
+  let i = i+1 in
+  match x.field_desc with
+  | Tcfield (s, ct) ->
+      line i ppf "Pfield \"%s\"\n" s;
+      core_type i ppf ct;
+  | Tcfield_var -> line i ppf "Pfield_var\n";
+
+and pattern i ppf x =
+  line i ppf "pattern %a\n" fmt_location x.pat_loc;
+  let i = i+1 in
+  match x.pat_extra with
+    | (Tpat_unpack, _) :: rem ->
+        line i ppf "Tpat_unpack\n";
+        pattern i ppf { x with pat_extra = rem }
+    | (Tpat_constraint cty, _) :: rem ->
+        line i ppf "Tpat_constraint\n";
+        core_type i ppf cty;
+        pattern i ppf { x with pat_extra = rem }
+    | (Tpat_type (id, _), _) :: rem ->
+        line i ppf "Tpat_type %a\n" fmt_path id;
+        pattern i ppf { x with pat_extra = rem }
+    | [] ->
+  match x.pat_desc with
+  | Tpat_any -> line i ppf "Ppat_any\n";
+  | Tpat_var (s,_) -> line i ppf "Ppat_var \"%a\"\n" fmt_ident s;
+  | Tpat_alias (p, s,_) ->
+      line i ppf "Ppat_alias \"%a\"\n" fmt_ident s;
+      pattern i ppf p;
+  | Tpat_constant (c) -> line i ppf "Ppat_constant %a\n" fmt_constant c;
+  | Tpat_tuple (l) ->
+      line i ppf "Ppat_tuple\n";
+      list i pattern ppf l;
+  | Tpat_construct (li, _, _, po, explicity_arity) ->
+      line i ppf "Ppat_construct %a\n" fmt_path li;
+      list i pattern ppf po;
+      bool i ppf explicity_arity;
+  | Tpat_variant (l, po, _) ->
+      line i ppf "Ppat_variant \"%s\"\n" l;
+      option i pattern ppf po;
+  | Tpat_record (l, c) ->
+      line i ppf "Ppat_record\n";
+      list i longident_x_pattern ppf l;
+  | Tpat_array (l) ->
+      line i ppf "Ppat_array\n";
+      list i pattern ppf l;
+  | Tpat_or (p1, p2, _) ->
+      line i ppf "Ppat_or\n";
+      pattern i ppf p1;
+      pattern i ppf p2;
+  | Tpat_lazy p ->
+      line i ppf "Ppat_lazy\n";
+      pattern i ppf p;
+
+and expression i ppf x =
+  line i ppf "expression %a\n" fmt_location x.exp_loc;
+  let i = i+1 in
+  match x.exp_extra with
+    | (Texp_constraint (cto1, cto2), _) :: rem ->
+      line i ppf "Pexp_constraint\n";
+      option i core_type ppf cto1;
+      option i core_type ppf cto2;
+      expression i ppf { x with exp_extra = rem }
+  | (Texp_open (m, _,_), _) :: rem ->
+      line i ppf "Pexp_open \"%a\"\n" fmt_path m;
+      expression i ppf { x with exp_extra = rem }
+    | [] ->
+  match x.exp_desc with
+  | Texp_ident (li,_,_) -> line i ppf "Pexp_ident %a\n" fmt_path li;
+  | Texp_instvar (_, li,_) -> line i ppf "Pexp_instvar %a\n" fmt_path li;
+  | Texp_constant (c) -> line i ppf "Pexp_constant %a\n" fmt_constant c;
+  | Texp_let (rf, l, e) ->
+      line i ppf "Pexp_let %a\n" fmt_rec_flag rf;
+      list i pattern_x_expression_def ppf l;
+      expression i ppf e;
+  | Texp_function (p, l, _partial) ->
+      line i ppf "Pexp_function \"%s\"\n" p;
+(*      option i expression ppf eo; *)
+      list i pattern_x_expression_case ppf l;
+  | Texp_apply (e, l) ->
+      line i ppf "Pexp_apply\n";
+      expression i ppf e;
+      list i label_x_expression ppf l;
+  | Texp_match (e, l, partial) ->
+      line i ppf "Pexp_match\n";
+      expression i ppf e;
+      list i pattern_x_expression_case ppf l;
+  | Texp_try (e, l) ->
+      line i ppf "Pexp_try\n";
+      expression i ppf e;
+      list i pattern_x_expression_case ppf l;
+  | Texp_tuple (l) ->
+      line i ppf "Pexp_tuple\n";
+      list i expression ppf l;
+  | Texp_construct (li, _, _, eo, b) ->
+      line i ppf "Pexp_construct %a\n" fmt_path li;
+      list i expression ppf eo;
+      bool i ppf b;
+  | Texp_variant (l, eo) ->
+      line i ppf "Pexp_variant \"%s\"\n" l;
+      option i expression ppf eo;
+  | Texp_record (l, eo) ->
+      line i ppf "Pexp_record\n";
+      list i longident_x_expression ppf l;
+      option i expression ppf eo;
+  | Texp_field (e, li, _, _) ->
+      line i ppf "Pexp_field\n";
+      expression i ppf e;
+      path i ppf li;
+  | Texp_setfield (e1, li, _, _, e2) ->
+      line i ppf "Pexp_setfield\n";
+      expression i ppf e1;
+      path i ppf li;
+      expression i ppf e2;
+  | Texp_array (l) ->
+      line i ppf "Pexp_array\n";
+      list i expression ppf l;
+  | Texp_ifthenelse (e1, e2, eo) ->
+      line i ppf "Pexp_ifthenelse\n";
+      expression i ppf e1;
+      expression i ppf e2;
+      option i expression ppf eo;
+  | Texp_sequence (e1, e2) ->
+      line i ppf "Pexp_sequence\n";
+      expression i ppf e1;
+      expression i ppf e2;
+  | Texp_while (e1, e2) ->
+      line i ppf "Pexp_while\n";
+      expression i ppf e1;
+      expression i ppf e2;
+  | Texp_for (s, _, e1, e2, df, e3) ->
+      line i ppf "Pexp_for \"%a\" %a\n" fmt_ident s fmt_direction_flag df;
+      expression i ppf e1;
+      expression i ppf e2;
+      expression i ppf e3;
+  | Texp_when (e1, e2) ->
+      line i ppf "Pexp_when\n";
+      expression i ppf e1;
+      expression i ppf e2;
+  | Texp_send (e, Tmeth_name s, eo) ->
+      line i ppf "Pexp_send \"%s\"\n" s;
+      expression i ppf e;
+      option i expression ppf eo
+  | Texp_send (e, Tmeth_val s, eo) ->
+      line i ppf "Pexp_send \"%a\"\n" fmt_ident s;
+      expression i ppf e;
+      option i expression ppf eo
+  | Texp_new (li, _, _) -> line i ppf "Pexp_new %a\n" fmt_path li;
+  | Texp_setinstvar (_, s, _, e) ->
+      line i ppf "Pexp_setinstvar \"%a\"\n" fmt_path s;
+      expression i ppf e;
+  | Texp_override (_, l) ->
+      line i ppf "Pexp_override\n";
+      list i string_x_expression ppf l;
+  | Texp_letmodule (s, _, me, e) ->
+      line i ppf "Pexp_letmodule \"%a\"\n" fmt_ident s;
+      module_expr i ppf me;
+      expression i ppf e;
+  | Texp_assert (e) ->
+      line i ppf "Pexp_assert";
+      expression i ppf e;
+  | Texp_assertfalse ->
+      line i ppf "Pexp_assertfalse";
+  | Texp_lazy (e) ->
+      line i ppf "Pexp_lazy";
+      expression i ppf e;
+  | Texp_poly (e, cto) ->
+      line i ppf "Pexp_poly\n";
+      expression i ppf e;
+      option i core_type ppf cto;
+  | Texp_object (s, _) ->
+      line i ppf "Pexp_object";
+      class_structure i ppf s
+  | Texp_newtype (s, e) ->
+      line i ppf "Pexp_newtype \"%s\"\n" s;
+      expression i ppf e
+  | Texp_pack me ->
+      line i ppf "Pexp_pack";
+      module_expr i ppf me
+
+and value_description i ppf x =
+  line i ppf "value_description\n";
+  core_type (i+1) ppf x.val_desc;
+  list (i+1) string ppf x.val_prim;
+
+and string_option_underscore i ppf =
+  function
+    | Some x ->
+       string i ppf x.txt
+    | None ->
+       string i ppf "_"
+
+and type_declaration i ppf x =
+  line i ppf "type_declaration %a\n" fmt_location x.typ_loc;
+  let i = i+1 in
+  line i ppf "ptype_params =\n";
+  list (i+1) string_option_underscore ppf x.typ_params;
+  line i ppf "ptype_cstrs =\n";
+  list (i+1) core_type_x_core_type_x_location ppf x.typ_cstrs;
+  line i ppf "ptype_kind =\n";
+  type_kind (i+1) ppf x.typ_kind;
+  line i ppf "ptype_private = %a\n" fmt_private_flag x.typ_private;
+  line i ppf "ptype_manifest =\n";
+  option (i+1) core_type ppf x.typ_manifest;
+
+and type_kind i ppf x =
+  match x with
+  | Ttype_abstract ->
+      line i ppf "Ptype_abstract\n"
+  | Ttype_variant l ->
+      line i ppf "Ptype_variant\n";
+      list (i+1) string_x_core_type_list_x_location ppf l;
+  | Ttype_record l ->
+      line i ppf "Ptype_record\n";
+      list (i+1) string_x_mutable_flag_x_core_type_x_location ppf l;
+
+and exception_declaration i ppf x = list i core_type ppf x
+
+and class_type i ppf x =
+  line i ppf "class_type %a\n" fmt_location x.cltyp_loc;
+  let i = i+1 in
+  match x.cltyp_desc with
+  | Tcty_constr (li, _, l) ->
+      line i ppf "Pcty_constr %a\n" fmt_path li;
+      list i core_type ppf l;
+  | Tcty_signature (cs) ->
+      line i ppf "Pcty_signature\n";
+      class_signature i ppf cs;
+  | Tcty_fun (l, co, cl) ->
+      line i ppf "Pcty_fun \"%s\"\n" l;
+      core_type i ppf co;
+      class_type i ppf cl;
+
+and class_signature i ppf { csig_self = ct; csig_fields = l } =
+  line i ppf "class_signature\n";
+  core_type (i+1) ppf ct;
+  list (i+1) class_type_field ppf l;
+
+and class_type_field i ppf x =
+  let loc = x.ctf_loc in
+  match x.ctf_desc with
+  | Tctf_inher (ct) ->
+      line i ppf "Pctf_inher\n";
+      class_type i ppf ct;
+  | Tctf_val (s, mf, vf, ct) ->
+      line i ppf
+        "Pctf_val \"%s\" %a %a %a\n" s
+        fmt_mutable_flag mf fmt_virtual_flag vf fmt_location loc;
+      core_type (i+1) ppf ct;
+  | Tctf_virt (s, pf, ct) ->
+      line i ppf
+        "Pctf_virt \"%s\" %a %a\n" s fmt_private_flag pf fmt_location loc;
+      core_type (i+1) ppf ct;
+  | Tctf_meth (s, pf, ct) ->
+      line i ppf
+        "Pctf_meth \"%s\" %a %a\n" s fmt_private_flag pf fmt_location loc;
+      core_type (i+1) ppf ct;
+  | Tctf_cstr (ct1, ct2) ->
+      line i ppf "Pctf_cstr %a\n" fmt_location loc;
+      core_type i ppf ct1;
+      core_type i ppf ct2;
+
+and class_description i ppf x =
+  line i ppf "class_description %a\n" fmt_location x.ci_loc;
+  let i = i+1 in
+  line i ppf "pci_virt = %a\n" fmt_virtual_flag x.ci_virt;
+  line i ppf "pci_params =\n";
+  string_list_x_location (i+1) ppf x.ci_params;
+  line i ppf "pci_name = \"%s\"\n" x.ci_id_name.txt;
+  line i ppf "pci_expr =\n";
+  class_type (i+1) ppf x.ci_expr;
+
+and class_type_declaration i ppf x =
+  line i ppf "class_type_declaration %a\n" fmt_location x.ci_loc;
+  let i = i+1 in
+  line i ppf "pci_virt = %a\n" fmt_virtual_flag x.ci_virt;
+  line i ppf "pci_params =\n";
+  string_list_x_location (i+1) ppf x.ci_params;
+  line i ppf "pci_name = \"%s\"\n" x.ci_id_name.txt;
+  line i ppf "pci_expr =\n";
+  class_type (i+1) ppf x.ci_expr;
+
+and class_expr i ppf x =
+  line i ppf "class_expr %a\n" fmt_location x.cl_loc;
+  let i = i+1 in
+  match x.cl_desc with
+  | Tcl_ident (li, _, l) ->
+      line i ppf "Pcl_constr %a\n" fmt_path li;
+      list i core_type ppf l;
+  | Tcl_structure (cs) ->
+      line i ppf "Pcl_structure\n";
+      class_structure i ppf cs;
+  | Tcl_fun (l, eo, p, e, _) -> assert false (* TODO *)
+(*      line i ppf "Pcl_fun\n";
+      label i ppf l;
+      option i expression ppf eo;
+      pattern i ppf p;
+      class_expr i ppf e; *)
+  | Tcl_apply (ce, l) ->
+      line i ppf "Pcl_apply\n";
+      class_expr i ppf ce;
+      list i label_x_expression ppf l;
+  | Tcl_let (rf, l1, l2, ce) ->
+      line i ppf "Pcl_let %a\n" fmt_rec_flag rf;
+      list i pattern_x_expression_def ppf l1;
+      list i ident_x_loc_x_expression_def ppf l2;
+      class_expr i ppf ce;
+  | Tcl_constraint (ce, Some ct, _, _, _) ->
+      line i ppf "Pcl_constraint\n";
+      class_expr i ppf ce;
+      class_type i ppf ct;
+  | Tcl_constraint (_, None, _, _, _) -> assert false
+        (* TODO : is it possible ? see parsetree *)
+
+and class_structure i ppf { cstr_pat = p; cstr_fields = l } =
+  line i ppf "class_structure\n";
+  pattern (i+1) ppf p;
+  list (i+1) class_field ppf l;
+
+and class_field i ppf x = assert false (* TODO *)
+(*  let loc = x.cf_loc in
+  match x.cf_desc with
+  | Tcf_inher (ovf, ce, so) ->
+      line i ppf "Pcf_inher %a\n" fmt_override_flag ovf;
+      class_expr (i+1) ppf ce;
+      option (i+1) string ppf so;
+  | Tcf_valvirt (s, mf, ct) ->
+      line i ppf "Pcf_valvirt \"%s\" %a %a\n"
+        s.txt fmt_mutable_flag mf fmt_location loc;
+      core_type (i+1) ppf ct;
+  | Tcf_val (s, mf, ovf, e) ->
+      line i ppf "Pcf_val \"%s\" %a %a %a\n"
+        s.txt fmt_mutable_flag mf fmt_override_flag ovf fmt_location loc;
+      expression (i+1) ppf e;
+  | Tcf_virt (s, pf, ct) ->
+      line i ppf "Pcf_virt \"%s\" %a %a\n"
+        s.txt fmt_private_flag pf fmt_location loc;
+      core_type (i+1) ppf ct;
+  | Tcf_meth (s, pf, ovf, e) ->
+      line i ppf "Pcf_meth \"%s\" %a %a %a\n"
+        s.txt fmt_private_flag pf fmt_override_flag ovf fmt_location loc;
+      expression (i+1) ppf e;
+  | Tcf_constr (ct1, ct2) ->
+      line i ppf "Pcf_constr %a\n" fmt_location loc;
+      core_type (i+1) ppf ct1;
+      core_type (i+1) ppf ct2;
+  | Tcf_init (e) ->
+      line i ppf "Pcf_init\n";
+      expression (i+1) ppf e;
+*)
+
+and class_declaration i ppf x =
+  line i ppf "class_declaration %a\n" fmt_location x.ci_loc;
+  let i = i+1 in
+  line i ppf "pci_virt = %a\n" fmt_virtual_flag x.ci_virt;
+  line i ppf "pci_params =\n";
+  string_list_x_location (i+1) ppf x.ci_params;
+  line i ppf "pci_name = \"%s\"\n" x.ci_id_name.txt;
+  line i ppf "pci_expr =\n";
+  class_expr (i+1) ppf x.ci_expr;
+
+and module_type i ppf x =
+  line i ppf "module_type %a\n" fmt_location x.mty_loc;
+  let i = i+1 in
+  match x.mty_desc with
+  | Tmty_ident (li,_) -> line i ppf "Pmty_ident %a\n" fmt_path li;
+  | Tmty_signature (s) ->
+      line i ppf "Pmty_signature\n";
+      signature i ppf s;
+  | Tmty_functor (s, _, mt1, mt2) ->
+      line i ppf "Pmty_functor \"%a\"\n" fmt_ident s;
+      module_type i ppf mt1;
+      module_type i ppf mt2;
+  | Tmty_with (mt, l) ->
+      line i ppf "Pmty_with\n";
+      module_type i ppf mt;
+      list i longident_x_with_constraint ppf l;
+  | Tmty_typeof m ->
+      line i ppf "Pmty_typeof\n";
+      module_expr i ppf m;
+
+and signature i ppf x = list i signature_item ppf x.sig_items
+
+and signature_item i ppf x =
+  line i ppf "signature_item %a\n" fmt_location x.sig_loc;
+  let i = i+1 in
+  match x.sig_desc with
+  | Tsig_value (s, _, vd) ->
+      line i ppf "Psig_value \"%a\"\n" fmt_ident s;
+      value_description i ppf vd;
+  | Tsig_type (l) ->
+      line i ppf "Psig_type\n";
+      list i string_x_type_declaration ppf l;
+  | Tsig_exception (s, _, ed) ->
+      line i ppf "Psig_exception \"%a\"\n" fmt_ident s;
+      exception_declaration i ppf ed.exn_params;
+  | Tsig_module (s, _, mt) ->
+      line i ppf "Psig_module \"%a\"\n" fmt_ident s;
+      module_type i ppf mt;
+  | Tsig_recmodule decls ->
+      line i ppf "Psig_recmodule\n";
+      list i string_x_module_type ppf decls;
+  | Tsig_modtype (s, _, md) ->
+      line i ppf "Psig_modtype \"%a\"\n" fmt_ident s;
+      modtype_declaration i ppf md;
+  | Tsig_open (li,_) -> line i ppf "Psig_open %a\n" fmt_path li;
+  | Tsig_include (mt, _) ->
+      line i ppf "Psig_include\n";
+      module_type i ppf mt;
+  | Tsig_class (l) ->
+      line i ppf "Psig_class\n";
+      list i class_description ppf l;
+  | Tsig_class_type (l) ->
+      line i ppf "Psig_class_type\n";
+      list i class_type_declaration ppf l;
+
+and modtype_declaration i ppf x =
+  match x with
+  | Tmodtype_abstract -> line i ppf "Pmodtype_abstract\n";
+  | Tmodtype_manifest (mt) ->
+      line i ppf "Pmodtype_manifest\n";
+      module_type (i+1) ppf mt;
+
+and with_constraint i ppf x =
+  match x with
+  | Twith_type (td) ->
+      line i ppf "Pwith_type\n";
+      type_declaration (i+1) ppf td;
+  | Twith_typesubst (td) ->
+      line i ppf "Pwith_typesubst\n";
+      type_declaration (i+1) ppf td;
+  | Twith_module (li,_) -> line i ppf "Pwith_module %a\n" fmt_path li;
+  | Twith_modsubst (li,_) -> line i ppf "Pwith_modsubst %a\n" fmt_path li;
+
+and module_expr i ppf x =
+  line i ppf "module_expr %a\n" fmt_location x.mod_loc;
+  let i = i+1 in
+  match x.mod_desc with
+  | Tmod_ident (li,_) -> line i ppf "Pmod_ident %a\n" fmt_path li;
+  | Tmod_structure (s) ->
+      line i ppf "Pmod_structure\n";
+      structure i ppf s;
+  | Tmod_functor (s, _, mt, me) ->
+      line i ppf "Pmod_functor \"%a\"\n" fmt_ident s;
+      module_type i ppf mt;
+      module_expr i ppf me;
+  | Tmod_apply (me1, me2, _) ->
+      line i ppf "Pmod_apply\n";
+      module_expr i ppf me1;
+      module_expr i ppf me2;
+  | Tmod_constraint (me, _, Tmodtype_explicit mt, _) ->
+      line i ppf "Pmod_constraint\n";
+      module_expr i ppf me;
+      module_type i ppf mt;
+  | Tmod_constraint (me, _, Tmodtype_implicit, _) -> assert false (* TODO *)
+(*      line i ppf "Pmod_constraint\n";
+      module_expr i ppf me;
+      module_type i ppf mt; *)
+  | Tmod_unpack (e, _) ->
+      line i ppf "Pmod_unpack\n";
+      expression i ppf e;
+
+and structure i ppf x = list i structure_item ppf x.str_items
+
+and structure_item i ppf x =
+  line i ppf "structure_item %a\n" fmt_location x.str_loc;
+  let i = i+1 in
+  match x.str_desc with
+  | Tstr_eval (e) ->
+      line i ppf "Pstr_eval\n";
+      expression i ppf e;
+  | Tstr_value (rf, l) ->
+      line i ppf "Pstr_value %a\n" fmt_rec_flag rf;
+      list i pattern_x_expression_def ppf l;
+  | Tstr_primitive (s, _, vd) ->
+      line i ppf "Pstr_primitive \"%a\"\n" fmt_ident s;
+      value_description i ppf vd;
+  | Tstr_type l ->
+      line i ppf "Pstr_type\n";
+      list i string_x_type_declaration ppf l;
+  | Tstr_exception (s, _, ed) ->
+      line i ppf "Pstr_exception \"%a\"\n" fmt_ident s;
+      exception_declaration i ppf ed.exn_params;
+  | Tstr_exn_rebind (s, _, li, _) ->
+      line i ppf "Pstr_exn_rebind \"%a\" %a\n" fmt_ident s fmt_path li;
+  | Tstr_module (s, _, me) ->
+      line i ppf "Pstr_module \"%a\"\n" fmt_ident s;
+      module_expr i ppf me;
+  | Tstr_recmodule bindings ->
+      line i ppf "Pstr_recmodule\n";
+      list i string_x_modtype_x_module ppf bindings;
+  | Tstr_modtype (s, _, mt) ->
+      line i ppf "Pstr_modtype \"%a\"\n" fmt_ident s;
+      module_type i ppf mt;
+  | Tstr_open (li, _) -> line i ppf "Pstr_open %a\n" fmt_path li;
+  | Tstr_class (l) ->
+      line i ppf "Pstr_class\n";
+      list i class_declaration ppf (List.map (fun (cl, _,_) -> cl) l);
+  | Tstr_class_type (l) ->
+      line i ppf "Pstr_class_type\n";
+      list i class_type_declaration ppf (List.map (fun (_, _, cl) -> cl) l);
+  | Tstr_include (me, _) ->
+      line i ppf "Pstr_include";
+      module_expr i ppf me
+
+and string_x_type_declaration i ppf (s, _, td) =
+  ident i ppf s;
+  type_declaration (i+1) ppf td;
+
+and string_x_module_type i ppf (s, _, mty) =
+  ident i ppf s;
+  module_type (i+1) ppf mty;
+
+and string_x_modtype_x_module i ppf (s, _, mty, modl) =
+  ident i ppf s;
+  module_type (i+1) ppf mty;
+  module_expr (i+1) ppf modl;
+
+and longident_x_with_constraint i ppf (li, _, wc) =
+  line i ppf "%a\n" fmt_path li;
+  with_constraint (i+1) ppf wc;
+
+and core_type_x_core_type_x_location i ppf (ct1, ct2, l) =
+  line i ppf "<constraint> %a\n" fmt_location l;
+  core_type (i+1) ppf ct1;
+  core_type (i+1) ppf ct2;
+
+and string_x_core_type_list_x_location i ppf (s, _, l, r_opt) =
+  line i ppf "\"%a\"\n" fmt_ident s;
+  list (i+1) core_type ppf l;
+(*  option (i+1) core_type ppf r_opt; *)
+
+and string_x_mutable_flag_x_core_type_x_location i ppf (s, _, mf, ct, loc) =
+  line i ppf "\"%a\" %a %a\n" fmt_ident s fmt_mutable_flag mf fmt_location loc;
+  core_type (i+1) ppf ct;
+
+and string_list_x_location i ppf (l, loc) =
+  line i ppf "<params> %a\n" fmt_location loc;
+  list (i+1) string_loc ppf l;
+
+and longident_x_pattern i ppf (li, _, _, p) =
+  line i ppf "%a\n" fmt_path li;
+  pattern (i+1) ppf p;
+
+and pattern_x_expression_case i ppf (p, e) =
+  line i ppf "<case>\n";
+  pattern (i+1) ppf  p;
+  expression (i+1) ppf e;
+
+and pattern_x_expression_def i ppf (p, e) =
+  line i ppf "<def>\n";
+  pattern (i+1) ppf p;
+  expression (i+1) ppf e;
+
+and string_x_expression i ppf (s, _, e) =
+  line i ppf "<override> \"%a\"\n" fmt_path s;
+  expression (i+1) ppf e;
+
+and longident_x_expression i ppf (li, _, _, e) =
+  line i ppf "%a\n" fmt_path li;
+  expression (i+1) ppf e;
+
+and label_x_expression i ppf (l, e, _) =
+  line i ppf "<label> \"%s\"\n" l;
+  (match e with None -> () | Some e -> expression (i+1) ppf e)
+
+and ident_x_loc_x_expression_def i ppf (l,_, e) =
+  line i ppf "<def> \"%a\"\n" fmt_ident l;
+  expression (i+1) ppf e;
+
+and label_x_bool_x_core_type_list i ppf x =
+  match x with
+    Ttag (l, b, ctl) ->
+      line i ppf "Rtag \"%s\" %s\n" l (string_of_bool b);
+      list (i+1) core_type ppf ctl
+  | Tinherit (ct) ->
+      line i ppf "Rinherit\n";
+      core_type (i+1) ppf ct
+;;
+
+let interface ppf x = list 0 signature_item ppf x.sig_items;;
+
+let implementation ppf x = list 0 structure_item ppf x.str_items;;
diff --git a/typing/printtyped.mli b/typing/printtyped.mli
new file mode 100644 (file)
index 0000000..7bb594a
--- /dev/null
@@ -0,0 +1,19 @@
+(***********************************************************************)
+(*                                                                     *)
+(*                                OCaml                                *)
+(*                                                                     *)
+(*             Damien Doligez, projet Para, INRIA Rocquencourt         *)
+(*                                                                     *)
+(*  Copyright 1999 Institut National de Recherche en Informatique et   *)
+(*  en Automatique.  All rights reserved.  This file is distributed    *)
+(*  under the terms of the Q Public License version 1.0.               *)
+(*                                                                     *)
+(***********************************************************************)
+
+(* $Id: printast.mli 12404 2012-04-26 13:20:09Z lefessan $ *)
+
+open Typedtree;;
+open Format;;
+
+val interface : formatter -> signature -> unit;;
+val implementation : formatter -> structure -> unit;;
index 1d2c0efde33788a119ba140664bdf2795f984579..26a5a5e072635d834c698060f449f656716c68b8 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: stypes.ml 12511 2012-05-30 13:29:48Z lefessan $ *)
 
 (* Recording and dumping (partial) type information *)
 
@@ -157,7 +157,10 @@ let get_info () =
 let dump filename =
   if !Clflags.annotations then begin
     let info = get_info () in
-    let pp = formatter_of_out_channel (open_out filename) in
+    let pp =
+      match filename with
+          None -> std_formatter
+        | Some filename -> formatter_of_out_channel (open_out filename) in
     sort_filter_phrases ();
     ignore (List.fold_left (print_info pp) Location.none info);
     phrases := [];
index 02cccd800df1f827c082dcf66c8585f2cf9d8858..305402afb06413a7214c27907b2ed2edb0da49d8 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: stypes.mli 12511 2012-05-30 13:29:48Z lefessan $ *)
 
 (* Recording and dumping (partial) type information *)
 
@@ -29,7 +29,7 @@ type annotation =
 
 val record : annotation -> unit;;
 val record_phrase : Location.t -> unit;;
-val dump : string -> unit;;
+val dump : string option -> unit;;
 
 val get_location : annotation -> Location.t;;
 val get_info : unit -> annotation list;;
index 4a84a4e28545dc4176f4df8430d1c18e99386523..86516c17e38cbe36a8c45885207bd8708fca1ac9 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: subst.ml 12511 2012-05-30 13:29:48Z lefessan $ *)
 
 (* Substitutions *)
 
@@ -49,7 +49,7 @@ let rec modtype_path s = function
     Pident id as p ->
       begin try
         match Tbl.find id s.modtypes with
-          | Tmty_ident p -> p
+          | Mty_ident p -> p
           | _ -> fatal_error "Subst.modtype_path"
       with Not_found -> p end
   | Pdot(p, n, pos) ->
@@ -110,6 +110,10 @@ let rec typexp s ty =
                         None -> None
                       | Some (p, tl) ->
                           Some (type_path s p, List.map (typexp s) tl)))
+      | Tfield (m, k, t1, t2)
+        when s == identity && ty.level < generic_level && m = dummy_method ->
+          (* not allowed to lower the level of the dummy method *)
+          Tfield (m, k, t1, typexp s t2)
       | Tvariant row ->
           let row = row_repr row in
           let more = repr row.row_more in
@@ -171,7 +175,7 @@ let type_declaration s decl =
         | Type_variant cstrs ->
             Type_variant
               (List.map
-                 (fun (n, args, ret_type) -> 
+                 (fun (n, args, ret_type) ->
                   (n, List.map (typexp s) args, may_map (typexp s) ret_type))
                  cstrs)
         | Type_record(lbls, rep) ->
@@ -180,7 +184,7 @@ let type_declaration s decl =
                rep)
         end;
       type_manifest =
-        begin 
+        begin
          match decl.type_manifest with
             None -> None
           | Some ty -> Some(typexp s ty)
@@ -206,12 +210,12 @@ let class_signature s sign =
 
 let rec class_type s =
   function
-    Tcty_constr (p, tyl, cty) ->
-      Tcty_constr (type_path s p, List.map (typexp s) tyl, class_type s cty)
-  | Tcty_signature sign ->
-      Tcty_signature (class_signature s sign)
-  | Tcty_fun (l, ty, cty) ->
-      Tcty_fun (l, typexp s ty, class_type s cty)
+    Cty_constr (p, tyl, cty) ->
+      Cty_constr (type_path s p, List.map (typexp s) tyl, class_type s cty)
+  | Cty_signature sign ->
+      Cty_signature (class_signature s sign)
+  | Cty_fun (l, ty, cty) ->
+      Cty_fun (l, typexp s ty, class_type s cty)
 
 let class_declaration s decl =
   let decl =
@@ -258,36 +262,36 @@ let exception_declaration s descr =
 
 let rec rename_bound_idents s idents = function
     [] -> (List.rev idents, s)
-  | Tsig_type(id, d, _) :: sg ->
+  | Sig_type(id, d, _) :: sg ->
       let id' = Ident.rename id in
       rename_bound_idents (add_type id (Pident id') s) (id' :: idents) sg
-  | Tsig_module(id, mty, _) :: sg ->
+  | Sig_module(id, mty, _) :: sg ->
       let id' = Ident.rename id in
       rename_bound_idents (add_module id (Pident id') s) (id' :: idents) sg
-  | Tsig_modtype(id, d) :: sg ->
+  | Sig_modtype(id, d) :: sg ->
       let id' = Ident.rename id in
-      rename_bound_idents (add_modtype id (Tmty_ident(Pident id')) s)
+      rename_bound_idents (add_modtype id (Mty_ident(Pident id')) s)
                           (id' :: idents) sg
-  | (Tsig_value(id, _) | Tsig_exception(id, _) |
-     Tsig_class(id, _, _) | Tsig_cltype(id, _, _)) :: sg ->
+  | (Sig_value(id, _) | Sig_exception(id, _) |
+     Sig_class(id, _, _) | Sig_class_type(id, _, _)) :: sg ->
       let id' = Ident.rename id in
       rename_bound_idents s (id' :: idents) sg
 
 let rec modtype s = function
-    Tmty_ident p as mty ->
+    Mty_ident p as mty ->
       begin match p with
         Pident id ->
           begin try Tbl.find id s.modtypes with Not_found -> mty end
       | Pdot(p, n, pos) ->
-          Tmty_ident(Pdot(module_path s p, n, pos))
+          Mty_ident(Pdot(module_path s p, n, pos))
       | Papply(p1, p2) ->
           fatal_error "Subst.modtype"
       end
-  | Tmty_signature sg ->
-      Tmty_signature(signature s sg)
-  | Tmty_functor(id, arg, res) ->
+  | Mty_signature sg ->
+      Mty_signature(signature s sg)
+  | Mty_functor(id, arg, res) ->
       let id' = Ident.rename id in
-      Tmty_functor(id', modtype s arg,
+      Mty_functor(id', modtype s arg,
                         modtype (add_module id (Pident id') s) res)
 
 and signature s sg =
@@ -300,26 +304,26 @@ and signature s sg =
 
 and signature_component s comp newid =
   match comp with
-    Tsig_value(id, d) ->
-      Tsig_value(newid, value_description s d)
-  | Tsig_type(id, d, rs) ->
-      Tsig_type(newid, type_declaration s d, rs)
-  | Tsig_exception(id, d) ->
-      Tsig_exception(newid, exception_declaration s d)
-  | Tsig_module(id, mty, rs) ->
-      Tsig_module(newid, modtype s mty, rs)
-  | Tsig_modtype(id, d) ->
-      Tsig_modtype(newid, modtype_declaration s d)
-  | Tsig_class(id, d, rs) ->
-      Tsig_class(newid, class_declaration s d, rs)
-  | Tsig_cltype(id, d, rs) ->
-      Tsig_cltype(newid, cltype_declaration s d, rs)
+    Sig_value(id, d) ->
+      Sig_value(newid, value_description s d)
+  | Sig_type(id, d, rs) ->
+      Sig_type(newid, type_declaration s d, rs)
+  | Sig_exception(id, d) ->
+      Sig_exception(newid, exception_declaration s d)
+  | Sig_module(id, mty, rs) ->
+      Sig_module(newid, modtype s mty, rs)
+  | Sig_modtype(id, d) ->
+      Sig_modtype(newid, modtype_declaration s d)
+  | Sig_class(id, d, rs) ->
+      Sig_class(newid, class_declaration s d, rs)
+  | Sig_class_type(id, d, rs) ->
+      Sig_class_type(newid, cltype_declaration s d, rs)
 
 and modtype_declaration s = function
-    Tmodtype_abstract -> Tmodtype_abstract
-  | Tmodtype_manifest mty -> Tmodtype_manifest(modtype s mty)
+    Modtype_abstract -> Modtype_abstract
+  | Modtype_manifest mty -> Modtype_manifest(modtype s mty)
 
-(* For every binding k |-> d of m1, add k |-> f d to m2 
+(* For every binding k |-> d of m1, add k |-> f d to m2
    and return resulting merged map. *)
 
 let merge_tbls f m1 m2 =
index cf977885418f72f9ec3e33e6cbf435c2f6478113..a50831dc5fb4b01ce97d4402d492b638885f4dff 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: subst.mli 12511 2012-05-30 13:29:48Z lefessan $ *)
 
 (* Substitutions *)
 
@@ -48,7 +48,7 @@ val type_declaration: t -> type_declaration -> type_declaration
 val exception_declaration:
         t -> exception_declaration -> exception_declaration
 val class_declaration: t -> class_declaration -> class_declaration
-val cltype_declaration: t -> cltype_declaration -> cltype_declaration
+val cltype_declaration: t -> class_type_declaration -> class_type_declaration
 val modtype: t -> module_type -> module_type
 val signature: t -> signature -> signature
 val modtype_declaration: t -> modtype_declaration -> modtype_declaration
index 5610c3e94e0b65d2047747cf2c2b3f8798e77098..a6847c64dc83a8e23b1845c9579de3aa6fabfab4 100644 (file)
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: typeclass.ml 12520 2012-05-31 07:41:37Z garrigue $ *)
 
 open Misc
 open Parsetree
 open Asttypes
 open Path
 open Types
-open Typedtree
 open Typecore
 open Typetexp
 open Format
@@ -50,6 +49,16 @@ type error =
   | Mutability_mismatch of string * mutable_flag
   | No_overriding of string * string
 
+open Typedtree
+
+let ctyp desc typ env loc =
+  { ctyp_desc = desc; ctyp_type = typ; ctyp_loc = loc; ctyp_env = env }
+let cltyp desc typ env loc =
+  { cltyp_desc = desc; cltyp_type = typ; cltyp_loc = loc; cltyp_env = env }
+let mkcf desc loc = { cf_desc = desc; cf_loc = loc }
+let mkctf desc loc = { ctf_desc = desc; ctf_loc = loc }
+
+
 exception Error of Location.t * error
 
 
@@ -62,7 +71,7 @@ exception Error of Location.t * error
    Self type have a dummy private method, thus preventing it to become
    closed.
 *)
-let dummy_method = Ctype.dummy_method
+let dummy_method = Btype.dummy_method
 
 (*
    Path associated to the temporary class type of a class being typed
@@ -79,20 +88,20 @@ let unbound_class = Path.Pident (Ident.create "")
 (* Fully expand the head of a class type *)
 let rec scrape_class_type =
   function
-    Tcty_constr (_, _, cty) -> scrape_class_type cty
+    Cty_constr (_, _, cty) -> scrape_class_type cty
   | cty                     -> cty
 
 (* Generalize a class type *)
 let rec generalize_class_type =
   function
-    Tcty_constr (_, params, cty) ->
+    Cty_constr (_, params, cty) ->
       List.iter Ctype.generalize params;
       generalize_class_type cty
-  | Tcty_signature {cty_self = sty; cty_vars = vars; cty_inher = inher} ->
+  | Cty_signature {cty_self = sty; cty_vars = vars; cty_inher = inher} ->
       Ctype.generalize sty;
       Vars.iter (fun _ (_, _, ty) -> Ctype.generalize ty) vars;
       List.iter (fun (_,tl) -> List.iter Ctype.generalize tl) inher
-  | Tcty_fun (_, ty, cty) ->
+  | Cty_fun (_, ty, cty) ->
       Ctype.generalize ty;
       generalize_class_type cty
 
@@ -109,20 +118,20 @@ let virtual_methods sign =
 (* Return the constructor type associated to a class type *)
 let rec constructor_type constr cty =
   match cty with
-    Tcty_constr (_, _, cty) ->
+    Cty_constr (_, _, cty) ->
       constructor_type constr cty
-  | Tcty_signature sign ->
+  | Cty_signature sign ->
       constr
-  | Tcty_fun (l, ty, cty) ->
+  | Cty_fun (l, ty, cty) ->
       Ctype.newty (Tarrow (l, ty, constructor_type constr cty, Cok))
 
 let rec class_body cty =
   match cty with
-    Tcty_constr (_, _, cty') ->
+    Cty_constr (_, _, cty') ->
       cty (* Only class bodies can be abbreviated *)
-  | Tcty_signature sign ->
+  | Cty_signature sign ->
       cty
-  | Tcty_fun (_, ty, cty) ->
+  | Cty_fun (_, ty, cty) ->
       class_body cty
 
 let rec extract_constraints cty =
@@ -140,22 +149,22 @@ let rec extract_constraints cty =
 
 let rec abbreviate_class_type path params cty =
   match cty with
-    Tcty_constr (_, _, _) | Tcty_signature _ ->
-      Tcty_constr (path, params, cty)
-  | Tcty_fun (l, ty, cty) ->
-      Tcty_fun (l, ty, abbreviate_class_type path params cty)
+    Cty_constr (_, _, _) | Cty_signature _ ->
+      Cty_constr (path, params, cty)
+  | Cty_fun (l, ty, cty) ->
+      Cty_fun (l, ty, abbreviate_class_type path params cty)
 
 let rec closed_class_type =
   function
-    Tcty_constr (_, params, _) ->
+    Cty_constr (_, params, _) ->
       List.for_all Ctype.closed_schema params
-  | Tcty_signature sign ->
+  | Cty_signature sign ->
       Ctype.closed_schema sign.cty_self
         &&
       Vars.fold (fun _ (_, _, ty) cc -> Ctype.closed_schema ty && cc)
         sign.cty_vars
         true
-  | Tcty_fun (_, ty, cty) ->
+  | Cty_fun (_, ty, cty) ->
       Ctype.closed_schema ty
         &&
       closed_class_type cty
@@ -167,22 +176,23 @@ let closed_class cty =
 
 let rec limited_generalize rv =
   function
-    Tcty_constr (path, params, cty) ->
+    Cty_constr (path, params, cty) ->
       List.iter (Ctype.limited_generalize rv) params;
       limited_generalize rv cty
-  | Tcty_signature sign ->
+  | Cty_signature sign ->
       Ctype.limited_generalize rv sign.cty_self;
       Vars.iter (fun _ (_, _, ty) -> Ctype.limited_generalize rv ty)
         sign.cty_vars;
       List.iter (fun (_, tl) -> List.iter (Ctype.limited_generalize rv) tl)
         sign.cty_inher
-  | Tcty_fun (_, ty, cty) ->
+  | Cty_fun (_, ty, cty) ->
       Ctype.limited_generalize rv ty;
       limited_generalize rv cty
 
 (* Record a class type *)
 let rc node =
-  Stypes.record (Stypes.Ti_class node);
+  Cmt_format.add_saved_type (Cmt_format.Partial_class_expr node);
+  Stypes.record (Stypes.Ti_class node); (* moved to genannot *)
   node
 
 
@@ -194,11 +204,14 @@ let rc node =
 (* Enter a value in the method environment only *)
 let enter_met_env ?check loc lab kind ty val_env met_env par_env =
   let (id, val_env) =
-    Env.enter_value lab {val_type = ty; val_kind = Val_unbound; val_loc = loc} val_env
+    Env.enter_value lab {val_type = ty; val_kind = Val_unbound;
+                         Types.val_loc = loc} val_env
   in
   (id, val_env,
-   Env.add_value ?check id {val_type = ty; val_kind = kind; val_loc = loc} met_env,
-   Env.add_value id {val_type = ty; val_kind = Val_unbound; val_loc = loc} par_env)
+   Env.add_value ?check id {val_type = ty; val_kind = kind;
+                            Types.val_loc = loc} met_env,
+   Env.add_value id {val_type = ty; val_kind = Val_unbound;
+                     Types.val_loc = loc} par_env)
 
 (* Enter an instance variable in the environment *)
 let enter_val cl_num vars inh lab mut virt ty val_env met_env par_env loc =
@@ -218,7 +231,8 @@ let enter_val cl_num vars inh lab mut virt ty val_env met_env par_env loc =
   let (id, _, _, _) as result =
     match id with Some id -> (id, val_env, met_env, par_env)
     | None ->
-        enter_met_env Location.none lab (Val_ivar (mut, cl_num)) ty val_env met_env par_env
+        enter_met_env Location.none lab (Val_ivar (mut, cl_num))
+          ty val_env met_env par_env
   in
   vars := Vars.add lab (id, mut, virt, ty) !vars;
   result
@@ -230,7 +244,7 @@ let concr_vals vars =
 
 let inheritance self_type env ovf concr_meths warn_vals loc parent =
   match scrape_class_type parent with
-    Tcty_signature cl_sig ->
+    Cty_signature cl_sig ->
 
       (* Methods *)
       begin try
@@ -251,7 +265,7 @@ let inheritance self_type env ovf concr_meths warn_vals loc parent =
         Some Fresh ->
           let cname =
             match parent with
-              Tcty_constr (p, _, _) -> Path.name p
+              Cty_constr (p, _, _) -> Path.name p
             | _ -> "inherited"
           in
           if not (Concr.is_empty over_meths) then
@@ -279,9 +293,13 @@ let virtual_method val_env meths self_type lab priv sty loc =
   let (_, ty') =
      Ctype.filter_self_method val_env lab priv meths self_type
   in
-  let ty = transl_simple_type val_env false sty in
-  try Ctype.unify val_env ty ty' with Ctype.Unify trace ->
-    raise(Error(loc, Field_type_mismatch ("method", lab, trace)))
+  let cty = transl_simple_type val_env false sty in
+  let ty = cty.ctyp_type in
+  begin
+    try Ctype.unify val_env ty ty' with Ctype.Unify trace ->
+        raise(Error(loc, Field_type_mismatch ("method", lab, trace)));
+  end;
+  cty
 
 let delayed_meth_specs = ref []
 
@@ -294,24 +312,43 @@ let declare_method val_env meths self_type lab priv sty loc =
       raise(Error(loc, Field_type_mismatch ("method", lab, trace)))
   in
   match sty.ptyp_desc, priv with
-    Ptyp_poly ([],sty), Public ->
+    Ptyp_poly ([],sty'), Public ->
+(* TODO: we moved the [transl_simple_type_univars] outside of the lazy,
+so that we can get an immediate value. Is that correct ? Ask Jacques. *)
+      let returned_cty = ctyp Ttyp_any (Ctype.newty Tnil) val_env loc in
       delayed_meth_specs :=
-        lazy (unif (transl_simple_type_univars val_env sty)) ::
-        !delayed_meth_specs
-  | _ -> unif (transl_simple_type val_env false sty)
+      lazy (
+        let cty = transl_simple_type_univars val_env sty' in
+        let ty = cty.ctyp_type in
+        unif ty;
+        returned_cty.ctyp_desc <- Ttyp_poly ([], cty);
+        returned_cty.ctyp_type <- ty;
+        ) ::
+      !delayed_meth_specs;
+      returned_cty
+  | _ ->
+      let cty = transl_simple_type val_env false sty in
+      let ty = cty.ctyp_type in
+      unif ty;
+      cty
 
 let type_constraint val_env sty sty' loc =
-  let ty  = transl_simple_type val_env false sty in
-  let ty' = transl_simple_type val_env false sty' in
-  try Ctype.unify val_env ty ty' with Ctype.Unify trace ->
-    raise(Error(loc, Unconsistent_constraint trace))
+  let cty  = transl_simple_type val_env false sty in
+  let ty = cty.ctyp_type in
+  let cty' = transl_simple_type val_env false sty' in
+  let ty' = cty'.ctyp_type in
+  begin
+    try Ctype.unify val_env ty ty' with Ctype.Unify trace ->
+        raise(Error(loc, Unconsistent_constraint trace));
+  end;
+  (cty, cty')
 
 let mkpat d = { ppat_desc = d; ppat_loc = Location.none }
 let make_method cl_num expr =
   { pexp_desc =
       Pexp_function ("", None,
-                     [mkpat (Ppat_alias (mkpat(Ppat_var "self-*"),
-                                         "self-" ^ cl_num)),
+                     [mkpat (Ppat_alias (mkpat(Ppat_var (mknoloc "self-*")),
+                                         mknoloc ("self-" ^ cl_num))),
                       expr]);
     pexp_loc = expr.pexp_loc }
 
@@ -326,42 +363,56 @@ let add_val env loc lab (mut, virt, ty) val_sig =
   in
   Vars.add lab (mut, virt, ty) val_sig
 
-let rec class_type_field env self_type meths (val_sig, concr_meths, inher) =
-  function
+let rec class_type_field env self_type meths
+    (fields, val_sig, concr_meths, inher) ctf =
+  let loc = ctf.pctf_loc in
+  match ctf.pctf_desc with
     Pctf_inher sparent ->
       let parent = class_type env sparent in
       let inher =
-        match parent with
-          Tcty_constr (p, tl, _) -> (p, tl) :: inher
+        match parent.cltyp_type with
+          Cty_constr (p, tl, _) -> (p, tl) :: inher
         | _ -> inher
       in
       let (cl_sig, concr_meths, _) =
         inheritance self_type env None concr_meths Concr.empty sparent.pcty_loc
-          parent
+          parent.cltyp_type
       in
       let val_sig =
         Vars.fold (add_val env sparent.pcty_loc) cl_sig.cty_vars val_sig in
-      (val_sig, concr_meths, inher)
-
-  | Pctf_val (lab, mut, virt, sty, loc) ->
-      let ty = transl_simple_type env false sty in
-      (add_val env loc lab (mut, virt, ty) val_sig, concr_meths, inher)
-
-  | Pctf_virt (lab, priv, sty, loc) ->
-      declare_method env meths self_type lab priv sty loc;
-      (val_sig, concr_meths, inher)
-
-  | Pctf_meth (lab, priv, sty, loc)  ->
-      declare_method env meths self_type lab priv sty loc;
-      (val_sig, Concr.add lab concr_meths, inher)
-
-  | Pctf_cstr (sty, sty', loc) ->
-      type_constraint env sty sty' loc;
-      (val_sig, concr_meths, inher)
-
-and class_signature env sty sign =
+      (mkctf (Tctf_inher parent) loc :: fields,
+       val_sig, concr_meths, inher)
+
+  | Pctf_val (lab, mut, virt, sty) ->
+      let cty = transl_simple_type env false sty in
+      let ty = cty.ctyp_type in
+      (mkctf (Tctf_val (lab, mut, virt, cty)) loc :: fields,
+      add_val env ctf.pctf_loc lab (mut, virt, ty) val_sig, concr_meths, inher)
+
+  | Pctf_virt (lab, priv, sty) ->
+        let cty =
+          declare_method env meths self_type lab priv sty  ctf.pctf_loc
+        in
+        (mkctf (Tctf_virt (lab, priv, cty)) loc :: fields,
+      val_sig, concr_meths, inher)
+
+  | Pctf_meth (lab, priv, sty)  ->
+      let cty =
+        declare_method env meths self_type lab priv sty  ctf.pctf_loc in
+      (mkctf (Tctf_meth (lab, priv, cty)) loc :: fields,
+        val_sig, Concr.add lab concr_meths, inher)
+
+  | Pctf_cstr (sty, sty') ->
+      let (cty, cty') = type_constraint env sty sty'  ctf.pctf_loc in
+      (mkctf (Tctf_cstr (cty, cty')) loc :: fields,
+        val_sig, concr_meths, inher)
+
+and class_signature env sty sign loc =
   let meths = ref Meths.empty in
-  let self_type = Ctype.expand_head env (transl_simple_type env false sty) in
+  let self_cty = transl_simple_type env false sty in
+  let self_cty = { self_cty with
+    ctyp_type = Ctype.expand_head env self_cty.ctyp_type } in
+  let self_type =  self_cty.ctyp_type in
 
   (* Check that the binder is a correct type, and introduce a dummy
      method preventing self type from being closed. *)
@@ -375,45 +426,62 @@ and class_signature env sty sign =
   end;
 
   (* Class type fields *)
-  let (val_sig, concr_meths, inher) =
+  let (fields, val_sig, concr_meths, inher) =
     List.fold_left (class_type_field env self_type meths)
-      (Vars.empty, Concr.empty, [])
+      ([], Vars.empty, Concr.empty, [])
       sign
   in
-
-  {cty_self = self_type;
+  let cty =   {cty_self = self_type;
    cty_vars = val_sig;
    cty_concr = concr_meths;
    cty_inher = inher}
+  in
+  { csig_self = self_cty;
+    csig_fields = fields;
+    csig_type = cty;
+    csig_loc = loc;
+    }
 
 and class_type env scty =
+  let loc = scty.pcty_loc in
   match scty.pcty_desc with
     Pcty_constr (lid, styl) ->
-      let (path, decl) = Typetexp.find_cltype env scty.pcty_loc lid in
+      let (path, decl) = Typetexp.find_class_type env scty.pcty_loc lid.txt in
       if Path.same decl.clty_path unbound_class then
-        raise(Error(scty.pcty_loc, Unbound_class_type_2 lid));
+        raise(Error(scty.pcty_loc, Unbound_class_type_2 lid.txt));
       let (params, clty) =
         Ctype.instance_class decl.clty_params decl.clty_type
       in
       if List.length params <> List.length styl then
         raise(Error(scty.pcty_loc,
-                    Parameter_arity_mismatch (lid, List.length params,
+                    Parameter_arity_mismatch (lid.txt, List.length params,
                                                    List.length styl)));
-      List.iter2
+      let ctys = List.map2
         (fun sty ty ->
-           let ty' = transl_simple_type env false sty in
+          let cty' = transl_simple_type env false sty in
+          let ty' = cty'.ctyp_type in
+          begin
            try Ctype.unify env ty' ty with Ctype.Unify trace ->
-             raise(Error(sty.ptyp_loc, Parameter_mismatch trace)))
-        styl params;
-      Tcty_constr (path, params, clty)
+                  raise(Error(sty.ptyp_loc, Parameter_mismatch trace))
+            end;
+            cty'
+        )       styl params
+      in
+      let typ = Cty_constr (path, params, clty) in
+      cltyp (Tcty_constr ( path, lid , ctys)) typ env loc
 
-  | Pcty_signature (sty, sign) ->
-      Tcty_signature (class_signature env sty sign)
+  | Pcty_signature pcsig ->
+      let clsig = class_signature env
+        pcsig.pcsig_self pcsig.pcsig_fields pcsig.pcsig_loc in
+      let typ = Cty_signature clsig.csig_type in
+      cltyp (Tcty_signature clsig) typ env loc
 
   | Pcty_fun (l, sty, scty) ->
-      let ty = transl_simple_type env false sty in
-      let cty = class_type env scty in
-      Tcty_fun (l, ty, cty)
+      let cty = transl_simple_type env false sty in
+      let ty = cty.ctyp_type in
+      let clty = class_type env scty in
+      let typ = Cty_fun (l, ty, clty.cltyp_type) in
+      cltyp (Tcty_fun (l, cty, clty)) typ env loc
 
 let class_type env scty =
   delayed_meth_specs := [];
@@ -425,13 +493,15 @@ let class_type env scty =
 (*******************************)
 
 let rec class_field cl_num self_type meths vars
-    (val_env, met_env, par_env, fields, concr_meths, warn_vals, inher) =
-  function
+    (val_env, met_env, par_env, fields, concr_meths, warn_vals, inher)
+  cf =
+  let loc = cf.pcf_loc in
+  match cf.pcf_desc with
     Pcf_inher (ovf, sparent, super) ->
       let parent = class_expr cl_num val_env par_env sparent in
       let inher =
         match parent.cl_type with
-          Tcty_constr (p, tl, _) -> (p, tl) :: inher
+          Cty_constr (p, tl, _) -> (p, tl) :: inher
         | _ -> inher
       in
       let (cl_sig, concr_meths, warn_vals) =
@@ -469,31 +539,36 @@ let rec class_field cl_num self_type meths vars
             (val_env, met_env, par_env)
       in
       (val_env, met_env, par_env,
-       lazy(Cf_inher (parent, inh_vars, inh_meths))::fields,
+       lazy (mkcf (Tcf_inher (ovf, parent, super, inh_vars, inh_meths)) loc)
+       :: fields,
        concr_meths, warn_vals, inher)
 
-  | Pcf_valvirt (lab, mut, styp, loc) ->
+  | Pcf_valvirt (lab, mut, styp) ->
       if !Clflags.principal then Ctype.begin_def ();
-      let ty = Typetexp.transl_simple_type val_env false styp in
+      let cty = Typetexp.transl_simple_type val_env false styp in
+      let ty = cty.ctyp_type in
       if !Clflags.principal then begin
         Ctype.end_def ();
         Ctype.generalize_structure ty
       end;
       let (id, val_env, met_env', par_env) =
-        enter_val cl_num vars false lab mut Virtual ty
+        enter_val cl_num vars false lab.txt mut Virtual ty
           val_env met_env par_env loc
       in
       (val_env, met_env', par_env,
-       lazy(Cf_val (lab, id, None, met_env' == met_env)) :: fields,
+       lazy (mkcf (Tcf_val (lab.txt, lab, mut, id, Tcfk_virtual cty,
+                            met_env' == met_env)) loc)
+       :: fields,
        concr_meths, warn_vals, inher)
 
-  | Pcf_val (lab, mut, ovf, sexp, loc) ->
-      if Concr.mem lab warn_vals then begin
+  | Pcf_val (lab, mut, ovf, sexp) ->
+      if Concr.mem lab.txt warn_vals then begin
         if ovf = Fresh then
-          Location.prerr_warning loc (Warnings.Instance_variable_override[lab])
+          Location.prerr_warning lab.loc
+            (Warnings.Instance_variable_override[lab.txt])
       end else begin
         if ovf = Override then
-          raise(Error(loc, No_overriding ("instance variable", lab)))
+          raise(Error(loc, No_overriding ("instance variable", lab.txt)))
       end;
       if !Clflags.principal then Ctype.begin_def ();
       let exp =
@@ -503,35 +578,42 @@ let rec class_field cl_num self_type meths vars
       if !Clflags.principal then begin
         Ctype.end_def ();
         Ctype.generalize_structure exp.exp_type
-      end;
+       end;
       let (id, val_env, met_env', par_env) =
-        enter_val cl_num vars false lab mut Concrete exp.exp_type
+        enter_val cl_num vars false lab.txt mut Concrete exp.exp_type
           val_env met_env par_env loc
       in
       (val_env, met_env', par_env,
-       lazy(Cf_val (lab, id, Some exp, met_env' == met_env)) :: fields,
-       concr_meths, Concr.add lab warn_vals, inher)
+       lazy (mkcf (Tcf_val (lab.txt, lab, mut, id,
+                            Tcfk_concrete exp, met_env' == met_env)) loc)
+       :: fields,
+       concr_meths, Concr.add lab.txt warn_vals, inher)
 
-  | Pcf_virt (lab, priv, sty, loc) ->
-      virtual_method val_env meths self_type lab priv sty loc;
-      (val_env, met_env, par_env, fields, concr_meths, warn_vals, inher)
+  | Pcf_virt (lab, priv, sty) ->
+      let cty = virtual_method val_env meths self_type lab.txt priv sty loc in
+      (val_env, met_env, par_env,
+        lazy (mkcf(Tcf_meth (lab.txt, lab, priv, Tcfk_virtual cty, true)) loc)
+       ::fields,
+        concr_meths, warn_vals, inher)
 
-  | Pcf_meth (lab, priv, ovf, expr, loc)  ->
-      if Concr.mem lab concr_meths then begin
+  | Pcf_meth (lab, priv, ovf, expr)  ->
+      if Concr.mem lab.txt concr_meths then begin
         if ovf = Fresh then
-          Location.prerr_warning loc (Warnings.Method_override [lab])
+          Location.prerr_warning loc (Warnings.Method_override [lab.txt])
       end else begin
-        if ovf = Override then raise(Error(loc, No_overriding("method", lab)))
+        if ovf = Override then
+          raise(Error(loc, No_overriding("method", lab.txt)))
       end;
       let (_, ty) =
-        Ctype.filter_self_method val_env lab priv meths self_type
+        Ctype.filter_self_method val_env lab.txt priv meths self_type
       in
       begin try match expr.pexp_desc with
         Pexp_poly (sbody, sty) ->
           begin match sty with None -> ()
-          | Some sty ->
-              Ctype.unify val_env
-                (Typetexp.transl_simple_type val_env false sty) ty
+                | Some sty ->
+                    let cty' = Typetexp.transl_simple_type val_env false sty in
+                    let ty' = cty'.ctyp_type in
+              Ctype.unify val_env ty' ty
           end;
           begin match (Ctype.repr ty).desc with
             Tvar _ ->
@@ -546,7 +628,7 @@ let rec class_field cl_num self_type meths vars
           end
       | _ -> assert false
       with Ctype.Unify trace ->
-        raise(Error(loc, Field_type_mismatch ("method", lab, trace)))
+        raise(Error(loc, Field_type_mismatch ("method", lab.txt, trace)))
       end;
       let meth_expr = make_method cl_num expr in
       (* backup variables for Pexp_override *)
@@ -560,14 +642,19 @@ let rec class_field cl_num self_type meths vars
           vars := vars_local;
           let texp = type_expect met_env meth_expr meth_type in
           Ctype.end_def ();
-          Cf_meth (lab, texp)
+          mkcf (Tcf_meth (lab.txt, lab, priv, Tcfk_concrete texp,
+              match ovf with
+                Override -> true
+              | Fresh -> false)) loc
         end in
       (val_env, met_env, par_env, field::fields,
-       Concr.add lab concr_meths, warn_vals, inher)
+       Concr.add lab.txt concr_meths, warn_vals, inher)
 
-  | Pcf_cstr (sty, sty', loc) ->
-      type_constraint val_env sty sty' loc;
-      (val_env, met_env, par_env, fields, concr_meths, warn_vals, inher)
+  | Pcf_constr (sty, sty') ->
+      let (cty, cty') = type_constraint val_env sty sty' loc in
+      (val_env, met_env, par_env,
+        lazy (mkcf (Tcf_constr (cty, cty')) loc) :: fields,
+        concr_meths, warn_vals, inher)
 
   | Pcf_init expr ->
       let expr = make_method cl_num expr in
@@ -582,11 +669,12 @@ let rec class_field cl_num self_type meths vars
           vars := vars_local;
           let texp = type_expect met_env expr meth_type in
           Ctype.end_def ();
-          Cf_init texp
+          mkcf (Tcf_init texp) loc
         end in
       (val_env, met_env, par_env, field::fields, concr_meths, warn_vals, inher)
 
-and class_structure cl_num final val_env met_env loc (spat, str) =
+and class_structure cl_num final val_env met_env loc
+  { pcstr_pat = spat; pcstr_fields = str } =
   (* Environment for substructures *)
   let par_env = met_env in
 
@@ -639,7 +727,7 @@ and class_structure cl_num final val_env met_env loc (spat, str) =
     {cty_self = public_self;
      cty_vars = Vars.map (fun (id, mut, vr, ty) -> (mut, vr, ty)) !vars;
      cty_concr = concr_meths;
-     cty_inher = inher} in
+      cty_inher = inher} in
   let methods = get_methods self_type in
   let priv_meths =
     List.filter (fun (_,kind,_) -> Btype.field_kind_repr kind <> Fpresent)
@@ -692,18 +780,22 @@ and class_structure cl_num final val_env met_env loc (spat, str) =
   let added = List.filter (fun x -> List.mem x l1) l2 in
   if added <> [] then
     Location.prerr_warning loc (Warnings.Implicit_public_methods added);
-  {cl_field = fields; cl_meths = meths},
-  if final then sign else
-  {sign with cty_self = Ctype.expand_head val_env public_self}
+  let sign = if final then sign else
+      {sign with cty_self = Ctype.expand_head val_env public_self} in
+  {
+    cstr_pat = pat;
+    cstr_fields = fields;
+    cstr_type = sign;
+    cstr_meths = meths}, sign (* redondant, since already in cstr_type *)
 
 and class_expr cl_num val_env met_env scl =
   match scl.pcl_desc with
     Pcl_constr (lid, styl) ->
-      let (path, decl) = Typetexp.find_class val_env scl.pcl_loc lid in
+      let (path, decl) = Typetexp.find_class val_env scl.pcl_loc lid.txt in
       if Path.same decl.cty_path unbound_class then
-        raise(Error(scl.pcl_loc, Unbound_class_2 lid));
+        raise(Error(scl.pcl_loc, Unbound_class_2 lid.txt));
       let tyl = List.map
-          (fun sty -> transl_simple_type val_env false sty, sty.ptyp_loc)
+          (fun sty -> transl_simple_type val_env false sty)
           styl
       in
       let (params, clty) =
@@ -712,51 +804,54 @@ and class_expr cl_num val_env met_env scl =
       let clty' = abbreviate_class_type path params clty in
       if List.length params <> List.length tyl then
         raise(Error(scl.pcl_loc,
-                    Parameter_arity_mismatch (lid, List.length params,
+                    Parameter_arity_mismatch (lid.txt, List.length params,
                                                    List.length tyl)));
       List.iter2
-        (fun (ty',loc) ty ->
+        (fun cty' ty ->
+          let ty' = cty'.ctyp_type in
            try Ctype.unify val_env ty' ty with Ctype.Unify trace ->
-             raise(Error(loc, Parameter_mismatch trace)))
+             raise(Error(cty'.ctyp_loc, Parameter_mismatch trace)))
         tyl params;
       let cl =
-        rc {cl_desc = Tclass_ident path;
+        rc {cl_desc = Tcl_ident (path, lid, tyl);
             cl_loc = scl.pcl_loc;
             cl_type = clty';
             cl_env = val_env}
       in
       let (vals, meths, concrs) = extract_constraints clty in
-      rc {cl_desc = Tclass_constraint (cl, vals, meths, concrs);
+      rc {cl_desc = Tcl_constraint (cl, None, vals, meths, concrs);
           cl_loc = scl.pcl_loc;
           cl_type = clty';
           cl_env = val_env}
   | Pcl_structure cl_str ->
       let (desc, ty) =
         class_structure cl_num false val_env met_env scl.pcl_loc cl_str in
-      rc {cl_desc = Tclass_structure desc;
+      rc {cl_desc = Tcl_structure desc;
           cl_loc = scl.pcl_loc;
-          cl_type = Tcty_signature ty;
+          cl_type = Cty_signature ty;
           cl_env = val_env}
   | Pcl_fun (l, Some default, spat, sbody) ->
       let loc = default.pexp_loc in
       let scases =
-        [{ppat_loc = loc; ppat_desc =
-          Ppat_construct(Longident.(Ldot (Lident"*predef*", "Some")),
-                         Some{ppat_loc = loc; ppat_desc = Ppat_var"*sth*"},
-                         false)},
-         {pexp_loc = loc; pexp_desc = Pexp_ident(Longident.Lident"*sth*")};
+        [{ppat_loc = loc; ppat_desc = Ppat_construct (
+          mknoloc (Longident.(Ldot (Lident"*predef*", "Some"))),
+          Some{ppat_loc = loc; ppat_desc = Ppat_var (mknoloc "*sth*")},
+          false)},
+         {pexp_loc = loc; pexp_desc =
+          Pexp_ident(mknoloc (Longident.Lident"*sth*"))};
          {ppat_loc = loc; ppat_desc =
-          Ppat_construct(Longident.(Ldot (Lident"*predef*", "None")),
+          Ppat_construct(mknoloc (Longident.(Ldot (Lident"*predef*", "None"))),
                          None, false)},
          default] in
       let smatch =
         {pexp_loc = loc; pexp_desc =
          Pexp_match({pexp_loc = loc; pexp_desc =
-                     Pexp_ident(Longident.Lident"*opt*")},
+                     Pexp_ident(mknoloc (Longident.Lident"*opt*"))},
                     scases)} in
       let sfun =
         {pcl_loc = scl.pcl_loc; pcl_desc =
-         Pcl_fun(l, None, {ppat_loc = loc; ppat_desc = Ppat_var"*opt*"},
+         Pcl_fun(l, None,
+                 {ppat_loc = loc; ppat_desc = Ppat_var (mknoloc "*opt*")},
                  {pcl_loc = scl.pcl_loc; pcl_desc =
                   Pcl_let(Default, [spat, smatch], sbody)})}
       in
@@ -772,30 +867,30 @@ and class_expr cl_num val_env met_env scl =
       end;
       let pv =
         List.map
-          (function (id, id', ty) ->
+          begin fun (id, id_loc, id', ty) ->
             let path = Pident id' in
-            let vd = Env.find_value path val_env' (* do not mark the value as being used *) in
-            (id,
-             {
-              exp_desc = Texp_ident(path, vd);
-              exp_loc = Location.none;
+            (* do not mark the value as being used *)
+            let vd = Env.find_value path val_env' in
+            (id, id_loc,
+             {exp_desc =
+              Texp_ident(path, mknoloc (Longident.Lident (Ident.name id)), vd);
+              exp_loc = Location.none; exp_extra = [];
               exp_type = Ctype.instance val_env' vd.val_type;
-              exp_env = val_env'
-             })
-          )
+              exp_env = val_env'})
+          end
           pv
       in
       let rec not_function = function
-          Tcty_fun _ -> false
+          Cty_fun _ -> false
         | _ -> true
       in
       let partial =
         Parmatch.check_partial pat.pat_loc
           [pat, (* Dummy expression *)
            {exp_desc = Texp_constant (Asttypes.Const_int 1);
-            exp_loc = Location.none;
+            exp_loc = Location.none; exp_extra = [];
             exp_type = Ctype.none;
-            exp_env = Env.empty }] 
+            exp_env = Env.empty }]
       in
       Ctype.raise_nongen_level ();
       let cl = class_expr cl_num val_env' met_env scl' in
@@ -803,16 +898,16 @@ and class_expr cl_num val_env met_env scl =
       if Btype.is_optional l && not_function cl.cl_type then
         Location.prerr_warning pat.pat_loc
           Warnings.Unerasable_optional_argument;
-      rc {cl_desc = Tclass_fun (pat, pv, cl, partial);
+      rc {cl_desc = Tcl_fun (l, pat, pv, cl, partial);
           cl_loc = scl.pcl_loc;
-          cl_type = Tcty_fun
+          cl_type = Cty_fun
             (l, Ctype.instance_def pat.pat_type, cl.cl_type);
           cl_env = val_env}
   | Pcl_apply (scl', sargs) ->
       let cl = class_expr cl_num val_env met_env scl' in
       let rec nonopt_labels ls ty_fun =
         match ty_fun with
-        | Tcty_fun (l, _, ty_res) ->
+        | Cty_fun (l, _, ty_res) ->
             if Btype.is_optional l then nonopt_labels ls ty_res
             else nonopt_labels (l::ls) ty_res
         | _    -> ls
@@ -830,7 +925,7 @@ and class_expr cl_num val_env met_env scl =
       in
       let rec type_args args omitted ty_fun sargs more_sargs =
         match ty_fun with
-        | Tcty_fun (l, ty, ty_fun) when sargs <> [] || more_sargs <> [] ->
+        | Cty_fun (l, ty, ty_fun) when sargs <> [] || more_sargs <> [] ->
             let name = Btype.label_name l
             and optional =
               if Btype.is_optional l then Optional else Required in
@@ -873,7 +968,7 @@ and class_expr cl_num val_env met_env scl =
                 else None
             in
             let omitted = if arg = None then (l,ty) :: omitted else omitted in
-            type_args ((arg,optional)::args) omitted ty_fun sargs more_sargs
+            type_args ((l,arg,optional)::args) omitted ty_fun sargs more_sargs
         | _ ->
             match sargs @ more_sargs with
               (l, sarg0)::_ ->
@@ -884,7 +979,7 @@ and class_expr cl_num val_env met_env scl =
             | [] ->
                 (List.rev args,
                  List.fold_left
-                   (fun ty_fun (l,ty) -> Tcty_fun(l,ty,ty_fun))
+                   (fun ty_fun (l,ty) -> Cty_fun(l,ty,ty_fun))
                    ty_fun omitted)
       in
       let (args, cty) =
@@ -893,7 +988,7 @@ and class_expr cl_num val_env met_env scl =
         else
           type_args [] [] cl.cl_type sargs []
       in
-      rc {cl_desc = Tclass_apply (cl, args);
+      rc {cl_desc = Tcl_apply (cl, args);
           cl_loc = scl.pcl_loc;
           cl_type = cty;
           cl_env = val_env}
@@ -906,14 +1001,15 @@ and class_expr cl_num val_env met_env scl =
       in
       let (vals, met_env) =
         List.fold_right
-          (fun id (vals, met_env) ->
+          (fun (id, id_loc) (vals, met_env) ->
              let path = Pident id in
-             let vd = Env.find_value path val_env in (* do not mark the value as used *)
+             (* do not mark the value as used *)
+             let vd = Env.find_value path val_env in
              Ctype.begin_def ();
              let expr =
-               {
-                exp_desc = Texp_ident(path, vd);
-                exp_loc = Location.none;
+               {exp_desc =
+                Texp_ident(path, mknoloc(Longident.Lident (Ident.name id)),vd);
+                exp_loc = Location.none; exp_extra = [];
                 exp_type = Ctype.instance val_env vd.val_type;
                 exp_env = val_env;
                }
@@ -923,18 +1019,18 @@ and class_expr cl_num val_env met_env scl =
              let desc =
                {val_type = expr.exp_type; val_kind = Val_ivar (Immutable,
                                                                cl_num);
-                val_loc = vd.val_loc;
+                Types.val_loc = vd.Types.val_loc;
                }
              in
              let id' = Ident.create (Ident.name id) in
-             ((id', expr)
+             ((id', id_loc, expr)
               :: vals,
               Env.add_value id' desc met_env))
-          (let_bound_idents defs)
+          (let_bound_idents_with_loc defs)
           ([], met_env)
       in
       let cl = class_expr cl_num val_env met_env scl' in
-      rc {cl_desc = Tclass_let (rec_flag, defs, vals, cl);
+      rc {cl_desc = Tcl_let (rec_flag, defs, vals, cl);
           cl_loc = scl.pcl_loc;
           cl_type = cl.cl_type;
           cl_env = val_env}
@@ -950,16 +1046,19 @@ and class_expr cl_num val_env met_env scl =
 
       limited_generalize (Ctype.row_variable (Ctype.self_type cl.cl_type))
           cl.cl_type;
-      limited_generalize (Ctype.row_variable (Ctype.self_type clty)) clty;
+      limited_generalize (Ctype.row_variable (Ctype.self_type clty.cltyp_type))
+        clty.cltyp_type;
 
-      begin match Includeclass.class_types val_env cl.cl_type clty with
+      begin match
+        Includeclass.class_types val_env cl.cl_type clty.cltyp_type
+      with
         []    -> ()
       | error -> raise(Error(cl.cl_loc, Class_match_failure error))
       end;
-      let (vals, meths, concrs) = extract_constraints clty in
-      rc {cl_desc = Tclass_constraint (cl, vals, meths, concrs);
+      let (vals, meths, concrs) = extract_constraints clty.cltyp_type in
+      rc {cl_desc = Tcl_constraint (cl, Some clty, vals, meths, concrs);
           cl_loc = scl.pcl_loc;
-          cl_type = snd (Ctype.instance_class [] clty);
+          cl_type = snd (Ctype.instance_class [] clty.cltyp_type);
           cl_env = val_env}
 
 (*******************************)
@@ -1025,7 +1124,7 @@ let rec initial_env define_class approx
   let constr_type = approx cl.pci_expr in
   if !Clflags.principal then Ctype.generalize_spine constr_type;
   let dummy_cty =
-    Tcty_signature
+    Cty_signature
       { cty_self = Ctype.newvar ();
         cty_vars = Vars.empty;
         cty_concr = Concr.empty;
@@ -1072,7 +1171,7 @@ let class_infos define_class kind
   let params =
     try
       let params, loc = cl.pci_params in
-      List.map (enter_type_variable true loc) params
+      List.map (fun x -> enter_type_variable true loc x.txt) params
     with Already_bound ->
       raise(Error(snd cl.pci_params, Repeated_parameter))
   in
@@ -1156,7 +1255,7 @@ let class_infos define_class kind
       (Ctype.instance env constr_type)
   with Ctype.Unify trace ->
     raise(Error(cl.pci_loc,
-                Constructor_type_mismatch (cl.pci_name, trace)))
+                Constructor_type_mismatch (cl.pci_name.txt, trace)))
   end;
 
   (* Class and class type temporary definitions *)
@@ -1287,23 +1386,38 @@ let final_decl env define_class
       raise(Error(cl.pci_loc, Unbound_type_var(printer, reason)))
   end;
 
-  (id, clty, ty_id, cltydef, obj_id, obj_abbr, cl_id, cl_abbr,
-   arity, pub_meths, coe, expr, (cl.pci_variance, cl.pci_loc))
+  (id, cl.pci_name, clty, ty_id, cltydef, obj_id, obj_abbr, cl_id, cl_abbr,
+   arity, pub_meths, coe, expr,
+   { ci_variance = cl.pci_variance;
+     ci_loc = cl.pci_loc;
+     ci_virt = cl.pci_virt;
+      ci_params = cl.pci_params;
+(* TODO : check that we have the correct use of identifiers *)
+      ci_id_name = cl.pci_name;
+      ci_id_class = id;
+      ci_id_class_type = ty_id;
+      ci_id_object = obj_id;
+      ci_id_typesharp = cl_id;
+     ci_expr = expr;
+     ci_decl = clty;
+     ci_type_decl = cltydef;
+ })
+(*   (cl.pci_variance, cl.pci_loc)) *)
 
 let extract_type_decls
-    (id, clty, ty_id, cltydef, obj_id, obj_abbr, cl_id, cl_abbr,
+    (id, id_loc, clty, ty_id, cltydef, obj_id, obj_abbr, cl_id, cl_abbr,
      arity, pub_meths, coe, expr, required) decls =
   (obj_id, obj_abbr, cl_abbr, clty, cltydef, required) :: decls
 
 let merge_type_decls
-    (id, _clty, ty_id, _cltydef, obj_id, _obj_abbr, cl_id, _cl_abbr,
+    (id, id_loc, _clty, ty_id, _cltydef, obj_id, _obj_abbr, cl_id, _cl_abbr,
      arity, pub_meths, coe, expr, req) (obj_abbr, cl_abbr, clty, cltydef) =
-  (id, clty, ty_id, cltydef, obj_id, obj_abbr, cl_id, cl_abbr,
-   arity, pub_meths, coe, expr)
+  (id, id_loc, clty, ty_id, cltydef, obj_id, obj_abbr, cl_id, cl_abbr,
+   arity, pub_meths, coe, expr, req)
 
 let final_env define_class env
-    (id, clty, ty_id, cltydef, obj_id, obj_abbr, cl_id, cl_abbr,
-     arity, pub_meths, coe, expr) =
+    (id, id_loc, clty, ty_id, cltydef, obj_id, obj_abbr, cl_id, cl_abbr,
+     arity, pub_meths, coe, expr, req) =
   (* Add definitions after cleaning them *)
   Env.add_type obj_id (Subst.type_declaration Subst.identity obj_abbr) (
   Env.add_type cl_id (Subst.type_declaration Subst.identity cl_abbr) (
@@ -1314,8 +1428,8 @@ let final_env define_class env
 
 (* Check that #c is coercible to c if there is a self-coercion *)
 let check_coercions env
-    (id, clty, ty_id, cltydef, obj_id, obj_abbr, cl_id, cl_abbr,
-     arity, pub_meths, coercion_locs, expr) =
+    (id, id_loc, clty, ty_id, cltydef, obj_id, obj_abbr, cl_id, cl_abbr,
+     arity, pub_meths, coercion_locs, expr, req) =
   begin match coercion_locs with [] -> ()
   | loc :: _ ->
       let cl_ty, obj_ty =
@@ -1337,8 +1451,8 @@ let check_coercions env
       if not (Ctype.opened_object cl_ty) then
         raise(Error(loc, Cannot_coerce_self obj_ty))
   end;
-  (id, clty, ty_id, cltydef, obj_id, obj_abbr, cl_id, cl_abbr,
-   arity, pub_meths, expr)
+  (id, id_loc, clty, ty_id, cltydef, obj_id, obj_abbr, cl_id, cl_abbr,
+   arity, pub_meths, req)
 
 (*******************************)
 
@@ -1347,8 +1461,8 @@ let type_classes define_class approx kind env cls =
     List.map
       (function cl ->
          (cl,
-          Ident.create cl.pci_name, Ident.create cl.pci_name,
-          Ident.create cl.pci_name, Ident.create ("#" ^ cl.pci_name)))
+          Ident.create cl.pci_name.txt, Ident.create cl.pci_name.txt,
+          Ident.create cl.pci_name.txt, Ident.create ("#" ^ cl.pci_name.txt)))
       cls
   in
   Ctype.init_def (Ident.current_time ());
@@ -1376,7 +1490,7 @@ let class_declaration env sexpr =
 
 let class_description env sexpr =
   let expr = class_type env sexpr in
-  (expr, expr)
+  (expr, expr.cltyp_type)
 
 let class_declarations env cls =
   type_classes true approx_declaration class_declaration env cls
@@ -1390,14 +1504,15 @@ let class_type_declarations env cls =
   in
   (List.map
      (function
-       (_, _, ty_id, cltydef, obj_id, obj_abbr, cl_id, cl_abbr, _, _, _) ->
-        (ty_id, cltydef, obj_id, obj_abbr, cl_id, cl_abbr))
+       (_, id_loc, _, ty_id, cltydef, obj_id, obj_abbr, cl_id, cl_abbr,
+        _, _, ci) ->
+       (ty_id, id_loc, cltydef, obj_id, obj_abbr, cl_id, cl_abbr, ci))
      decl,
    env)
 
 let rec unify_parents env ty cl =
   match cl.cl_desc with
-    Tclass_ident p ->
+    Tcl_ident (p, _, _) ->
       begin try
         let decl = Env.find_class p env in
         let _, body = Ctype.find_cltype_for_path env decl.cty_path in
@@ -1406,16 +1521,16 @@ let rec unify_parents env ty cl =
         Not_found -> ()
       | exn -> assert false
       end
-  | Tclass_structure st -> unify_parents_struct env ty st
-  | Tclass_fun (_, _, cl, _)
-  | Tclass_apply (cl, _)
-  | Tclass_let (_, _, _, cl)
-  | Tclass_constraint (cl, _, _, _) -> unify_parents env ty cl
+  | Tcl_structure st -> unify_parents_struct env ty st
+  | Tcl_fun (_, _, _, cl, _)
+  | Tcl_apply (cl, _)
+  | Tcl_let (_, _, _, cl)
+  | Tcl_constraint (cl, _, _, _, _) -> unify_parents env ty cl
 and unify_parents_struct env ty st =
   List.iter
-    (function Cf_inher (cl, _, _) -> unify_parents env ty cl
+    (function {cf_desc = Tcf_inher (_, cl, _, _, _)} -> unify_parents env ty cl
       | _ -> ())
-    st.cl_field
+    st.cstr_fields
 
 let type_object env loc s =
   incr class_num;
@@ -1438,7 +1553,8 @@ let approx_class sdecl =
   let self' =
     { ptyp_desc = Ptyp_any; ptyp_loc = Location.none } in
   let clty' =
-    { pcty_desc = Pcty_signature(self', []);
+    { pcty_desc = Pcty_signature { pcsig_self = self';
+        pcsig_fields = []; pcsig_loc = Location.none };
       pcty_loc = sdecl.pci_expr.pcty_loc } in
   { sdecl with pci_expr = clty' }
 
@@ -1602,4 +1718,4 @@ let report_error ppf = function
         "instance variable"
   | No_overriding (kind, name) ->
       fprintf ppf "@[The %s `%s'@ has no previous definition@]" kind name
-       
+
index 9841ed40104a974ed5154a06184b04c57fcd74be..cf4f2142c1097daa58385c9580916273ec032a33 100644 (file)
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: typeclass.mli 12511 2012-05-30 13:29:48Z lefessan $ *)
 
 open Asttypes
 open Types
-open Typedtree
 open Format
 
 val class_declarations:
   Env.t -> Parsetree.class_declaration list ->
-  (Ident.t * class_declaration *
-   Ident.t * cltype_declaration *
+  (Ident.t * string loc * class_declaration *
+   Ident.t * class_type_declaration *
    Ident.t * type_declaration *
    Ident.t * type_declaration *
-   int * string list * class_expr) list * Env.t
+   int * string list * Typedtree.class_declaration) list * Env.t
+
+(*
+and class_declaration =
+  (class_expr, Types.class_declaration) class_infos
+*)
 
 val class_descriptions:
   Env.t -> Parsetree.class_description list ->
-  (Ident.t * class_declaration *
-   Ident.t * cltype_declaration *
+  (Ident.t * string loc * class_declaration *
+   Ident.t * class_type_declaration *
    Ident.t * type_declaration *
    Ident.t * type_declaration *
-   int * string list * class_type) list * Env.t
+   int * string list * Typedtree.class_description) list * Env.t
+
+(*
+and class_description =
+  (class_type, unit) class_infos
+*)
 
 val class_type_declarations:
   Env.t -> Parsetree.class_description list ->
-  (Ident.t * cltype_declaration *
+  (Ident.t * string loc * class_type_declaration *
+   Ident.t * type_declaration *
    Ident.t * type_declaration *
-   Ident.t * type_declaration) list * Env.t
+  Typedtree.class_type_declaration) list * Env.t
+
+(*
+and class_type_declaration =
+  (class_type, Types.class_type_declaration) class_infos
+*)
 
 val approx_class_declarations:
   Env.t -> Parsetree.class_description list ->
-  (Ident.t * cltype_declaration *
+  (Ident.t * string loc * class_type_declaration *
+   Ident.t * type_declaration *
    Ident.t * type_declaration *
-   Ident.t * type_declaration) list
+  Typedtree.class_type_declaration) list
 
 val virtual_methods: Types.class_signature -> label list
 
+(*
+val type_classes :
+           bool ->
+           ('a -> Types.type_expr) ->
+           (Env.t -> 'a -> 'b * Types.class_type) ->
+           Env.t ->
+           'a Parsetree.class_infos list ->
+  (  Ident.t * Types.class_declaration *
+     Ident.t * Types.class_type_declaration *
+     Ident.t * Types.type_declaration *
+     Ident.t * Types.type_declaration *
+     int * string list * 'b * 'b Typedtree.class_infos)
+           list * Env.t
+*)
+
 type error =
     Unconsistent_constraint of (type_expr * type_expr) list
   | Field_type_mismatch of string * string * (type_expr * type_expr) list
index a4aa5179ef3b6ec006f18a5a608bd0db7e2dcbac..81baa2bd8b9ac77e14903f114f5880f462472b7a 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: typecore.ml 12536 2012-06-01 08:08:53Z garrigue $ *)
 
 (* Typechecking for the core language *)
 
@@ -33,7 +33,7 @@ type error =
   | Apply_non_function of type_expr
   | Apply_wrong_label of label * type_expr
   | Label_multiply_defined of Longident.t
-  | Label_missing of string list
+  | Label_missing of Ident.t list
   | Label_not_mutable of Longident.t
   | Incomplete_format of string
   | Bad_conversion of string * int * char
@@ -84,7 +84,7 @@ let type_package =
 let type_object =
   ref (fun env s -> assert false :
        Env.t -> Location.t -> Parsetree.class_structure ->
-         class_structure * class_signature * string list)
+         Typedtree.class_structure * Types.class_signature * string list)
 
 (*
   Saving and outputting type information.
@@ -93,14 +93,20 @@ let type_object =
   or [Typedtree.pattern] that will end up in the typed AST.
 *)
 let re node =
+  Cmt_format.add_saved_type (Cmt_format.Partial_expression node);
   Stypes.record (Stypes.Ti_expr node);
   node
 ;;
 let rp node =
+  Cmt_format.add_saved_type (Cmt_format.Partial_pattern node);
   Stypes.record (Stypes.Ti_pat node);
   node
 ;;
 
+
+let snd3 (_,x,_) = x
+let thd4 (_,_, x,_) = x
+
 (* Upper approximation of free identifiers on the parse tree *)
 
 let iter_expression f e =
@@ -141,7 +147,7 @@ let iter_expression f e =
     | Pexp_for (_, e1, e2, _, e3) -> expr e1; expr e2; expr e3
     | Pexp_override sel -> List.iter (fun (_, e) -> expr e) sel
     | Pexp_letmodule (_, me, e) -> expr e; module_expr me
-    | Pexp_object (_, cs) -> List.iter class_field cs
+    | Pexp_object { pcstr_fields = fs } -> List.iter class_field fs
     | Pexp_pack me -> module_expr me
 
   and module_expr me =
@@ -172,7 +178,7 @@ let iter_expression f e =
   and class_expr ce =
     match ce.pcl_desc with
     | Pcl_constr _ -> ()
-    | Pcl_structure (_, cfl) -> List.iter class_field cfl
+    | Pcl_structure { pcstr_fields = fs } -> List.iter class_field fs
     | Pcl_fun (_, eo, _,  ce) -> may expr eo; class_expr ce
     | Pcl_apply (ce, lel) ->
         class_expr ce; List.iter (fun (_, e) -> expr e) lel
@@ -180,10 +186,11 @@ let iter_expression f e =
         List.iter (fun (_, e) -> expr e) pel; class_expr ce
     | Pcl_constraint (ce, _) -> class_expr ce
 
-  and class_field = function
+  and class_field cf =
+    match cf.pcf_desc with
     | Pcf_inher (_, ce, _) -> class_expr ce
-    | Pcf_valvirt _ | Pcf_virt _ | Pcf_cstr _ -> ()
-    | Pcf_val (_,_,_, e, _) | Pcf_meth (_,_,_, e, _) -> expr e
+    | Pcf_valvirt _ | Pcf_virt _ | Pcf_constr _ -> ()
+    | Pcf_val (_,_,_,e) | Pcf_meth (_,_,_,e) -> expr e
     | Pcf_init e -> expr e
 
   in
@@ -193,7 +200,7 @@ let iter_expression f e =
 let all_idents el =
   let idents = Hashtbl.create 8 in
   let f = function
-    | {pexp_desc=Pexp_ident (Longident.Lident id); _} ->
+    | {pexp_desc=Pexp_ident { txt = Longident.Lident id; _ }; _} ->
         Hashtbl.replace idents id ()
     | _ -> ()
   in
@@ -217,15 +224,20 @@ let type_constant = function
 let type_option ty =
   newty (Tconstr(Predef.path_option,[ty], ref Mnil))
 
+let mkexp exp_desc exp_type exp_loc exp_env =
+  { exp_desc; exp_type; exp_loc; exp_env; exp_extra = [] }
+
 let option_none ty loc =
-  let cnone = Env.lookup_constructor (Longident.Lident "None") Env.initial in
-  { exp_desc = Texp_construct(cnone, []);
-    exp_type = ty; exp_loc = loc; exp_env = Env.initial }
+  let lid = Longident.Lident "None" in
+  let (path, cnone) = Env.lookup_constructor lid Env.initial in
+  mkexp (Texp_construct( path, mknoloc lid, cnone, [], false))
+    ty loc Env.initial
 
 let option_some texp =
-  let csome = Env.lookup_constructor (Longident.Lident "Some") Env.initial in
-  { exp_desc = Texp_construct(csome, [texp]); exp_loc = texp.exp_loc;
-    exp_type = type_option texp.exp_type; exp_env = texp.exp_env }
+  let lid = Longident.Lident "Some" in
+  let (path, csome) = Env.lookup_constructor lid Env.initial in
+  mkexp ( Texp_construct(path, mknoloc lid , csome, [texp],false) )
+    (type_option texp.exp_type) texp.exp_loc texp.exp_env
 
 let extract_option_type env ty =
   match expand_head env ty with {desc = Tconstr(path, [ty], _)}
@@ -296,6 +308,7 @@ let unify_pat_types_gadt loc env ty ty' =
 
 
 (* Creating new conjunctive types is not allowed when typing patterns *)
+
 let unify_pat env pat expected_ty =
   unify_pat_types pat.pat_loc env pat.pat_type expected_ty
 
@@ -341,11 +354,12 @@ let has_variants p =
 
 
 (* pattern environment *)
-let pattern_variables = ref ([]: (Ident.t * type_expr * Location.t * bool (* as-variable *)) list)
+let pattern_variables = ref ([] :
+ (Ident.t * type_expr * string loc * Location.t * bool (* as-variable *)) list)
 let pattern_force = ref ([] : (unit -> unit) list)
 let pattern_scope = ref (None : Annot.ident option);;
 let allow_modules = ref false
-let module_variables = ref ([] : (string * Location.t) list)
+let module_variables = ref ([] : (string loc * Location.t) list)
 let reset_pattern scope allow =
   pattern_variables := [];
   pattern_force := [];
@@ -355,24 +369,26 @@ let reset_pattern scope allow =
 ;;
 
 let enter_variable ?(is_module=false) ?(is_as_variable=false) loc name ty =
-  if List.exists (fun (id, _, _, _) -> Ident.name id = name) !pattern_variables
-  then raise(Error(loc, Multiply_bound_variable name));
-  let id = Ident.create name in
-  pattern_variables := (id, ty, loc, is_as_variable) :: !pattern_variables;
+  if List.exists (fun (id, _, _, _, _) -> Ident.name id = name.txt)
+      !pattern_variables
+  then raise(Error(loc, Multiply_bound_variable name.txt));
+  let id = Ident.create name.txt in
+  pattern_variables :=
+    (id, ty, name, loc, is_as_variable) :: !pattern_variables;
   if is_module then begin
     (* Note: unpack patterns enter a variable of the same name *)
     if not !allow_modules then raise (Error (loc, Modules_not_allowed));
     module_variables := (name, loc) :: !module_variables
-  end else begin
-    match !pattern_scope with
-    | None -> ()
-    | Some s -> Stypes.record (Stypes.An_ident (loc, name, s));
-  end;
+  end else
+    (* moved to genannot *)
+    may (fun s -> Stypes.record (Stypes.An_ident (name.loc, name.txt, s)))
+        !pattern_scope;
   id
 
 let sort_pattern_variables vs =
   List.sort
-    (fun (x,_,_,_) (y,_,_,_) -> Pervasives.compare (Ident.name x) (Ident.name y))
+    (fun (x,_,_,_,_) (y,_,_,_,_) ->
+      Pervasives.compare (Ident.name x) (Ident.name y))
     vs
 
 let enter_orpat_variables loc env  p1_vs p2_vs =
@@ -382,7 +398,7 @@ let enter_orpat_variables loc env  p1_vs p2_vs =
   and p2_vs = sort_pattern_variables p2_vs in
 
   let rec unify_vars p1_vs p2_vs = match p1_vs, p2_vs with
-      | (x1,t1,l1,a1)::rem1, (x2,t2,l2,a2)::rem2 when Ident.equal x1 x2 ->
+      | (x1,t1,_,l1,a1)::rem1, (x2,t2,_,l2,a2)::rem2 when Ident.equal x1 x2 ->
           if x1==x2 then
             unify_vars rem1 rem2
           else begin
@@ -395,9 +411,9 @@ let enter_orpat_variables loc env  p1_vs p2_vs =
           (x2,x1)::unify_vars rem1 rem2
           end
       | [],[] -> []
-      | (x,_,_,_)::_, [] -> raise (Error (loc, Orpat_vars x))
-      | [],(x,_,_,_)::_  -> raise (Error (loc, Orpat_vars x))
-      | (x,_,_,_)::_, (y,_,_,_)::_ ->
+      | (x,_,_,_,_)::_, [] -> raise (Error (loc, Orpat_vars x))
+      | [],(x,_,_,_,_)::_  -> raise (Error (loc, Orpat_vars x))
+      | (x,_,_,_,_)::_, (y,_,_,_,_)::_ ->
           let min_var =
             if Ident.name x < Ident.name y then x
             else y in
@@ -406,11 +422,11 @@ let enter_orpat_variables loc env  p1_vs p2_vs =
 
 let rec build_as_type env p =
   match p.pat_desc with
-    Tpat_alias(p1, _) -> build_as_type env p1
+    Tpat_alias(p1,_, _) -> build_as_type env p1
   | Tpat_tuple pl ->
       let tyl = List.map (build_as_type env) pl in
       newty (Ttuple tyl)
-  | Tpat_construct(cstr, pl) ->
+  | Tpat_construct(_, _, cstr, pl,_) ->
       let keep = cstr.cstr_private = Private || cstr.cstr_existentials <> [] in
       if keep then p.pat_type else
       let tyl = List.map (build_as_type env) pl in
@@ -423,11 +439,11 @@ let rec build_as_type env p =
       newty (Tvariant{row_fields=[l, Rpresent ty]; row_more=newvar();
                       row_bound=(); row_name=None;
                       row_fixed=false; row_closed=false})
-  | Tpat_record lpl ->
-      let lbl = fst(List.hd lpl) in
+  | Tpat_record (lpl,_) ->
+      let lbl = thd4 (List.hd lpl) in
       if lbl.lbl_private = Private then p.pat_type else
       let ty = newvar () in
-      let ppl = List.map (fun (l,p) -> l.lbl_pos, p) lpl in
+      let ppl = List.map (fun (_, _, l, p) -> l.lbl_pos, p) lpl in
       let do_label lbl =
         let _, ty_arg, ty_res = instance_label false lbl in
         unify_pat env {p with pat_type = ty} ty_res;
@@ -476,7 +492,7 @@ let build_or_pat env loc lid =
             (l, Reither(true,[], true, ref None)) :: fields
         | Rpresent (Some ty) ->
             (l, Some {pat_desc=Tpat_any; pat_loc=Location.none; pat_env=env;
-                      pat_type=ty})
+                      pat_type=ty; pat_extra=[];})
             :: pats,
             (l, Reither(false, [ty], true, ref None)) :: fields
         | _ -> pats, fields)
@@ -490,7 +506,7 @@ let build_or_pat env loc lid =
   let row' = ref {row with row_more=newvar()} in
   let pats =
     List.map (fun (l,p) -> {pat_desc=Tpat_variant(l,p,row'); pat_loc=gloc;
-                            pat_env=env; pat_type=ty})
+                            pat_env=env; pat_type=ty; pat_extra=[];})
       pats
   in
   match pats with
@@ -498,16 +514,16 @@ let build_or_pat env loc lid =
   | pat :: pats ->
       let r =
         List.fold_left
-          (fun pat pat0 -> {pat_desc=Tpat_or(pat0,pat,Some row0);
+          (fun pat pat0 -> {pat_desc=Tpat_or(pat0,pat,Some row0); pat_extra=[];
                             pat_loc=gloc; pat_env=env; pat_type=ty})
           pat pats in
-      (rp { r with pat_loc = loc },ty)
+      (path, rp { r with pat_loc = loc },ty)
 
 (* Records *)
 
 let rec find_record_qual = function
   | [] -> None
-  | (Longident.Ldot (modname, _), _) :: _ -> Some modname
+  | ({ txt = Longident.Ldot (modname, _) }, _) :: _ -> Some modname
   | _ :: rest -> find_record_qual rest
 
 let type_label_a_list ?labels env loc type_lbl_a lid_a_list =
@@ -515,21 +531,24 @@ let type_label_a_list ?labels env loc type_lbl_a lid_a_list =
   let lbl_a_list =
     List.map
       (fun (lid, a) ->
-        match lid, labels, record_qual with
-          Longident.Lident s, Some labels, _ when Hashtbl.mem labels s ->
-            Hashtbl.find labels s, a
-        | Longident.Lident s, _, Some modname ->
-            Typetexp.find_label env loc (Longident.Ldot (modname, s)), a
-        | _ ->
-            Typetexp.find_label env loc lid, a)
-      lid_a_list in
+        let path, label =
+          match lid.txt, labels, record_qual with
+              Longident.Lident s, Some labels, _ when Hashtbl.mem labels s ->
+                (Hashtbl.find labels s : Path.t * Types.label_description)
+            | Longident.Lident s, _, Some modname ->
+              Typetexp.find_label env loc (Longident.Ldot (modname, s))
+            | _ ->
+              Typetexp.find_label env loc lid.txt
+        in (path, lid, label, a)
+      )  lid_a_list in
   (* Invariant: records are sorted in the typed tree *)
   let lbl_a_list =
     List.sort
-      (fun (lbl1,_) (lbl2,_) -> compare lbl1.lbl_pos lbl2.lbl_pos)
+      (fun ( _, _, lbl1,_) ( _,_, lbl2,_) -> compare lbl1.lbl_pos lbl2.lbl_pos)
       lbl_a_list
   in
   List.map type_lbl_a lbl_a_list
+;;
 
 let lid_of_label label =
   match repr label.lbl_res with
@@ -543,10 +562,10 @@ let lid_of_label label =
 let check_recordpat_labels loc lbl_pat_list closed =
   match lbl_pat_list with
   | [] -> ()                            (* should not happen *)
-  | (label1, _) :: _ ->
+  | (_, _, label1, _) :: _ ->
       let all = label1.lbl_all in
       let defined = Array.make (Array.length all) false in
-      let check_defined (label, _) =
+      let check_defined (_, _, label, _) =
         if defined.(label.lbl_pos)
         then raise(Error(loc, Label_multiply_defined
                                        (Longident.Lident label.lbl_name)))
@@ -594,28 +613,30 @@ let rec type_pat ~constrs ~labels ~no_existentials ~mode ~env sp expected_ty =
     Ppat_any ->
       rp {
         pat_desc = Tpat_any;
-        pat_loc = loc;
+        pat_loc = loc; pat_extra=[];
         pat_type = expected_ty;
         pat_env = !env }
   | Ppat_var name ->
       let id = enter_variable loc name expected_ty in
       rp {
-        pat_desc = Tpat_var id;
-        pat_loc = loc;
+        pat_desc = Tpat_var (id, name);
+        pat_loc = loc; pat_extra=[];
         pat_type = expected_ty;
         pat_env = !env }
   | Ppat_unpack name ->
       let id = enter_variable loc name expected_ty ~is_module:true in
       rp {
-        pat_desc = Tpat_var id;
-        pat_loc = loc;
+        pat_desc = Tpat_var (id, name);
+        pat_loc = sp.ppat_loc;
+        pat_extra=[Tpat_unpack, loc];
         pat_type = expected_ty;
         pat_env = !env }
-  | Ppat_constraint({ppat_desc=Ppat_var name; ppat_loc=loc},
+  | Ppat_constraint({ppat_desc=Ppat_var name; ppat_loc=lloc},
                     ({ptyp_desc=Ptyp_poly _} as sty)) ->
       (* explicitly polymorphic type *)
-      let ty, force = Typetexp.transl_simple_type_delayed !env sty in
-      unify_pat_types loc !env ty expected_ty;
+      let cty, force = Typetexp.transl_simple_type_delayed !env sty in
+      let ty = cty.ctyp_type in
+      unify_pat_types lloc !env ty expected_ty;
       pattern_force := force :: !pattern_force;
       begin match ty.desc with
       | Tpoly (body, tyl) ->
@@ -623,11 +644,14 @@ let rec type_pat ~constrs ~labels ~no_existentials ~mode ~env sp expected_ty =
           let _, ty' = instance_poly ~keep_names:true false tyl body in
           end_def ();
           generalize ty';
-          let id = enter_variable loc name ty' in
-          rp { pat_desc = Tpat_var id;
-               pat_loc = loc;
-               pat_type = ty;
-               pat_env = !env }
+          let id = enter_variable lloc name ty' in
+          rp {
+            pat_desc = Tpat_var (id, name);
+            pat_loc = lloc;
+            pat_extra = [Tpat_constraint cty, loc];
+            pat_type = ty;
+            pat_env = !env
+          }
       | _ -> assert false
       end
   | Ppat_alias(sq, name) ->
@@ -638,15 +662,15 @@ let rec type_pat ~constrs ~labels ~no_existentials ~mode ~env sp expected_ty =
       generalize ty_var;
       let id = enter_variable ~is_as_variable:true loc name ty_var in
       rp {
-        pat_desc = Tpat_alias(q, id);
-        pat_loc = loc;
+        pat_desc = Tpat_alias(q, id, name);
+        pat_loc = loc; pat_extra=[];
         pat_type = q.pat_type;
         pat_env = !env }
   | Ppat_constant cst ->
       unify_pat_types loc !env (type_constant cst) expected_ty;
       rp {
         pat_desc = Tpat_constant cst;
-        pat_loc = loc;
+        pat_loc = loc; pat_extra=[];
         pat_type = expected_ty;
         pat_env = !env }
   | Ppat_tuple spl ->
@@ -656,17 +680,17 @@ let rec type_pat ~constrs ~labels ~no_existentials ~mode ~env sp expected_ty =
       let pl = List.map (fun (p,t) -> type_pat p t) spl_ann in
       rp {
         pat_desc = Tpat_tuple pl;
-        pat_loc = loc;
+        pat_loc = loc; pat_extra=[];
         pat_type = expected_ty;
         pat_env = !env }
   | Ppat_construct(lid, sarg, explicit_arity) ->
-      let constr =
-        match lid, constrs with
+      let (constr_path, constr) =
+        match lid.txt, constrs with
           Longident.Lident s, Some constrs when Hashtbl.mem constrs s ->
             Hashtbl.find constrs s
-        | _ ->  Typetexp.find_constructor !env loc lid
+        | _ ->  Typetexp.find_constructor !env loc lid.txt
       in
-      Env.mark_constructor `Pattern !env (Longident.last lid) constr;
+      Env.mark_constructor Env.Pattern !env (Longident.last lid.txt) constr;
       if no_existentials && constr.cstr_existentials <> [] then
         raise (Error (loc, Unexpected_existential));
       (* if constructor is gadt, we must verify that the expected type has the
@@ -685,7 +709,7 @@ let rec type_pat ~constrs ~labels ~no_existentials ~mode ~env sp expected_ty =
             replicate_list sp constr.cstr_arity
         | Some sp -> [sp] in
       if List.length sargs <> constr.cstr_arity then
-        raise(Error(loc, Constructor_arity_mismatch(lid,
+        raise(Error(loc, Constructor_arity_mismatch(lid.txt,
                                      constr.cstr_arity, List.length sargs)));
       let (ty_args, ty_res) =
         instance_constructor ~in_pattern:(env, get_newtype_level ()) constr
@@ -696,8 +720,8 @@ let rec type_pat ~constrs ~labels ~no_existentials ~mode ~env sp expected_ty =
         unify_pat_types loc !env ty_res expected_ty;
       let args = List.map2 (fun p t -> type_pat p t) sargs ty_args in
       rp {
-        pat_desc = Tpat_construct(constr, args);
-        pat_loc = loc;
+        pat_desc=Tpat_construct(constr_path, lid, constr, args,explicit_arity);
+        pat_loc = loc; pat_extra=[];
         pat_type = expected_ty;
         pat_env = !env }
   | Ppat_variant(l, sarg) ->
@@ -713,11 +737,11 @@ let rec type_pat ~constrs ~labels ~no_existentials ~mode ~env sp expected_ty =
       unify_pat_types loc !env (newty (Tvariant row)) expected_ty;
       rp {
         pat_desc = Tpat_variant(l, arg, ref {row with row_more = newvar()});
-        pat_loc = loc;
+        pat_loc = loc; pat_extra=[];
         pat_type =  expected_ty;
         pat_env = !env }
   | Ppat_record(lid_sp_list, closed) ->
-      let type_label_pat (label, sarg) =
+      let type_label_pat (label_path, label_lid, label, sarg) =
         begin_def ();
         let (vars, ty_arg, ty_res) = instance_label false label in
         if vars = [] then end_def ();
@@ -737,14 +761,14 @@ let rec type_pat ~constrs ~labels ~no_existentials ~mode ~env sp expected_ty =
           if List.exists instantiated vars then
             raise (Error(loc, Polymorphic_label (lid_of_label label)))
         end;
-        (label, arg)
+        (label_path, label_lid, label, arg)
       in
       let lbl_pat_list =
         type_label_a_list ?labels !env loc type_label_pat lid_sp_list in
       check_recordpat_labels loc lbl_pat_list closed;
       rp {
-        pat_desc = Tpat_record lbl_pat_list;
-        pat_loc = loc;
+        pat_desc = Tpat_record (lbl_pat_list, closed);
+        pat_loc = loc; pat_extra=[];
         pat_type = expected_ty;
         pat_env = !env }
   | Ppat_array spl ->
@@ -755,7 +779,7 @@ let rec type_pat ~constrs ~labels ~no_existentials ~mode ~env sp expected_ty =
       let pl = List.map (fun (p,t) -> type_pat p ty_elt) spl_ann in
       rp {
         pat_desc = Tpat_array pl;
-        pat_loc = loc;
+        pat_loc = loc; pat_extra=[];
         pat_type = expected_ty;
         pat_env = !env }
   | Ppat_or(sp1, sp2) ->
@@ -770,23 +794,25 @@ let rec type_pat ~constrs ~labels ~no_existentials ~mode ~env sp expected_ty =
       pattern_variables := p1_variables;
       rp {
         pat_desc = Tpat_or(p1, alpha_pat alpha_env p2, None);
-        pat_loc = loc;
+        pat_loc = loc; pat_extra=[];
         pat_type = expected_ty;
         pat_env = !env }
   | Ppat_lazy sp1 ->
       let nv = newvar () in
-      unify_pat_types loc !env (instance_def (Predef.type_lazy_t nv)) expected_ty;
+      unify_pat_types loc !env (instance_def (Predef.type_lazy_t nv))
+        expected_ty;
       let p1 = type_pat sp1 nv in
       rp {
         pat_desc = Tpat_lazy p1;
-        pat_loc = loc;
+        pat_loc = loc; pat_extra=[];
         pat_type = expected_ty;
         pat_env = !env }
   | Ppat_constraint(sp, sty) ->
       (* Separate when not already separated by !principal *)
       let separate = true in
       if separate then begin_def();
-      let ty, force = Typetexp.transl_simple_type_delayed !env sty in
+      let cty, force = Typetexp.transl_simple_type_delayed !env sty in
+      let ty = cty.ctyp_type in
       let ty, expected_ty' =
         if separate then begin
           end_def();
@@ -802,15 +828,18 @@ let rec type_pat ~constrs ~labels ~no_existentials ~mode ~env sp expected_ty =
       pattern_force := force :: !pattern_force;
       if separate then
         match p.pat_desc with
-          Tpat_var id ->
+          Tpat_var (id,s) ->
             {p with pat_type = ty;
-             pat_desc = Tpat_alias ({p with pat_desc = Tpat_any}, id)}
-        | _ -> {p with pat_type = ty}
+             pat_desc = Tpat_alias ({p with pat_desc = Tpat_any}, id,s);
+             pat_extra = [Tpat_constraint cty, loc];
+            }
+        | _ -> {p with pat_type = ty;
+                pat_extra = (Tpat_constraint cty,loc) :: p.pat_extra}
       else p
   | Ppat_type lid ->
-      let (r,ty) = build_or_pat !env loc lid in
+      let (path, p,ty) = build_or_pat !env loc lid.txt in
       unify_pat_types loc !env ty expected_ty;
-      r
+      { p with pat_extra = (Tpat_type (path, lid), loc) :: p.pat_extra }
 
 let type_pat ?(allow_existentials=false) ?constrs ?labels
     ?(lev=get_current_level()) env sp expected_ty =
@@ -857,10 +886,10 @@ let rec iter3 f lst1 lst2 lst3 =
 let add_pattern_variables ?check ?check_as env =
   let pv = get_ref pattern_variables in
   (List.fold_right
-    (fun (id, ty, loc, as_var) env ->
+    (fun (id, ty, name, loc, as_var) env ->
        let check = if as_var then check_as else check in
        let e1 = Env.add_value ?check id
-           {val_type = ty; val_kind = Val_reg; val_loc = loc} env in
+           {val_type = ty; val_kind = Val_reg; Types.val_loc = loc} env in
        Env.add_annot id (Annot.Iref_internal loc) e1)
     pv env,
    get_ref module_variables)
@@ -894,15 +923,15 @@ let type_class_arg_pattern cl_num val_env met_env l spat =
   if is_optional l then unify_pat val_env pat (type_option (newvar ()));
   let (pv, met_env) =
     List.fold_right
-      (fun (id, ty, loc, as_var) (pv, env) ->
+      (fun (id, ty, name, loc, as_var) (pv, env) ->
          let check s =
            if as_var then Warnings.Unused_var s
            else Warnings.Unused_var_strict s in
          let id' = Ident.create (Ident.name id) in
-         ((id', id, ty)::pv,
+         ((id', name, id, ty)::pv,
           Env.add_value id' {val_type = ty;
                              val_kind = Val_ivar (Immutable, cl_num);
-                             val_loc = loc;
+                             Types.val_loc = loc;
                             } ~check
             env))
       !pattern_variables ([], met_env)
@@ -914,8 +943,8 @@ let mkpat d = { ppat_desc = d; ppat_loc = Location.none }
 
 let type_self_pattern cl_num privty val_env met_env par_env spat =
   let spat =
-    mkpat (Ppat_alias (mkpat(Ppat_alias (spat, "selfpat-*")),
-                       "selfpat-" ^ cl_num))
+    mkpat (Ppat_alias (mkpat(Ppat_alias (spat, mknoloc "selfpat-*")),
+                       mknoloc ("selfpat-" ^ cl_num)))
   in
   reset_pattern None false;
   let nv = newvar() in
@@ -927,20 +956,20 @@ let type_self_pattern cl_num privty val_env met_env par_env spat =
   pattern_variables := [];
   let (val_env, met_env, par_env) =
     List.fold_right
-      (fun (id, ty, loc, as_var) (val_env, met_env, par_env) ->
+      (fun (id, ty, name, loc, as_var) (val_env, met_env, par_env) ->
          (Env.add_value id {val_type = ty;
                             val_kind = Val_unbound;
-                            val_loc = loc;
+                            Types.val_loc = loc;
                            } val_env,
           Env.add_value id {val_type = ty;
                             val_kind = Val_self (meths, vars, cl_num, privty);
-                            val_loc = loc;
+                            Types.val_loc = loc;
                            }
             ~check:(fun s -> if as_var then Warnings.Unused_var s
                              else Warnings.Unused_var_strict s)
             met_env,
           Env.add_value id {val_type = ty; val_kind = Val_unbound;
-                            val_loc = loc;
+                            Types.val_loc = loc;
                            } par_env))
       pv (val_env, met_env, par_env)
   in
@@ -956,50 +985,61 @@ let force_delayed_checks () =
   reset_delayed_checks ();
   Btype.backtrack snap
 
+let fst3 (x, _, _) = x
+let snd3 (_, x, _) = x
 
 (* Generalization criterion for expressions *)
 
 let rec is_nonexpansive exp =
   match exp.exp_desc with
-    Texp_ident(_,_) -> true
+    Texp_ident(_,_,_) -> true
   | Texp_constant _ -> true
+  | Texp_poly (e, _)
+  | Texp_newtype (_, e)
+    -> is_nonexpansive e
   | Texp_let(rec_flag, pat_exp_list, body) ->
       List.for_all (fun (pat, exp) -> is_nonexpansive exp) pat_exp_list &&
       is_nonexpansive body
   | Texp_function _ -> true
-  | Texp_apply(e, (None,_)::el) ->
-      is_nonexpansive e && List.for_all is_nonexpansive_opt (List.map fst el)
+  | Texp_apply(e, (_,None,_)::el) ->
+      is_nonexpansive e && List.for_all is_nonexpansive_opt (List.map snd3 el)
   | Texp_tuple el ->
       List.for_all is_nonexpansive el
-  | Texp_construct(_, el) ->
+  | Texp_construct(_, _, _, el,_) ->
       List.for_all is_nonexpansive el
   | Texp_variant(_, arg) -> is_nonexpansive_opt arg
   | Texp_record(lbl_exp_list, opt_init_exp) ->
       List.for_all
-        (fun (lbl, exp) -> lbl.lbl_mut = Immutable && is_nonexpansive exp)
+        (fun (_, _, lbl, exp) -> lbl.lbl_mut = Immutable && is_nonexpansive exp)
         lbl_exp_list
       && is_nonexpansive_opt opt_init_exp
-  | Texp_field(exp, lbl) -> is_nonexpansive exp
+  | Texp_field(exp, _, lbl, _) -> is_nonexpansive exp
   | Texp_array [] -> true
   | Texp_ifthenelse(cond, ifso, ifnot) ->
       is_nonexpansive ifso && is_nonexpansive_opt ifnot
   | Texp_sequence (e1, e2) -> is_nonexpansive e2  (* PR#4354 *)
-  | Texp_new (_, cl_decl) when Ctype.class_type_arity cl_decl.cty_type > 0 ->
+  | Texp_new (_, _, cl_decl) when Ctype.class_type_arity cl_decl.cty_type > 0 ->
       true
   (* Note: nonexpansive only means no _observable_ side effects *)
   | Texp_lazy e -> is_nonexpansive e
-  | Texp_object ({cl_field=fields}, {cty_vars=vars}, _) ->
+  | Texp_object ({cstr_fields=fields; cstr_type = { cty_vars=vars}}, _) ->
       let count = ref 0 in
       List.for_all
-        (function
-            Cf_meth _ -> true
-          | Cf_val (_,_,e,_) -> incr count; is_nonexpansive_opt e
-          | Cf_init e -> is_nonexpansive e
-          | Cf_inher _ -> false)
+        (fun field -> match field.cf_desc with
+            Tcf_meth _ -> true
+          | Tcf_val (_,_, _, _, Tcfk_concrete e,_) ->
+              incr count; is_nonexpansive e
+          | Tcf_val (_,_, _, _, Tcfk_virtual _,_) ->
+              incr count; true
+          | Tcf_init e -> is_nonexpansive e
+          | Tcf_constr _ -> true
+          | Tcf_inher _ -> false)
         fields &&
       Vars.fold (fun _ (mut,_,_) b -> decr count; b && mut = Immutable)
         vars true &&
       !count = 0
+  | Texp_letmodule (_, _, mexp, e) ->
+      is_nonexpansive_mod mexp && is_nonexpansive e
   | Texp_pack mexp ->
       is_nonexpansive_mod mexp
   | _ -> false
@@ -1009,21 +1049,22 @@ and is_nonexpansive_mod mexp =
   | Tmod_ident _ -> true
   | Tmod_functor _ -> true
   | Tmod_unpack (e, _) -> is_nonexpansive e
-  | Tmod_constraint (m, _, _) -> is_nonexpansive_mod m
-  | Tmod_structure items ->
+  | Tmod_constraint (m, _, _, _) -> is_nonexpansive_mod m
+  | Tmod_structure str ->
       List.for_all
-        (function
+        (fun item -> match item.str_desc with
           | Tstr_eval _ | Tstr_primitive _ | Tstr_type _ | Tstr_modtype _
-          | Tstr_open _ | Tstr_cltype _ | Tstr_exn_rebind _ -> true
+          | Tstr_open _ | Tstr_class_type _ | Tstr_exn_rebind _ -> true
           | Tstr_value (_, pat_exp_list) ->
               List.for_all (fun (_, exp) -> is_nonexpansive exp) pat_exp_list
-          | Tstr_module (_, m) | Tstr_include (m, _) -> is_nonexpansive_mod m
+          | Tstr_module (_, _, m) | Tstr_include (m, _) -> is_nonexpansive_mod m
           | Tstr_recmodule id_mod_list ->
-              List.for_all (fun (_, m) -> is_nonexpansive_mod m) id_mod_list
+              List.for_all (fun (_, _, _, m) -> is_nonexpansive_mod m)
+                id_mod_list
           | Tstr_exception _ -> false (* true would be unsound *)
           | Tstr_class _ -> false (* could be more precise *)
         )
-        items
+        str.str_items
   | Tmod_apply _ -> false
 
 and is_nonexpansive_opt = function
@@ -1246,7 +1287,7 @@ let rec approx_type env sty =
       newty (Ttuple (List.map (approx_type env) args))
   | Ptyp_constr (lid, ctl) ->
       begin try
-        let (path, decl) = Env.lookup_type lid env in
+        let (path, decl) = Env.lookup_type lid.txt env in
         if List.length ctl <> decl.type_arity then raise Not_found;
         let tyl = List.map (approx_type env) ctl in
         newconstr path tyl
@@ -1347,26 +1388,30 @@ let self_coercion = ref ([] : (Path.t * Location.t list ref) list)
 (* Helpers for packaged modules. *)
 let create_package_type loc env (p, l) =
   let s = !Typetexp.transl_modtype_longident loc env p in
-  newty (Tpackage (s,
-                   List.map fst l,
-                   List.map (Typetexp.transl_simple_type env false)
-                     (List.map snd l)))
-
-let wrap_unpacks sexp unpacks =
-  List.fold_left
-    (fun sexp (name, loc) ->
-      {pexp_loc = sexp.pexp_loc; pexp_desc = Pexp_letmodule (
-       name,
-       {pmod_loc = loc; pmod_desc = Pmod_unpack
-          {pexp_desc=Pexp_ident(Longident.Lident name); pexp_loc=loc}},
+  let fields = List.map (fun (name, ct) ->
+                          name, Typetexp.transl_simple_type env false ct) l in
+  let ty = newty (Tpackage (s,
+                    List.map fst l,
+                   List.map (fun (_, cty) -> cty.ctyp_type) fields))
+  in
+   (s, fields, ty)
+
+ let wrap_unpacks sexp unpacks =
+   List.fold_left
+     (fun sexp (name, loc) ->
+       {pexp_loc = sexp.pexp_loc; pexp_desc = Pexp_letmodule (
+        name,
+        {pmod_loc = loc; pmod_desc = Pmod_unpack
+           {pexp_desc=Pexp_ident(mkloc (Longident.Lident name.txt) name.loc);
+            pexp_loc=name.loc}},
        sexp)})
     sexp unpacks
 
 (* Helpers for type_cases *)
-let iter_ppat f p = 
+let iter_ppat f p =
   match p.ppat_desc with
-  | Ppat_any | Ppat_var _ | Ppat_constant _ 
-  | Ppat_type _ | Ppat_unpack _ -> ()    
+  | Ppat_any | Ppat_var _ | Ppat_constant _
+  | Ppat_type _ | Ppat_unpack _ -> ()
   | Ppat_array pats -> List.iter f pats
   | Ppat_or (p1,p2) -> f p1; f p2
   | Ppat_variant (_, arg) | Ppat_construct (_, arg, _) -> may f arg
@@ -1387,7 +1432,8 @@ let contains_gadt env p =
     match p.ppat_desc with
       Ppat_construct (lid, _, _) ->
         begin try
-          if (Env.lookup_constructor lid env).cstr_generalized then raise Exit
+                let (_path, cstr) = Env.lookup_constructor lid.txt env in
+          if cstr.cstr_generalized then raise Exit
         with Not_found -> ()
         end; iter_ppat loop p
     | _ -> iter_ppat loop p
@@ -1438,6 +1484,7 @@ and type_expect ?in_function env sexp ty_expected =
   let loc = sexp.pexp_loc in
   (* Record the expression type before unifying it with the expected type *)
   let rue exp =
+    Cmt_format.add_saved_type (Cmt_format.Partial_expression exp);
     Stypes.record (Stypes.Ti_expr exp);
     unify_exp env exp (instance env ty_expected);
     exp
@@ -1446,13 +1493,13 @@ and type_expect ?in_function env sexp ty_expected =
   | Pexp_ident lid ->
       begin
         if !Clflags.annotations then begin
-          try let (path, annot) = Env.lookup_annot lid env in
+          try let (path, annot) = Env.lookup_annot lid.txt env in
               Stypes.record
                 (Stypes.An_ident (
                  loc, Path.name ~paren:Oprint.parenthesized_ident path, annot))
           with _ -> ()
         end;
-        let (path, desc) = Typetexp.find_value env loc lid in
+        let (path, desc) = Typetexp.find_value env loc lid.txt in
         rue {
           exp_desc =
             begin match desc.val_kind with
@@ -1460,25 +1507,28 @@ and type_expect ?in_function env sexp ty_expected =
                 let (self_path, _) =
                   Env.lookup_value (Longident.Lident ("self-" ^ cl_num)) env
                 in
-                Texp_instvar(self_path, path)
+                Texp_instvar(self_path, path,
+                             match lid.txt with
+                                 Longident.Lident txt -> { txt; loc = lid.loc }
+                               | _ -> assert false)
             | Val_self (_, _, cl_num, _) ->
                 let (path, _) =
                   Env.lookup_value (Longident.Lident ("self-" ^ cl_num)) env
                 in
-                Texp_ident(path, desc)
+                Texp_ident(path, lid, desc)
             | Val_unbound ->
-                raise(Error(loc, Masked_instance_variable lid))
+                raise(Error(loc, Masked_instance_variable lid.txt))
             | _ ->
-                Texp_ident(path, desc)
-            end;
-          exp_loc = loc;
+                Texp_ident(path, lid, desc)
+          end;
+          exp_loc = loc; exp_extra = [];
           exp_type = instance env desc.val_type;
           exp_env = env }
       end
   | Pexp_constant(Const_string s as cst) ->
       rue {
         exp_desc = Texp_constant cst;
-        exp_loc = loc;
+        exp_loc = loc; exp_extra = [];
         exp_type =
         (* Terrible hack for format strings *)
            begin match (repr (expand_head env ty_expected)).desc with
@@ -1490,7 +1540,7 @@ and type_expect ?in_function env sexp ty_expected =
   | Pexp_constant cst ->
       rue {
         exp_desc = Texp_constant cst;
-        exp_loc = loc;
+        exp_loc = loc; exp_extra = [];
         exp_type = type_constant cst;
         exp_env = env }
   | Pexp_let(Nonrecursive, [spat, sval], sbody) when contains_gadt env spat ->
@@ -1510,7 +1560,7 @@ and type_expect ?in_function env sexp ty_expected =
         type_expect new_env (wrap_unpacks sbody unpacks) ty_expected in
       re {
         exp_desc = Texp_let(rec_flag, pat_exp_list, body);
-        exp_loc = loc;
+        exp_loc = loc; exp_extra = [];
         exp_type = body.exp_type;
         exp_env = env }
   | Pexp_function (l, Some default, [spat, sbody]) ->
@@ -1519,14 +1569,16 @@ and type_expect ?in_function env sexp ty_expected =
          {ppat_loc = default_loc;
           ppat_desc =
             Ppat_construct
-              (Longident.(Ldot (Lident "*predef*", "Some")),
-               Some {ppat_loc = default_loc; ppat_desc = Ppat_var "*sth*"},
+              (mknoloc (Longident.(Ldot (Lident "*predef*", "Some"))),
+               Some {ppat_loc = default_loc;
+                     ppat_desc = Ppat_var (mknoloc "*sth*")},
                false)},
          {pexp_loc = default_loc;
-          pexp_desc = Pexp_ident(Longident.Lident "*sth*")};
+          pexp_desc = Pexp_ident(mknoloc (Longident.Lident "*sth*"))};
          {ppat_loc = default_loc;
           ppat_desc = Ppat_construct
-            (Longident.(Ldot (Lident "*predef*", "None")), None, false)},
+             (mknoloc (Longident.(Ldot (Lident "*predef*", "None"))),
+              None, false)},
          default;
       ] in
       let smatch = {
@@ -1534,7 +1586,7 @@ and type_expect ?in_function env sexp ty_expected =
         pexp_desc =
           Pexp_match ({
             pexp_loc = loc;
-            pexp_desc = Pexp_ident(Longident.Lident "*opt*")
+            pexp_desc = Pexp_ident(mknoloc (Longident.Lident "*opt*"))
             },
             scases
           )
@@ -1545,7 +1597,7 @@ and type_expect ?in_function env sexp ty_expected =
          Pexp_function (
            l, None,
            [ {ppat_loc = loc;
-              ppat_desc = Ppat_var "*opt*"},
+              ppat_desc = Ppat_var (mknoloc "*opt*")},
              {pexp_loc = loc;
               pexp_desc = Pexp_let(Default, [spat, smatch], sbody);
              }
@@ -1596,8 +1648,8 @@ and type_expect ?in_function env sexp ty_expected =
         Location.prerr_warning (fst (List.hd cases)).pat_loc
           Warnings.Unerasable_optional_argument;
       re {
-        exp_desc = Texp_function(cases, partial);
-        exp_loc = loc;
+        exp_desc = Texp_function(l,cases, partial);
+        exp_loc = loc; exp_extra = [];
         exp_type = instance env (newgenty (Tarrow(l, ty_arg, ty_res, Cok)));
         exp_env = env }
   | Pexp_apply(sfunct, sargs) ->
@@ -1605,9 +1657,9 @@ and type_expect ?in_function env sexp ty_expected =
       if !Clflags.principal then begin_def ();
       let funct = type_exp env sfunct in
       if !Clflags.principal then begin
-        end_def ();
-        generalize_structure funct.exp_type
-      end;
+          end_def ();
+          generalize_structure funct.exp_type
+        end;
       let rec lower_args seen ty_fun =
         let ty = expand_head env ty_fun in
         if List.memq ty seen then () else
@@ -1626,7 +1678,7 @@ and type_expect ?in_function env sexp ty_expected =
       unify_var env (newvar()) funct.exp_type;
       rue {
         exp_desc = Texp_apply(funct, args);
-        exp_loc = loc;
+        exp_loc = loc; exp_extra = [];
         exp_type = ty_res;
         exp_env = env }
   | Pexp_match(sarg, caselist) ->
@@ -1640,7 +1692,7 @@ and type_expect ?in_function env sexp ty_expected =
       in
       re {
         exp_desc = Texp_match(arg, cases, partial);
-        exp_loc = loc;
+        exp_loc = loc; exp_extra = [];
         exp_type = instance env ty_expected;
         exp_env = env }
   | Pexp_try(sbody, caselist) ->
@@ -1649,7 +1701,7 @@ and type_expect ?in_function env sexp ty_expected =
         type_cases env Predef.type_exn ty_expected false loc caselist in
       re {
         exp_desc = Texp_try(body, cases);
-        exp_loc = loc;
+        exp_loc = loc; exp_extra = [];
         exp_type = body.exp_type;
         exp_env = env }
   | Pexp_tuple sexpl ->
@@ -1661,7 +1713,7 @@ and type_expect ?in_function env sexp ty_expected =
       in
       re {
         exp_desc = Texp_tuple expl;
-        exp_loc = loc;
+        exp_loc = loc; exp_extra = [];
         (* Keep sharing *)
         exp_type = newty (Ttuple (List.map (fun e -> e.exp_type) expl));
         exp_env = env }
@@ -1679,7 +1731,7 @@ and type_expect ?in_function env sexp ty_expected =
             Rpresent (Some ty), Rpresent (Some ty0) ->
               let arg = type_argument env sarg ty ty0 in
               re { exp_desc = Texp_variant(l, Some arg);
-                   exp_loc = loc;
+                   exp_loc = loc; exp_extra = [];
                    exp_type = ty_expected0;
                    exp_env = env }
           | _ -> raise Not_found
@@ -1690,7 +1742,7 @@ and type_expect ?in_function env sexp ty_expected =
         let arg_type = may_map (fun arg -> arg.exp_type) arg in
         rue {
           exp_desc = Texp_variant(l, arg);
-          exp_loc = loc;
+          exp_loc = loc; exp_extra = [];
           exp_type= newty (Tvariant{row_fields = [l, Rpresent arg_type];
                                     row_more = newvar ();
                                     row_bound = ();
@@ -1705,20 +1757,21 @@ and type_expect ?in_function env sexp ty_expected =
           lid_sexp_list in
       let rec check_duplicates seen_pos lid_sexp lbl_exp =
         match (lid_sexp, lbl_exp) with
-          ((lid, _) :: rem1, (lbl, _) :: rem2) ->
+          ((lid, _) :: rem1, (_, _, lbl, _) :: rem2) ->
             if List.mem lbl.lbl_pos seen_pos
-            then raise(Error(loc, Label_multiply_defined lid))
+            then raise(Error(loc, Label_multiply_defined lid.txt))
             else check_duplicates (lbl.lbl_pos :: seen_pos) rem1 rem2
         | (_, _) -> () in
       check_duplicates [] lid_sexp_list lbl_exp_list;
       let opt_exp =
         match opt_sexp, lbl_exp_list with
           None, _ -> None
-        | Some sexp, (lbl, _) :: _ ->
+        | Some sexp, (_, _, lbl, _) :: _ ->
             if !Clflags.principal then begin_def ();
             let ty_exp = newvar () in
             let unify_kept lbl =
-              if List.for_all (fun (lbl',_) -> lbl'.lbl_pos <> lbl.lbl_pos)
+              if List.for_all
+                  (fun (_, _, lbl',_) -> lbl'.lbl_pos <> lbl.lbl_pos)
                   lbl_exp_list
               then begin
                 let _, ty_arg1, ty_res1 = instance_label false lbl
@@ -1737,10 +1790,10 @@ and type_expect ?in_function env sexp ty_expected =
       in
       let num_fields =
         match lbl_exp_list with [] -> assert false
-        | (lbl,_)::_ -> Array.length lbl.lbl_all in
+        | (_,_, lbl,_)::_ -> Array.length lbl.lbl_all in
       if opt_sexp = None && List.length lid_sexp_list <> num_fields then begin
         let present_indices =
-          List.map (fun (lbl, _) -> lbl.lbl_pos) lbl_exp_list in
+          List.map (fun (_,_, lbl, _) -> lbl.lbl_pos) lbl_exp_list in
         let label_names = extract_label_names sexp env ty_expected in
         let rec missing_labels n = function
             [] -> []
@@ -1755,29 +1808,30 @@ and type_expect ?in_function env sexp ty_expected =
         Location.prerr_warning loc Warnings.Useless_record_with;
       re {
         exp_desc = Texp_record(lbl_exp_list, opt_exp);
-        exp_loc = loc;
+        exp_loc = loc; exp_extra = [];
         exp_type = instance env ty_expected;
         exp_env = env }
   | Pexp_field(sarg, lid) ->
       let arg = type_exp env sarg in
-      let label = Typetexp.find_label env loc lid in
+      let (label_path,label) = Typetexp.find_label env loc lid.txt in
       let (_, ty_arg, ty_res) = instance_label false label in
       unify_exp env arg ty_res;
       rue {
-        exp_desc = Texp_field(arg, label);
-        exp_loc = loc;
+        exp_desc = Texp_field(arg, label_path, lid, label);
+        exp_loc = loc; exp_extra = [];
         exp_type = ty_arg;
         exp_env = env }
   | Pexp_setfield(srecord, lid, snewval) ->
       let record = type_exp env srecord in
-      let label = Typetexp.find_label env loc lid in
-      let (label, newval) =
-        type_label_exp false env loc record.exp_type (label, snewval) in
+      let (label_path, label) = Typetexp.find_label env loc lid.txt in
+      let (label_path, label_loc, label, newval) =
+        type_label_exp false env loc record.exp_type
+          (label_path, lid, label, snewval) in
       if label.lbl_mut = Immutable then
-        raise(Error(loc, Label_not_mutable lid));
+        raise(Error(loc, Label_not_mutable lid.txt));
       rue {
-        exp_desc = Texp_setfield(record, label, newval);
-        exp_loc = loc;
+        exp_desc = Texp_setfield(record, label_path, label_loc, label, newval);
+        exp_loc = loc; exp_extra = [];
         exp_type = instance_def Predef.type_unit;
         exp_env = env }
   | Pexp_array(sargl) ->
@@ -1787,7 +1841,7 @@ and type_expect ?in_function env sexp ty_expected =
       let argl = List.map (fun sarg -> type_expect env sarg ty) sargl in
       re {
         exp_desc = Texp_array argl;
-        exp_loc = loc;
+        exp_loc = loc; exp_extra = [];
         exp_type = instance env ty_expected;
         exp_env = env }
   | Pexp_ifthenelse(scond, sifso, sifnot) ->
@@ -1797,7 +1851,7 @@ and type_expect ?in_function env sexp ty_expected =
           let ifso = type_expect env sifso Predef.type_unit in
           rue {
             exp_desc = Texp_ifthenelse(cond, ifso, None);
-            exp_loc = loc;
+            exp_loc = loc; exp_extra = [];
             exp_type = ifso.exp_type;
             exp_env = env }
       | Some sifnot ->
@@ -1807,7 +1861,7 @@ and type_expect ?in_function env sexp ty_expected =
           unify_exp env ifnot ifso.exp_type;
           re {
             exp_desc = Texp_ifthenelse(cond, ifso, Some ifnot);
-            exp_loc = loc;
+            exp_loc = loc; exp_extra = [];
             exp_type = ifso.exp_type;
             exp_env = env }
       end
@@ -1816,7 +1870,7 @@ and type_expect ?in_function env sexp ty_expected =
       let exp2 = type_expect env sexp2 ty_expected in
       re {
         exp_desc = Texp_sequence(exp1, exp2);
-        exp_loc = loc;
+        exp_loc = loc; exp_extra = [];
         exp_type = exp2.exp_type;
         exp_env = env }
   | Pexp_while(scond, sbody) ->
@@ -1824,46 +1878,48 @@ and type_expect ?in_function env sexp ty_expected =
       let body = type_statement env sbody in
       rue {
         exp_desc = Texp_while(cond, body);
-        exp_loc = loc;
+        exp_loc = loc; exp_extra = [];
         exp_type = instance_def Predef.type_unit;
         exp_env = env }
   | Pexp_for(param, slow, shigh, dir, sbody) ->
       let low = type_expect env slow Predef.type_int in
       let high = type_expect env shigh Predef.type_int in
       let (id, new_env) =
-        Env.enter_value param {val_type = instance_def Predef.type_int;
-                               val_kind = Val_reg;
-                               val_loc = loc;
-                              } env
+        Env.enter_value param.txt {val_type = instance_def Predef.type_int;
+          val_kind = Val_reg; Types.val_loc = loc; } env
           ~check:(fun s -> Warnings.Unused_for_index s)
       in
       let body = type_statement new_env sbody in
       rue {
-        exp_desc = Texp_for(id, low, high, dir, body);
-        exp_loc = loc;
+        exp_desc = Texp_for(id, param, low, high, dir, body);
+        exp_loc = loc; exp_extra = [];
         exp_type = instance_def Predef.type_unit;
         exp_env = env }
   | Pexp_constraint(sarg, sty, sty') ->
+
       let separate = true (* always separate, 1% slowdown for lablgtk *)
         (* !Clflags.principal || Env.has_local_constraints env *) in
-      let (arg, ty') =
+      let (arg, ty',cty,cty') =
         match (sty, sty') with
           (None, None) ->               (* Case actually unused *)
             let arg = type_exp env sarg in
-            (arg, arg.exp_type)
+            (arg, arg.exp_type,None,None)
         | (Some sty, None) ->
             if separate then begin_def ();
-            let ty = Typetexp.transl_simple_type env false sty in
+            let cty = Typetexp.transl_simple_type env false sty in
+            let ty = cty.ctyp_type in
             if separate then begin
               end_def ();
               generalize_structure ty;
-              (type_argument env sarg ty (instance env ty), instance env ty)
+              (type_argument env sarg ty (instance env ty),
+               instance env ty, Some cty, None)
             end else
-              (type_argument env sarg ty ty, ty)
+              (type_argument env sarg ty ty, ty, Some cty, None)
         | (None, Some sty') ->
-            let (ty', force) =
+            let (cty', force) =
               Typetexp.transl_simple_type_delayed env sty'
             in
+            let ty' = cty'.ctyp_type in
             if separate then begin_def ();
             let arg = type_exp env sarg in
             let gen =
@@ -1876,7 +1932,7 @@ and type_expect ?in_function env sexp ty_expected =
               end else true
             in
             begin match arg.exp_desc, !self_coercion, (repr ty').desc with
-              Texp_ident(_, {val_kind=Val_self _}), (path,r) :: _,
+              Texp_ident(_, _, {val_kind=Val_self _}), (path,r) :: _,
               Tconstr(path',_,_) when Path.same path path' ->
                 (* prerr_endline "self coercion"; *)
                 r := loc :: !r;
@@ -1909,14 +1965,16 @@ and type_expect ?in_function env sexp ty_expected =
                         Coercion_failure(ty', full_expand env ty', trace, b)))
                 end
             end;
-            (arg, ty')
+            (arg, ty', None, Some cty')
         | (Some sty, Some sty') ->
             if separate then begin_def ();
-            let (ty, force) =
+            let (cty, force) =
               Typetexp.transl_simple_type_delayed env sty
-            and (ty', force') =
+            and (cty', force') =
               Typetexp.transl_simple_type_delayed env sty'
             in
+            let ty = cty.ctyp_type in
+            let ty' = cty'.ctyp_type in
             begin try
               let force'' = subtype env ty ty' in
               force (); force' (); force'' ()
@@ -1927,38 +1985,41 @@ and type_expect ?in_function env sexp ty_expected =
               end_def ();
               generalize_structure ty;
               generalize_structure ty';
-              (type_argument env sarg ty (instance env ty), instance env ty')
+              (type_argument env sarg ty (instance env ty),
+               instance env ty', Some cty, Some cty')
             end else
-              (type_argument env sarg ty ty, ty')
+              (type_argument env sarg ty ty, ty', Some cty, Some cty')
       in
       rue {
         exp_desc = arg.exp_desc;
         exp_loc = arg.exp_loc;
         exp_type = ty';
-        exp_env = env }
+        exp_env = env;
+        exp_extra = (Texp_constraint (cty, cty'), loc) :: arg.exp_extra;
+      }
   | Pexp_when(scond, sbody) ->
       let cond = type_expect env scond Predef.type_bool in
       let body = type_expect env sbody ty_expected in
       re {
         exp_desc = Texp_when(cond, body);
-        exp_loc = loc;
+        exp_loc = loc; exp_extra = [];
         exp_type = body.exp_type;
         exp_env = env }
   | Pexp_send (e, met) ->
       if !Clflags.principal then begin_def ();
       let obj = type_exp env e in
       begin try
-        let (exp, typ) =
+        let (meth, exp, typ) =
           match obj.exp_desc with
-            Texp_ident(path, {val_kind = Val_self (meths, _, _, privty)}) ->
+            Texp_ident(path, _, {val_kind = Val_self (meths, _, _, privty)}) ->
               let (id, typ) =
                 filter_self_method env met Private meths privty
               in
               if is_Tvar (repr typ) then
                 Location.prerr_warning loc
                   (Warnings.Undeclared_virtual_method met);
-              (Texp_send(obj, Tmeth_val id), typ)
-          | Texp_ident(path, {val_kind = Val_anc (methods, cl_num)}) ->
+              (Tmeth_val id, None, typ)
+          | Texp_ident(path, lid, {val_kind = Val_anc (methods, cl_num)}) ->
               let method_id =
                 begin try List.assoc met methods with Not_found ->
                   raise(Error(e.pexp_loc, Undefined_inherited_method met))
@@ -1977,25 +2038,31 @@ and type_expect ?in_function env sexp ty_expected =
                   let (obj_ty, res_ty) = filter_arrow env method_type "" in
                   unify env obj_ty desc.val_type;
                   unify env res_ty (instance env typ);
-                  (Texp_apply({ exp_desc = Texp_ident(Path.Pident method_id,
-                                                     {val_type = method_type;
-                                                      val_kind = Val_reg;
-                                                      val_loc = Location.none;
-                                                     });
-                                exp_loc = loc;
+                 let exp =
+                   Texp_apply({exp_desc =
+                                Texp_ident(Path.Pident method_id, lid,
+                                           {val_type = method_type;
+                                            val_kind = Val_reg;
+                                            Types.val_loc = Location.none});
+                                exp_loc = loc; exp_extra = [];
                                 exp_type = method_type;
-                                exp_env = env },
-                              [Some {exp_desc = Texp_ident(path, desc);
-                                     exp_loc = obj.exp_loc;
-                                     exp_type = desc.val_type;
-                                     exp_env = env },
-                               Required]),
-                   typ)
+                                exp_env = env},
+                          ["",
+                            Some {exp_desc = Texp_ident(path, lid, desc);
+                                  exp_loc = obj.exp_loc; exp_extra = [];
+                                  exp_type = desc.val_type;
+                                  exp_env = env},
+                               Required])
+                 in
+                  (Tmeth_name met, Some (re {exp_desc = exp;
+                                            exp_loc = loc; exp_extra = [];
+                                            exp_type = typ;
+                                            exp_env = env}), typ)
               |  _ ->
                   assert false
               end
           | _ ->
-              (Texp_send(obj, Tmeth_name met),
+              (Tmeth_name met, None,
                filter_method env met Public obj.exp_type)
         in
         if !Clflags.principal then begin
@@ -2021,54 +2088,55 @@ and type_expect ?in_function env sexp ty_expected =
               assert false
         in
         rue {
-          exp_desc = exp;
-          exp_loc = loc;
+          exp_desc = Texp_send(obj, meth, exp);
+          exp_loc = loc; exp_extra = [];
           exp_type = typ;
           exp_env = env }
       with Unify _ ->
         raise(Error(e.pexp_loc, Undefined_method (obj.exp_type, met)))
       end
   | Pexp_new cl ->
-      let (cl_path, cl_decl) = Typetexp.find_class env loc cl in
+      let (cl_path, cl_decl) = Typetexp.find_class env loc cl.txt in
         begin match cl_decl.cty_new with
           None ->
-            raise(Error(loc, Virtual_class cl))
+            raise(Error(loc, Virtual_class cl.txt))
         | Some ty ->
             rue {
-              exp_desc = Texp_new (cl_path, cl_decl);
-              exp_loc = loc;
+              exp_desc = Texp_new (cl_path, cl, cl_decl);
+              exp_loc = loc; exp_extra = [];
               exp_type = instance_def ty;
               exp_env = env }
         end
   | Pexp_setinstvar (lab, snewval) ->
       begin try
-        let (path, desc) = Env.lookup_value (Longident.Lident lab) env in
+        let (path, desc) = Env.lookup_value (Longident.Lident lab.txt) env in
         match desc.val_kind with
           Val_ivar (Mutable, cl_num) ->
-            let newval = type_expect env snewval (instance env desc.val_type) in
+            let newval =
+              type_expect env snewval (instance env desc.val_type) in
             let (path_self, _) =
               Env.lookup_value (Longident.Lident ("self-" ^ cl_num)) env
             in
             rue {
-              exp_desc = Texp_setinstvar(path_self, path, newval);
-              exp_loc = loc;
+              exp_desc = Texp_setinstvar(path_self, path, lab, newval);
+              exp_loc = loc; exp_extra = [];
               exp_type = instance_def Predef.type_unit;
               exp_env = env }
         | Val_ivar _ ->
-            raise(Error(loc,Instance_variable_not_mutable(true,lab)))
+            raise(Error(loc,Instance_variable_not_mutable(true,lab.txt)))
         | _ ->
-            raise(Error(loc,Instance_variable_not_mutable(false,lab)))
+            raise(Error(loc,Instance_variable_not_mutable(false,lab.txt)))
       with
         Not_found ->
-          raise(Error(loc, Unbound_instance_variable lab))
+          raise(Error(loc, Unbound_instance_variable lab.txt))
       end
   | Pexp_override lst ->
       let _ =
        List.fold_right
         (fun (lab, _) l ->
-           if List.exists ((=) lab) l then
+           if List.exists (fun l -> l.txt = lab.txt) l then
              raise(Error(loc,
-                         Value_multiply_overridden lab));
+                         Value_multiply_overridden lab.txt));
            lab::l)
         lst
         [] in
@@ -2083,17 +2151,17 @@ and type_expect ?in_function env sexp ty_expected =
         (path_self, _) ->
           let type_override (lab, snewval) =
             begin try
-              let (id, _, _, ty) = Vars.find lab !vars in
-              (Path.Pident id, type_expect env snewval (instance env ty))
+              let (id, _, _, ty) = Vars.find lab.txt !vars in
+              (Path.Pident id, lab, type_expect env snewval (instance env ty))
             with
               Not_found ->
-                raise(Error(loc, Unbound_instance_variable lab))
+                raise(Error(loc, Unbound_instance_variable lab.txt))
             end
           in
           let modifs = List.map type_override lst in
           rue {
             exp_desc = Texp_override(path_self, modifs);
-            exp_loc = loc;
+            exp_loc = loc; exp_extra = [];
             exp_type = self_ty;
             exp_env = env }
       | _ ->
@@ -2106,7 +2174,7 @@ and type_expect ?in_function env sexp ty_expected =
       Ident.set_current_time ty.level;
       let context = Typetexp.narrow () in
       let modl = !type_module env smodl in
-      let (id, new_env) = Env.enter_module name modl.mod_type env in
+      let (id, new_env) = Env.enter_module name.txt modl.mod_type env in
       Ctype.init_def(Ident.current_time());
       Typetexp.widen context;
       let body = type_expect new_env sbody ty_expected in
@@ -2120,25 +2188,25 @@ and type_expect ?in_function env sexp ty_expected =
       begin try
         Ctype.unify_var new_env ty body.exp_type
       with Unify _ ->
-        raise(Error(loc, Scoping_let_module(name, body.exp_type)))
+        raise(Error(loc, Scoping_let_module(name.txt, body.exp_type)))
       end;
       re {
-        exp_desc = Texp_letmodule(id, modl, body);
-        exp_loc = loc;
+        exp_desc = Texp_letmodule(id, name, modl, body);
+        exp_loc = loc; exp_extra = [];
         exp_type = ty;
         exp_env = env }
   | Pexp_assert (e) ->
       let cond = type_expect env e Predef.type_bool in
       rue {
         exp_desc = Texp_assert (cond);
-        exp_loc = loc;
+        exp_loc = loc; exp_extra = [];
         exp_type = instance_def Predef.type_unit;
         exp_env = env;
       }
   | Pexp_assertfalse ->
       re {
         exp_desc = Texp_assertfalse;
-        exp_loc = loc;
+        exp_loc = loc; exp_extra = [];
         exp_type = instance env ty_expected;
         exp_env = env;
       }
@@ -2149,25 +2217,25 @@ and type_expect ?in_function env sexp ty_expected =
       let arg = type_expect env e ty in
       re {
         exp_desc = Texp_lazy arg;
-        exp_loc = loc;
+        exp_loc = loc; exp_extra = [];
         exp_type = instance env ty_expected;
         exp_env = env;
       }
   | Pexp_object s ->
       let desc, sign, meths = !type_object env loc s in
       rue {
-        exp_desc = Texp_object (desc, sign, meths);
-        exp_loc = loc;
+        exp_desc = Texp_object (desc, (*sign,*) meths);
+        exp_loc = loc; exp_extra = [];
         exp_type = sign.cty_self;
         exp_env = env;
       }
   | Pexp_poly(sbody, sty) ->
       if !Clflags.principal then begin_def ();
-      let ty =
-        match sty with None -> repr ty_expected
+      let ty, cty =
+        match sty with None -> repr ty_expected, None
         | Some sty ->
-            let ty = Typetexp.transl_simple_type env false sty in
-            repr ty
+            let cty = Typetexp.transl_simple_type env false sty in
+            repr cty.ctyp_type, Some cty
       in
       if !Clflags.principal then begin
         end_def ();
@@ -2175,7 +2243,7 @@ and type_expect ?in_function env sexp ty_expected =
       end;
       if sty <> None then
         unify_exp_types loc env (instance env ty) (instance env ty_expected);
-      begin
+      let exp =
         match (expand_head env ty).desc with
           Tpoly (ty', []) ->
             let exp = type_expect env sbody ty' in
@@ -2199,7 +2267,8 @@ and type_expect ?in_function env sexp ty_expected =
             unify_exp env exp ty;
             re exp
         | _ -> assert false
-      end
+      in
+      re { exp with exp_desc = Texp_poly(exp, cty) }
   | Pexp_newtype(name, sbody) ->
       (* Create a fake abstract type declaration for name. *)
       let level = get_current_level () in
@@ -2262,13 +2331,18 @@ and type_expect ?in_function env sexp ty_expected =
       let (modl, tl') = !type_package env m p nl tl in
       rue {
         exp_desc = Texp_pack modl;
-        exp_loc = loc;
+        exp_loc = loc; exp_extra = [];
         exp_type = newty (Tpackage (p, nl, tl'));
         exp_env = env }
   | Pexp_open (lid, e) ->
-      type_expect (!type_open env sexp.pexp_loc lid) e ty_expected
+      let (path, newenv) = !type_open env sexp.pexp_loc lid in
+      let exp = type_expect newenv e ty_expected in
+      { exp with
+        exp_extra = (Texp_open (path, lid, newenv), loc) :: exp.exp_extra;
+      }
 
-and type_label_exp create env loc ty_expected (label, sarg) =
+and type_label_exp create env loc ty_expected
+          (label_path, lid, label, sarg) =
   (* Here also ty_expected may be at generic_level *)
   begin_def ();
   let separate = !Clflags.principal || Env.has_local_constraints env in
@@ -2315,7 +2389,7 @@ and type_label_exp create env loc ty_expected (label, sarg) =
     with Error (_, Less_general _) as e -> raise e
     | _ -> raise exn    (* In case of failure return the first error *)
   in
-  (label, {arg with exp_type = instance env arg.exp_type})
+  (label_path, lid, label, {arg with exp_type = instance env arg.exp_type})
 
 and type_argument env sarg ty_expected' ty_expected =
   (* ty_expected' may be generic *)
@@ -2365,18 +2439,23 @@ and type_argument env sarg ty_expected' ty_expected =
       (* eta-expand to avoid side effects *)
       let var_pair name ty =
         let id = Ident.create name in
-        {pat_desc = Tpat_var id; pat_type = ty;
+        {pat_desc = Tpat_var (id, mknoloc name); pat_type = ty;pat_extra=[];
          pat_loc = Location.none; pat_env = env},
-        {exp_type = ty; exp_loc = Location.none; exp_env = env; exp_desc =
-         Texp_ident(Path.Pident id, {val_type = ty; val_kind = Val_reg;
-                                     val_loc = Location.none})}
+        {exp_type = ty; exp_loc = Location.none; exp_env = env;
+         exp_extra = [];
+         exp_desc =
+         Texp_ident(Path.Pident id, mknoloc (Longident.Lident name),
+                    {val_type = ty; val_kind = Val_reg;
+                     Types.val_loc = Location.none})}
       in
       let eta_pat, eta_var = var_pair "eta" ty_arg in
       let func texp =
         { texp with exp_type = ty_fun; exp_desc =
-          Texp_function([eta_pat, {texp with exp_type = ty_res; exp_desc =
-                                   Texp_apply (texp, args@
-                                               [Some eta_var, Required])}],
+          Texp_function("", [eta_pat, {texp with exp_type = ty_res; exp_desc =
+                    Texp_apply (texp,
+                      (List.map (fun (label, exp) ->
+                          ("", label, exp)) args)@
+                                               ["", Some eta_var, Required])}],
                         Total) } in
       if warn then Location.prerr_warning texp.exp_loc
           (Warnings.Without_principality "eliminated optional argument");
@@ -2403,10 +2482,15 @@ and type_application env funct sargs =
     tvar || List.mem l ls
   in
   let ignored = ref [] in
-  let rec type_unknown_args args omitted ty_fun = function
+  let rec type_unknown_args
+      (args :
+      (Asttypes.label * (unit -> Typedtree.expression) option *
+         Typedtree.optional) list)
+    omitted ty_fun = function
       [] ->
         (List.map
-           (function None, x -> None, x | Some f, x -> Some (f ()), x)
+            (function l, None, x -> l, None, x
+                | l, Some f, x -> l, Some (f ()), x)
            (List.rev args),
          instance env (result_type omitted ty_fun))
     | (l1, sarg1) :: sargl ->
@@ -2416,7 +2500,7 @@ and type_application env funct sargs =
             Tvar _ ->
               let t1 = newvar () and t2 = newvar () in
               let not_identity = function
-                  Texp_ident(_,{val_kind=Val_prim
+                  Texp_ident(_,_,{val_kind=Val_prim
                                   {Primitive.prim_name="%identity"}}) ->
                     false
                 | _ -> true
@@ -2449,7 +2533,7 @@ and type_application env funct sargs =
             unify_exp env arg1 (type_option(newvar()));
           arg1
         in
-        type_unknown_args ((Some arg1, optional) :: args) omitted ty2 sargl
+        type_unknown_args ((l1, Some arg1, optional) :: args) omitted ty2 sargl
   in
   let ignore_labels =
     !Clflags.classic ||
@@ -2537,7 +2621,7 @@ and type_application env funct sargs =
         let omitted =
           if arg = None then (l,ty,lv) :: omitted else omitted in
         let ty_old = if sargs = [] then ty_fun else ty_old in
-        type_args ((arg,optional)::args) omitted ty_fun ty_fun0
+        type_args ((l,arg,optional)::args) omitted ty_fun ty_fun0
           ty_old sargs more_sargs
     | _ ->
         match sargs with
@@ -2549,7 +2633,7 @@ and type_application env funct sargs =
   in
   match funct.exp_desc, sargs with
     (* Special case for ignore: avoid discarding warning *)
-    Texp_ident (_, {val_kind=Val_prim{Primitive.prim_name="%ignore"}}),
+    Texp_ident (_, _, {val_kind=Val_prim{Primitive.prim_name="%ignore"}}),
     ["", sarg] ->
       let ty_arg, ty_res = filter_arrow env (instance env funct.exp_type) "" in
       let exp = type_expect env sarg ty_arg in
@@ -2560,7 +2644,7 @@ and type_application env funct sargs =
           add_delayed_check (fun () -> check_application_result env false exp)
       | _ -> ()
       end;
-      ([Some exp, Required], ty_res)
+      (["", Some exp, Required], ty_res)
   | _ ->
       let ty = funct.exp_type in
       if ignore_labels then
@@ -2569,8 +2653,8 @@ and type_application env funct sargs =
         type_args [] [] ty (instance env ty) ty sargs []
 
 and type_construct env loc lid sarg explicit_arity ty_expected =
-  let constr = Typetexp.find_constructor env loc lid in
-  Env.mark_constructor `Positive env (Longident.last lid) constr;
+  let (path,constr) = Typetexp.find_constructor env loc lid.txt in
+  Env.mark_constructor Env.Positive env (Longident.last lid.txt) constr;
   let sargs =
     match sarg with
       None -> []
@@ -2579,14 +2663,14 @@ and type_construct env loc lid sarg explicit_arity ty_expected =
     | Some se -> [se] in
   if List.length sargs <> constr.cstr_arity then
     raise(Error(loc, Constructor_arity_mismatch
-                  (lid, constr.cstr_arity, List.length sargs)));
+                  (lid.txt, constr.cstr_arity, List.length sargs)));
   let separate = !Clflags.principal || Env.has_local_constraints env in
   if separate then (begin_def (); begin_def ());
   let (ty_args, ty_res) = instance_constructor constr in
   let texp =
     re {
-      exp_desc = Texp_construct(constr, []);
-      exp_loc = loc;
+      exp_desc = Texp_construct(path, lid, constr, [],explicit_arity);
+      exp_loc = loc; exp_extra = [];
       exp_type = ty_res;
       exp_env = env } in
   if separate then begin
@@ -2609,7 +2693,8 @@ and type_construct env loc lid sarg explicit_arity ty_expected =
       (List.combine ty_args ty_args0) in
   if constr.cstr_private = Private then
     raise(Error(loc, Private_type ty_res));
-  { texp with exp_desc = Texp_construct(constr, args)}
+  { texp with
+    exp_desc = Texp_construct(path, lid, constr, args, explicit_arity) }
 
 (* Typing of statements (expressions whose values are discarded) *)
 
@@ -2645,7 +2730,7 @@ and type_cases ?in_function env ty_arg ty_res partial_flag loc caselist =
     let patterns = List.map fst caselist in
     List.exists contains_polymorphic_variant patterns,
     List.exists (contains_gadt env) patterns in
-  (* prerr_endline ( if has_gadts then "contains gadt" else "no gadt"); *)
+(*  prerr_endline ( if has_gadts then "contains gadt" else "no gadt"); *)
   let ty_arg, ty_res, env =
     if has_gadts && not !Clflags.principal then
       correct_levels ty_arg, correct_levels ty_res,
@@ -2655,18 +2740,18 @@ and type_cases ?in_function env ty_arg ty_res partial_flag loc caselist =
     if has_gadts then begin
       (* raise level for existentials *)
       begin_def ();
-      Ident.set_current_time (get_current_level ()); 
+      Ident.set_current_time (get_current_level ());
       let lev = Ident.current_time () in
       Ctype.init_def (lev+1000);                 (* up to 1000 existentials *)
       (lev, Env.add_gadt_instance_level lev env)
     end else (get_current_level (), env)
   in
-  (* if has_gadts then
-    Format.printf "lev = %d@.%a@." lev Printtyp.raw_type_expr ty_res;*)
+(*  if has_gadts then
+    Format.printf "lev = %d@.%a@." lev Printtyp.raw_type_expr ty_res; *)
   begin_def (); (* propagation of the argument *)
   let ty_arg' = newvar () in
   let pattern_force = ref [] in
-  (* Format.printf "@[%i %i@ %a@]@." lev (get_current_level())
+(*  Format.printf "@[%i %i@ %a@]@." lev (get_current_level())
     Printtyp.raw_type_expr ty_arg; *)
   let pat_env_list =
     List.map
@@ -2722,7 +2807,7 @@ and type_cases ?in_function env ty_arg ty_res partial_flag loc caselist =
           end
           else if contains_gadt env spat then correct_levels ty_res
           else ty_res in
-        (* Format.printf "@[%i %i, ty_res' =@ %a@]@." lev (get_current_level())
+(*        Format.printf "@[%i %i, ty_res' =@ %a@]@." lev (get_current_level())
           Printtyp.raw_type_expr ty_res'; *)
         let exp = type_expect ?in_function ext_env sexp ty_res' in
         (pat, {exp with exp_type = instance env ty_res'}))
@@ -2757,7 +2842,7 @@ and type_let ?(check = fun s -> Warnings.Unused_var s)
   let is_fake_let =
     match spat_sexp_list with
     | [_, {pexp_desc=Pexp_match(
-           {pexp_desc=Pexp_ident(Longident.Lident "*opt*")},_)}] ->
+           {pexp_desc=Pexp_ident({ txt = Longident.Lident "*opt*"})},_)}] ->
         true (* the fake let-declaration introduced by fun ?(x = e) -> ... *)
     | _ ->
         false
@@ -2817,8 +2902,11 @@ and type_let ?(check = fun s -> Warnings.Unused_var s)
     if is_recursive then new_env else env in
 
   let current_slot = ref None in
+  let rec_needed = ref false in
   let warn_unused =
-    Warnings.is_active (check "") || Warnings.is_active (check_strict "") in
+    Warnings.is_active (check "") || Warnings.is_active (check_strict "") ||
+    (is_recursive && (Warnings.is_active Warnings.Unused_rec_flag))
+  in
   let pat_slot_list =
     (* Algorithm to detect unused declarations in recursive bindings:
        - During type checking of the definitions, we capture the 'value_used'
@@ -2826,7 +2914,7 @@ and type_let ?(check = fun s -> Warnings.Unused_var s)
          to the current definition (!current_slot).
          In effect, this creates a dependency graph between definitions.
 
-       - After type checking the definition (!current_slot = Mone),
+       - After type checking the definition (!current_slot = None),
          when one of the bound identifier is effectively used, we trigger
          again all the events recorded in the corresponding slot.
          The effect is to traverse the transitive closure of the graph created
@@ -2844,7 +2932,7 @@ and type_let ?(check = fun s -> Warnings.Unused_var s)
             (* has one of the identifier of this pattern been used? *)
           let slot = ref [] in
           List.iter
-            (fun id ->
+            (fun (id,_) ->
               let vd = Env.find_value (Path.Pident id) new_env in
               (* note: Env.find_value does not trigger the value_used event *)
               let name = Ident.name id in
@@ -2853,14 +2941,15 @@ and type_let ?(check = fun s -> Warnings.Unused_var s)
                 add_delayed_check
                   (fun () ->
                     if not !used then
-                      Location.prerr_warning vd.val_loc
+                      Location.prerr_warning vd.Types.val_loc
                         ((if !some_used then check_strict else check) name)
                   );
               Env.set_value_used_callback
                 name vd
                 (fun () ->
                   match !current_slot with
-                  | Some slot -> slot := (name, vd) :: !slot
+                  | Some slot ->
+                      slot := (name, vd) :: !slot; rec_needed := true
                   | None ->
                       List.iter
                         (fun (name, vd) -> Env.mark_value_used name vd)
@@ -2896,6 +2985,10 @@ and type_let ?(check = fun s -> Warnings.Unused_var s)
         | _ -> type_expect exp_env sexp pat.pat_type)
       spat_sexp_list pat_slot_list in
   current_slot := None;
+  if is_recursive && not !rec_needed
+  && Warnings.is_active Warnings.Unused_rec_flag then
+    Location.prerr_warning (fst (List.hd spat_sexp_list)).ppat_loc
+      Warnings.Unused_rec_flag;
   List.iter2
     (fun pat exp -> ignore(Parmatch.check_partial pat.pat_loc [pat, exp]))
     pat_list exp_list;
@@ -2939,7 +3032,7 @@ let type_expression env sexp =
   match sexp.pexp_desc with
     Pexp_ident lid ->
       (* Special case for keeping type variables when looking-up a variable *)
-      let (path, desc) = Env.lookup_value lid env in
+      let (path, desc) = Env.lookup_value lid.txt env in
       {exp with exp_type = desc.val_type}
   | _ -> exp
 
@@ -2967,9 +3060,9 @@ let report_error ppf = function
   | Pattern_type_clash trace ->
       report_unification_error ppf trace
         (function ppf ->
-           fprintf ppf "This pattern matches values of type")
+          fprintf ppf "This pattern matches values of type")
         (function ppf ->
-           fprintf ppf "but a pattern was expected which matches values of type")
+          fprintf ppf "but a pattern was expected which matches values of type")
   | Multiply_bound_variable name ->
       fprintf ppf "Variable %s is bound several times in this matching" name
   | Orpat_vars id ->
@@ -3005,7 +3098,8 @@ let report_error ppf = function
       fprintf ppf "The record field label %a is defined several times"
               longident lid
   | Label_missing labels ->
-      let print_labels ppf = List.iter (fun lbl -> fprintf ppf "@ %s" lbl) in
+      let print_labels ppf =
+        List.iter (fun lbl -> fprintf ppf "@ %s" (Ident.name lbl)) in
       fprintf ppf "@[<hov>Some record field labels are undefined:%a@]"
         print_labels labels
   | Label_not_mutable lid ->
@@ -3117,3 +3211,4 @@ let report_error ppf = function
 
 let () =
   Env.add_delayed_check_forward := add_delayed_check
+
index 8b9ce86f02a8bf115edb344ab1dc08442e31976f..d3b6c6491203df5f78465d4a34445ddb96fd8306 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: typecore.mli 12521 2012-05-31 07:57:32Z garrigue $ *)
 
 (* Type inference for the core language *)
 
@@ -34,7 +34,7 @@ val type_expression:
         Env.t -> Parsetree.expression -> Typedtree.expression
 val type_class_arg_pattern:
         string -> Env.t -> Env.t -> label -> Parsetree.pattern ->
-        Typedtree.pattern * (Ident.t * Ident.t * type_expr) list *
+        Typedtree.pattern * (Ident.t * string loc * Ident.t * type_expr) list *
         Env.t * Env.t
 val type_self_pattern:
         string -> type_expr -> Env.t -> Env.t -> Env.t -> Parsetree.pattern ->
@@ -75,7 +75,7 @@ type error =
   | Apply_non_function of type_expr
   | Apply_wrong_label of label * type_expr
   | Label_multiply_defined of Longident.t
-  | Label_missing of string list
+  | Label_missing of Ident.t list
   | Label_not_mutable of Longident.t
   | Incomplete_format of string
   | Bad_conversion of string * int * char
@@ -111,13 +111,15 @@ val report_error: formatter -> error -> unit
 (* Forward declaration, to be filled in by Typemod.type_module *)
 val type_module: (Env.t -> Parsetree.module_expr -> Typedtree.module_expr) ref
 (* Forward declaration, to be filled in by Typemod.type_open *)
-val type_open: (Env.t -> Location.t -> Longident.t -> Env.t) ref
+val type_open: (Env.t -> Location.t -> Longident.t loc -> Path.t * Env.t) ref
 (* Forward declaration, to be filled in by Typeclass.class_structure *)
 val type_object:
   (Env.t -> Location.t -> Parsetree.class_structure ->
-   Typedtree.class_structure * class_signature * string list) ref
+   Typedtree.class_structure * Types.class_signature * string list) ref
 val type_package:
-  (Env.t -> Parsetree.module_expr -> Path.t -> Longident.t list -> type_expr list ->
-   Typedtree.module_expr * type_expr list) ref
+  (Env.t -> Parsetree.module_expr -> Path.t -> Longident.t list ->
+  type_expr list -> Typedtree.module_expr * type_expr list) ref
 
-val create_package_type: Location.t -> Env.t -> Parsetree.package_type -> type_expr
+val create_package_type : Location.t -> Env.t ->
+  Longident.t * (Longident.t * Parsetree.core_type) list ->
+  Path.t * (Longident.t * Typedtree.core_type) list * Types.type_expr
index cfcf55126b0640c478039e850838df30c7786a81..cfc3d568d02aa12f2ce76f0b52333f33815a88e1 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: typedecl.ml 12550 2012-06-04 10:02:17Z frisch $ *)
 
 (**** Typing of type definitions ****)
 
@@ -19,7 +19,6 @@ open Asttypes
 open Parsetree
 open Primitive
 open Types
-open Typedtree
 open Typetexp
 
 type error =
@@ -44,6 +43,8 @@ type error =
   | Unbound_type_var_exc of type_expr * type_expr
   | Varying_anonymous
 
+open Typedtree
+
 exception Error of Location.t * error
 
 (* Enter all declared types in the environment as abstract types *)
@@ -125,11 +126,11 @@ module StringSet =
   end)
 
 let make_params sdecl =
-  try 
-    List.map 
+  try
+    List.map
       (function
          None -> Ctype.new_global_var ~name:"_" ()
-       | Some x -> enter_type_variable true sdecl.ptype_loc x)
+       | Some x -> enter_type_variable true sdecl.ptype_loc x.txt)
       sdecl.ptype_params
   with Already_bound ->
     raise(Error(sdecl.ptype_loc, Repeated_parameter))
@@ -140,106 +141,132 @@ let transl_declaration env (name, sdecl) id =
   Ctype.begin_def ();
   let params = make_params sdecl in
   let cstrs = List.map
-      (fun (sty, sty', loc) ->
-        transl_simple_type env false sty,
-        transl_simple_type env false sty', loc)
-      sdecl.ptype_cstrs
+    (fun (sty, sty', loc) ->
+      transl_simple_type env false sty,
+      transl_simple_type env false sty', loc)
+    sdecl.ptype_cstrs
   in
-  let decl =
-    { type_params = params;
-      type_arity = List.length params;
-      type_kind =
-        begin match sdecl.ptype_kind with
-          Ptype_abstract -> Type_abstract
-        | Ptype_variant cstrs ->
-            let all_constrs = ref StringSet.empty in
-            List.iter
-              (fun (name, _, _, loc) ->
-                if StringSet.mem name !all_constrs then
-                  raise(Error(sdecl.ptype_loc, Duplicate_constructor name));
-                all_constrs := StringSet.add name !all_constrs)
-              cstrs;
-            if List.length
-               (List.filter (fun (_, args, _, _) -> args <> []) cstrs)
-               > (Config.max_tag + 1) then
-              raise(Error(sdecl.ptype_loc, Too_many_constructors));
-           let make_cstr (name, args, ret_type, loc) =
-             match ret_type with
-             | None ->
-                 (name, List.map (transl_simple_type env true) args, None)
-             | Some sty -> 
-                (* if it's a generalized constructor we must first narrow and
-                   then widen so as to not introduce any new constraints *)
-                 let z = narrow () in 
-                 reset_type_variables ();
-                 let args = List.map (transl_simple_type env false) args in 
-                 let ret_type =
-                    let ty = transl_simple_type env false sty in
-                    let p = Path.Pident id in
-                    match (Ctype.repr ty).desc with
-                      Tconstr (p', _, _) when Path.same p p' -> ty
-                    | _ -> raise(Error(sty.ptyp_loc,
-                             Constraint_failed (ty, Ctype.newconstr p params)))
-                 in
-                 widen z;
-                 (name, args, Some ret_type)
-           in
-           Type_variant (List.map make_cstr cstrs)
-           
-        | Ptype_record lbls ->
-            let all_labels = ref StringSet.empty in
-            List.iter
-              (fun (name, mut, arg, loc) ->
-                if StringSet.mem name !all_labels then
-                  raise(Error(sdecl.ptype_loc, Duplicate_label name));
-                all_labels := StringSet.add name !all_labels)
-              lbls;
-            let lbls' =
-              List.map
-                (fun (name, mut, arg, loc) ->
-                  let ty = transl_simple_type env true arg in
-                  name, mut, match ty.desc with Tpoly(t,[]) -> t | _ -> ty)
-                lbls in
-            let rep =
-              if List.for_all (fun (name, mut, arg) -> is_float env arg) lbls'
-              then Record_float
-              else Record_regular in
-            Type_record(lbls', rep)
-        end;
-      type_private = sdecl.ptype_private;
-      type_manifest =
-        begin match sdecl.ptype_manifest with
-          None -> None
-        | Some sty ->
-            let no_row = not (is_fixed_type sdecl) in
-            Some (transl_simple_type env no_row sty)
-        end;
-      type_variance = List.map (fun _ -> true, true, true) params;
-      type_newtype_level = None;
-      type_loc = sdecl.ptype_loc;
-    } in
+  let (tkind, kind) =
+    match sdecl.ptype_kind with
+        Ptype_abstract -> Ttype_abstract, Type_abstract
+      | Ptype_variant cstrs ->
+        let all_constrs = ref StringSet.empty in
+        List.iter
+          (fun ({ txt = name}, _, _, loc) ->
+            if StringSet.mem name !all_constrs then
+              raise(Error(sdecl.ptype_loc, Duplicate_constructor name));
+            all_constrs := StringSet.add name !all_constrs)
+          cstrs;
+        if List.length
+         (List.filter (fun (_, args, _, _) -> args <> []) cstrs)
+         > (Config.max_tag + 1) then
+          raise(Error(sdecl.ptype_loc, Too_many_constructors));
+       let make_cstr (lid, args, ret_type, loc) =
+         let name = Ident.create lid.txt in
+         match ret_type with
+           | None ->
+             (name, lid, List.map (transl_simple_type env true) args, None, loc)
+           | Some sty ->
+              (* if it's a generalized constructor we must first narrow and
+                 then widen so as to not introduce any new constraints *)
+             let z = narrow () in
+             reset_type_variables ();
+             let args = List.map (transl_simple_type env false) args in
+             let ret_type =
+                let cty = transl_simple_type env false sty in
+                let ty = cty.ctyp_type in
+                let p = Path.Pident id in
+                match (Ctype.repr ty).desc with
+                  Tconstr (p', _, _) when Path.same p p' -> ty
+                | _ ->
+                    raise (Error (sty.ptyp_loc, Constraint_failed
+                                    (ty, Ctype.newconstr p params)))
+             in
+             widen z;
+             (name, lid, args, Some ret_type, loc)
+       in
+        let cstrs = List.map make_cstr cstrs in
+       Ttype_variant (List.map (fun (name, lid, ctys, _, loc) ->
+          name, lid, ctys, loc
+        ) cstrs),
+        Type_variant (List.map (fun (name, name_loc, ctys, option, loc) ->
+          name, List.map (fun cty -> cty.ctyp_type) ctys, option) cstrs)
+
+      | Ptype_record lbls ->
+        let all_labels = ref StringSet.empty in
+        List.iter
+          (fun ({ txt = name }, mut, arg, loc) ->
+            if StringSet.mem name !all_labels then
+              raise(Error(sdecl.ptype_loc, Duplicate_label name));
+            all_labels := StringSet.add name !all_labels)
+          lbls;
+        let lbls = List.map (fun (name, mut, arg, loc) ->
+          let cty = transl_simple_type env true arg in
+          (Ident.create name.txt, name, mut, cty, loc)
+        ) lbls in
+        let lbls' =
+          List.map
+            (fun (name, name_loc, mut, cty, loc) ->
+              let ty = cty.ctyp_type in
+              name, mut, match ty.desc with Tpoly(t,[]) -> t | _ -> ty)
+            lbls in
+        let rep =
+          if List.for_all (fun (name, mut, arg) -> is_float env arg) lbls'
+          then Record_float
+          else Record_regular in
+        Ttype_record lbls, Type_record(lbls', rep)
+      in
+    let (tman, man) = match sdecl.ptype_manifest with
+        None -> None, None
+      | Some sty ->
+        let no_row = not (is_fixed_type sdecl) in
+        let cty = transl_simple_type env no_row sty in
+        Some cty, Some cty.ctyp_type
+    in
+    let decl =
+      { type_params = params;
+        type_arity = List.length params;
+        type_kind = kind;
+        type_private = sdecl.ptype_private;
+        type_manifest = man;
+        type_variance = List.map (fun _ -> true, true, true) params;
+        type_newtype_level = None;
+        type_loc = sdecl.ptype_loc;
+      } in
 
   (* Check constraints *)
-  List.iter
-    (fun (ty, ty', loc) ->
-      try Ctype.unify env ty ty' with Ctype.Unify tr ->
-        raise(Error(loc, Inconsistent_constraint tr)))
-    cstrs;
-  Ctype.end_def ();
+    List.iter
+      (fun (cty, cty', loc) ->
+        let ty = cty.ctyp_type in
+        let ty' = cty'.ctyp_type in
+        try Ctype.unify env ty ty' with Ctype.Unify tr ->
+          raise(Error(loc, Inconsistent_constraint tr)))
+      cstrs;
+    Ctype.end_def ();
   (* Add abstract row *)
-  if is_fixed_type sdecl then begin
-    let (p, _) =
-      try Env.lookup_type (Longident.Lident(Ident.name id ^ "#row")) env
-      with Not_found -> assert false in
-    set_fixed_row env sdecl.ptype_loc p decl
-  end;
+    if is_fixed_type sdecl then begin
+      let (p, _) =
+        try Env.lookup_type (Longident.Lident(Ident.name id ^ "#row")) env
+        with Not_found -> assert false in
+      set_fixed_row env sdecl.ptype_loc p decl
+    end;
   (* Check for cyclic abbreviations *)
-  begin match decl.type_manifest with None -> ()
-  | Some ty ->
-      if Ctype.cyclic_abbrev env id ty then
-        raise(Error(sdecl.ptype_loc, Recursive_abbrev name));
-  end;
-  (id, decl)
+    begin match decl.type_manifest with None -> ()
+      | Some ty ->
+        if Ctype.cyclic_abbrev env id ty then
+          raise(Error(sdecl.ptype_loc, Recursive_abbrev name.txt));
+    end;
+    let tdecl = {
+      typ_params = sdecl.ptype_params;
+      typ_type = decl;
+      typ_cstrs = cstrs;
+      typ_loc = sdecl.ptype_loc;
+      typ_manifest = tman;
+      typ_kind = tkind;
+      typ_variance = sdecl.ptype_variance;
+      typ_private = sdecl.ptype_private;
+    } in
+    (id, name, tdecl)
 
 (* Generalize a type declaration *)
 
@@ -303,7 +330,7 @@ let check_constraints env (_, sdecl) (_, decl) =
           let (styl, sret_type) =
             try
              let (_, sty, sret_type, _) =
-               List.find (fun (n,_,_,_) -> n = name)  pl
+               List.find (fun (n,_,_,_) -> n.txt = Ident.name name)  pl
              in (sty, sret_type)
             with Not_found -> assert false in
           List.iter2
@@ -325,11 +352,11 @@ let check_constraints env (_, sdecl) (_, decl) =
       let rec get_loc name = function
           [] -> assert false
         | (name', _, sty, _) :: tl ->
-            if name = name' then sty.ptyp_loc else get_loc name tl
+            if name = name'.txt then sty.ptyp_loc else get_loc name tl
       in
       List.iter
         (fun (name, _, ty) ->
-          check_constraints_rec env (get_loc name pl) visited ty)
+          check_constraints_rec env (get_loc (Ident.name name) pl) visited ty)
         l
   end;
   begin match decl.type_manifest with
@@ -359,7 +386,7 @@ let check_abbrev env (_, sdecl) (id, decl) =
               else if not (Ctype.equal env false args decl.type_params)
               then [Includecore.Constraint]
               else
-                Includecore.type_declarations env
+                Includecore.type_declarations ~equality:true env
                   (Path.last path)
                   decl'
                   id
@@ -417,7 +444,7 @@ let check_recursion env loc path decl to_check =
           end;
           List.iter (check_regular cpath args prev_exp) args'
       | Tpoly (ty, tl) ->
-          let (_, ty) = Ctype.instance_poly false tl ty in
+          let (_, ty) = Ctype.instance_poly ~keep_names:true false tl ty in
           check_regular cpath args prev_exp ty
       | _ ->
           Btype.iter_type_expr (check_regular cpath args prev_exp) ty
@@ -436,10 +463,12 @@ let check_recursion env loc path decl to_check =
       (* Check that recursion is regular *)
       if decl.type_params = [] then () else
       let (args, body) =
-        Ctype.instance_parameterized_type decl.type_params body in
+        Ctype.instance_parameterized_type
+          ~keep_names:true decl.type_params body in
       check_regular path args [] body
 
-let check_abbrev_recursion env id_loc_list (id, decl) =
+let check_abbrev_recursion env id_loc_list (id, _, tdecl) =
+  let decl = tdecl.typ_type in
   check_recursion env (List.assoc id id_loc_list) (Path.Pident id) decl
     (function Path.Pident id -> List.mem_assoc id id_loc_list | _ -> false)
 
@@ -520,7 +549,7 @@ let whole_type decl =
   match decl.type_kind with
     Type_variant tll ->
       Btype.newgenty
-        (Ttuple (List.map (fun (_, tl, _) -> Btype.newgenty (Ttuple tl)) tll)) 
+        (Ttuple (List.map (fun (_, tl, _) -> Btype.newgenty (Ttuple tl)) tll))
   | Type_record (ftl, _) ->
       Btype.newgenty
         (Ttuple (List.map (fun (_, _, ty) -> ty) ftl))
@@ -601,7 +630,7 @@ let compute_variance_gadt env check (required, loc as rloc) decl
             {decl with type_params = tyl; type_private = Private}
             (add_false tl)
       | _ -> assert false
-            
+
 let compute_variance_decl env check decl (required, loc as rloc) =
   if decl.type_kind = Type_abstract && decl.type_manifest = None then
     List.map (fun (c, n) -> if c || n then (c, n, n) else (true, true, true))
@@ -665,8 +694,8 @@ let init_variance (id, decl) =
 let compute_variance_decls env cldecls =
   let decls, required =
     List.fold_right
-      (fun (obj_id, obj_abbr, cl_abbr, clty, cltydef, required) (decls, req) ->
-        (obj_id, obj_abbr) :: decls, required :: req)
+      (fun (obj_id, obj_abbr, cl_abbr, clty, cltydef, ci) (decls, req) ->
+        (obj_id, obj_abbr) :: decls, (ci.ci_variance, ci.ci_loc) :: req)
       cldecls ([],[])
   in
   let variances = List.map init_variance decls in
@@ -689,20 +718,21 @@ let check_duplicates name_sdecl_list =
         List.iter
           (fun (cname, _, _, loc) ->
             try
-              let name' = Hashtbl.find constrs cname in
+              let name' = Hashtbl.find constrs cname.txt in
               Location.prerr_warning loc
                 (Warnings.Duplicate_definitions
-                   ("constructor", cname, name', name))
-            with Not_found -> Hashtbl.add constrs cname name)
+                   ("constructor", cname.txt, name', name.txt))
+            with Not_found -> Hashtbl.add constrs cname.txt name.txt)
           cl
     | Ptype_record fl ->
         List.iter
           (fun (cname, _, _, loc) ->
             try
-              let name' = Hashtbl.find labels cname in
+              let name' = Hashtbl.find labels cname.txt in
               Location.prerr_warning loc
-                (Warnings.Duplicate_definitions ("label", cname, name', name))
-            with Not_found -> Hashtbl.add labels cname name)
+                (Warnings.Duplicate_definitions
+                   ("label", cname.txt, name', name.txt))
+            with Not_found -> Hashtbl.add labels cname.txt name.txt)
           fl
     | Ptype_abstract -> ())
     name_sdecl_list
@@ -730,15 +760,15 @@ let transl_type_decl env name_sdecl_list =
   in
   let name_sdecl_list =
     List.map
-      (fun (name,sdecl) ->
-        name^"#row",
+      (fun (name, sdecl) ->
+        mkloc (name.txt ^"#row") name.loc,
         {sdecl with ptype_kind = Ptype_abstract; ptype_manifest = None})
       fixed_types
     @ name_sdecl_list
   in
   (* Create identifiers. *)
   let id_list =
-    List.map (fun (name, _) -> Ident.create name) name_sdecl_list
+    List.map (fun (name, _) -> Ident.create name.txt) name_sdecl_list
   in
   (*
      Since we've introduced fresh idents, make sure the definition
@@ -766,12 +796,19 @@ let transl_type_decl env name_sdecl_list =
         (fun old_callback ->
           match !current_slot with
           | Some slot -> slot := (name, td) :: !slot
-          | None -> List.iter (fun (name, d) -> Env.mark_type_used name d) (get_ref slot); old_callback ()
+          | None ->
+              List.iter (fun (name, d) -> Env.mark_type_used name d)
+                (get_ref slot);
+              old_callback ()
         );
       id, Some slot
   in
-  let transl_declaration name_sdecl (id, slot) = current_slot := slot; transl_declaration temp_env name_sdecl id in
-  let decls = List.map2 transl_declaration name_sdecl_list (List.map id_slots id_list) in
+  let transl_declaration name_sdecl (id, slot) =
+    current_slot := slot; transl_declaration temp_env name_sdecl id in
+  let tdecls =
+    List.map2 transl_declaration name_sdecl_list (List.map id_slots id_list) in
+  let decls =
+    List.map (fun (id, name_loc, tdecl) -> (id, tdecl.typ_type)) tdecls in
   current_slot := None;
   (* Check for duplicates *)
   check_duplicates name_sdecl_list;
@@ -793,21 +830,23 @@ let transl_type_decl env name_sdecl_list =
     List.map2 (fun id (_,sdecl) -> (id, sdecl.ptype_loc))
       id_list name_sdecl_list
   in
-  List.iter (check_abbrev_recursion newenv id_loc_list) decls;
+  List.iter (check_abbrev_recursion newenv id_loc_list) tdecls;
   (* Check that all type variable are closed *)
   List.iter2
-    (fun (_, sdecl) (id, decl) ->
+    (fun (_, sdecl) (id, _, tdecl) ->
+      let decl = tdecl.typ_type in
        match Ctype.closed_type_decl decl with
          Some ty -> raise(Error(sdecl.ptype_loc, Unbound_type_var(ty,decl)))
        | None   -> ())
-    name_sdecl_list decls;
+    name_sdecl_list tdecls;
   (* Check re-exportation *)
   List.iter2 (check_abbrev newenv) name_sdecl_list decls;
   (* Check that constraints are enforced *)
   List.iter2 (check_constraints newenv) name_sdecl_list decls;
   (* Name recursion *)
   let decls =
-    List.map2 (fun (_, sdecl) (id, decl) -> id, name_recursion sdecl id decl)
+    List.map2 (fun (_, sdecl) (id, decl) ->
+        id, name_recursion sdecl id decl)
       name_sdecl_list decls
   in
   (* Add variances to the environment *)
@@ -818,44 +857,54 @@ let transl_type_decl env name_sdecl_list =
   let final_decls, final_env =
     compute_variance_fixpoint env decls required (List.map init_variance decls)
   in
+  let final_decls = List.map2 (fun (id, name_loc, tdecl) (id2, decl) ->
+        (id, name_loc, { tdecl with typ_type = decl })
+    ) tdecls final_decls in
   (* Done *)
   (final_decls, final_env)
 
 (* Translate an exception declaration *)
 let transl_closed_type env sty =
-  let ty = transl_simple_type env true sty in
+  let cty = transl_simple_type env true sty in
+  let ty = cty.ctyp_type in
+  let ty =
   match Ctype.free_variables ty with
   | []      -> ty
   | tv :: _ -> raise (Error (sty.ptyp_loc, Unbound_type_var_exc (tv, ty)))
+  in
+  { cty with ctyp_type = ty }
 
 let transl_exception env loc excdecl =
   reset_type_variables();
   Ctype.begin_def();
-  let types = List.map (transl_closed_type env) excdecl in
+  let ttypes = List.map (transl_closed_type env) excdecl in
   Ctype.end_def();
+  let types = List.map (fun cty -> cty.ctyp_type) ttypes in
   List.iter Ctype.generalize types;
-  { exn_args = types;
-    exn_loc = loc }
+  let exn_decl = { exn_args = types; Types.exn_loc = loc } in
+  { exn_params = ttypes; exn_exn = exn_decl; Typedtree.exn_loc = loc }
 
 (* Translate an exception rebinding *)
 let transl_exn_rebind env loc lid =
-  let cdescr =
+  let (path, cdescr) =
     try
       Env.lookup_constructor lid env
     with Not_found ->
       raise(Error(loc, Unbound_exception lid)) in
-  Env.mark_constructor `Positive env (Longident.last lid) cdescr;
+  Env.mark_constructor Env.Positive env (Longident.last lid) cdescr;
   match cdescr.cstr_tag with
     Cstr_exception (path, _) ->
-      (path, {exn_args = cdescr.cstr_args; exn_loc = loc})
+      (path, {exn_args = cdescr.cstr_args; Types.exn_loc = loc})
   | _ -> raise(Error(loc, Not_an_exception lid))
 
 (* Translate a value declaration *)
 let transl_value_decl env loc valdecl =
-  let ty = Typetexp.transl_type_scheme env valdecl.pval_type in
+  let cty = Typetexp.transl_type_scheme env valdecl.pval_type in
+  let ty = cty.ctyp_type in
+  let v =
   match valdecl.pval_prim with
     [] ->
-      { val_type = ty; val_kind = Val_reg; val_loc = loc }
+      { val_type = ty; val_kind = Val_reg; Types.val_loc = loc }
   | decl ->
       let arity = Ctype.arity ty in
       if arity = 0 then
@@ -865,11 +914,16 @@ let transl_value_decl env loc valdecl =
       && prim.prim_arity > 5
       && prim.prim_native_name = ""
       then raise(Error(valdecl.pval_type.ptyp_loc, Missing_native_external));
-      { val_type = ty; val_kind = Val_prim prim; val_loc = loc }
+      { val_type = ty; val_kind = Val_prim prim; Types.val_loc = loc }
+  in
+  { val_desc = cty; val_val = v;
+    val_prim = valdecl.pval_prim;
+    val_loc = valdecl.pval_loc; }
 
 (* Translate a "with" constraint -- much simplified version of
     transl_type_decl. *)
 let transl_with_constraint env id row_path orig_decl sdecl =
+  Env.mark_type_used (Ident.name id) orig_decl;
   reset_type_variables();
   Ctype.begin_def();
   let params = make_params sdecl in
@@ -877,26 +931,32 @@ let transl_with_constraint env id row_path orig_decl sdecl =
   let arity_ok = List.length params = orig_decl.type_arity in
   if arity_ok then
     List.iter2 (Ctype.unify_var env) params orig_decl.type_params;
-  List.iter
+  let constraints = List.map
     (function (ty, ty', loc) ->
        try
-         Ctype.unify env (transl_simple_type env false ty)
-                         (transl_simple_type env false ty')
+        let cty = transl_simple_type env false ty in
+        let cty' = transl_simple_type env false ty' in
+         let ty = cty.ctyp_type in
+         let ty' = cty'.ctyp_type in
+         Ctype.unify env ty ty';
+         (cty, cty', loc)
        with Ctype.Unify tr ->
          raise(Error(loc, Inconsistent_constraint tr)))
-    sdecl.ptype_cstrs;
+    sdecl.ptype_cstrs
+  in
   let no_row = not (is_fixed_type sdecl) in
+  let (tman, man) =  match sdecl.ptype_manifest with
+      None -> None, None
+    | Some sty ->
+        let cty = transl_simple_type env no_row sty in
+        Some cty, Some cty.ctyp_type
+  in
   let decl =
     { type_params = params;
       type_arity = List.length params;
       type_kind = if arity_ok then orig_decl.type_kind else Type_abstract;
       type_private = sdecl.ptype_private;
-      type_manifest =
-        begin match sdecl.ptype_manifest with
-          None -> None
-        | Some sty ->
-            Some(transl_simple_type env no_row sty)
-        end;
+      type_manifest = man;
       type_variance = [];
       type_newtype_level = None;
       type_loc = sdecl.ptype_loc;
@@ -915,7 +975,16 @@ let transl_with_constraint env id row_path orig_decl sdecl =
        (sdecl.ptype_variance, sdecl.ptype_loc)} in
   Ctype.end_def();
   generalize_decl decl;
-  decl
+  {
+    typ_params = sdecl.ptype_params;
+    typ_type = decl;
+    typ_cstrs = constraints;
+    typ_loc = sdecl.ptype_loc;
+    typ_manifest = tman;
+    typ_kind = Ttype_abstract;
+    typ_variance = sdecl.ptype_variance;
+    typ_private = sdecl.ptype_private;
+  }
 
 (* Approximate a type declaration: just make all types abstract *)
 
@@ -940,7 +1009,7 @@ let abstract_type_decl arity =
 let approx_type_decl env name_sdecl_list =
   List.map
     (fun (name, sdecl) ->
-      (Ident.create name,
+      (Ident.create name.txt,
        abstract_type_decl (List.length sdecl.ptype_params)))
     name_sdecl_list
 
@@ -1044,12 +1113,12 @@ let report_error ppf = function
       let ty = Ctype.repr ty in
       begin match decl.type_kind, decl.type_manifest with
       | Type_variant tl, _ ->
-          explain_unbound ppf ty tl (fun (_,tl,_) -> 
-           Btype.newgenty (Ttuple tl)) 
-            "case" (fun (lab,_,_) -> lab ^ " of ") 
+          explain_unbound ppf ty tl (fun (_,tl,_) ->
+           Btype.newgenty (Ttuple tl))
+            "case" (fun (lab,_,_) -> Ident.name lab ^ " of ")
       | Type_record (tl, _), _ ->
           explain_unbound ppf ty tl (fun (_,_,t) -> t)
-            "field" (fun (lab,_,_) -> lab ^ ": ")
+            "field" (fun (lab,_,_) -> Ident.name lab ^ ": ")
       | Type_abstract, Some ty' ->
           explain_unbound_single ppf ty ty'
       | _ -> ()
index 36b0aac62d813fa6cc415e0b20e51e45f48dfdbb..98d44facd295ca910c24f6b9be27a8e5152e9e06 100644 (file)
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: typedecl.mli 12521 2012-05-31 07:57:32Z garrigue $ *)
 
 (* Typing of type definitions and primitive definitions *)
 
+open Asttypes
 open Types
 open Format
 
 val transl_type_decl:
-    Env.t -> (string * Parsetree.type_declaration) list ->
-                                  (Ident.t * type_declaration) list * Env.t
+    Env.t -> (string loc * Parsetree.type_declaration) list ->
+    (Ident.t * string Asttypes.loc * Typedtree.type_declaration) list * Env.t
+
 val transl_exception:
-    Env.t -> Location.t -> Parsetree.exception_declaration -> exception_declaration
+    Env.t -> Location.t ->
+    Parsetree.exception_declaration -> Typedtree.exception_declaration
 
 val transl_exn_rebind:
     Env.t -> Location.t -> Longident.t -> Path.t * exception_declaration
 
 val transl_value_decl:
-    Env.t -> Location.t -> Parsetree.value_description -> value_description
+    Env.t -> Location.t ->
+    Parsetree.value_description -> Typedtree.value_description
 
 val transl_with_constraint:
-    Env.t -> Ident.t -> Path.t option -> type_declaration ->
-    Parsetree.type_declaration -> type_declaration
+    Env.t -> Ident.t -> Path.t option -> Types.type_declaration ->
+    Parsetree.type_declaration -> Typedtree.type_declaration
 
 val abstract_type_decl: int -> type_declaration
 val approx_type_decl:
-    Env.t -> (string * Parsetree.type_declaration) list ->
+    Env.t -> (string loc * Parsetree.type_declaration) list ->
                                   (Ident.t * type_declaration) list
 val check_recmod_typedecl:
     Env.t -> Location.t -> Ident.t list -> Path.t -> type_declaration -> unit
@@ -46,10 +50,11 @@ val is_fixed_type : Parsetree.type_declaration -> bool
 (* for typeclass.ml *)
 val compute_variance_decls:
     Env.t ->
-    (Ident.t * type_declaration * type_declaration * class_declaration *
-       cltype_declaration * ((bool * bool) list * Location.t)) list ->
-    (type_declaration * type_declaration * class_declaration *
-       cltype_declaration) list
+    (Ident.t * Types.type_declaration * Types.type_declaration *
+     Types.class_declaration * Types.class_type_declaration *
+     'a Typedtree.class_infos) list ->
+    (Types.type_declaration * Types.type_declaration *
+     Types.class_declaration * Types.class_type_declaration) list
 
 type error =
     Repeated_parameter
index 0feca199a3e7e8d38f0df8cc1bf7cdb99233ae57..48c68c982ad6acbea413e838cd3a667bf46f5e23 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: typedtree.ml 12520 2012-05-31 07:41:37Z garrigue $ *)
 
 (* Abstract syntax tree after typing *)
 
@@ -20,65 +20,87 @@ open Types
 
 (* Value expressions for the core language *)
 
+type partial = Partial | Total
+type optional = Required | Optional
+
 type pattern =
   { pat_desc: pattern_desc;
     pat_loc: Location.t;
+    pat_extra : (pat_extra * Location.t) list;
     pat_type: type_expr;
     mutable pat_env: Env.t }
 
+and pat_extra =
+  | Tpat_constraint of core_type
+  | Tpat_type of Path.t * Longident.t loc
+  | Tpat_unpack
+
 and pattern_desc =
     Tpat_any
-  | Tpat_var of Ident.t
-  | Tpat_alias of pattern * Ident.t
+  | Tpat_var of Ident.t * string loc
+  | Tpat_alias of pattern * Ident.t * string loc
   | Tpat_constant of constant
   | Tpat_tuple of pattern list
-  | Tpat_construct of constructor_description * pattern list
+  | Tpat_construct of
+      Path.t * Longident.t loc * constructor_description * pattern list * bool
   | Tpat_variant of label * pattern option * row_desc ref
-  | Tpat_record of (label_description * pattern) list
+  | Tpat_record of
+      (Path.t * Longident.t loc * label_description * pattern) list *
+        closed_flag
   | Tpat_array of pattern list
   | Tpat_or of pattern * pattern * row_desc option
   | Tpat_lazy of pattern
 
-type partial = Partial | Total
-type optional = Required | Optional
-
-type expression =
+and expression =
   { exp_desc: expression_desc;
     exp_loc: Location.t;
+    exp_extra : (exp_extra * Location.t) list;
     exp_type: type_expr;
     exp_env: Env.t }
 
+and exp_extra =
+  | Texp_constraint of core_type option * core_type option
+  | Texp_open of Path.t * Longident.t loc * Env.t
+
 and expression_desc =
-    Texp_ident of Path.t * value_description
+    Texp_ident of Path.t * Longident.t loc * Types.value_description
   | Texp_constant of constant
   | Texp_let of rec_flag * (pattern * expression) list * expression
-  | Texp_function of (pattern * expression) list * partial
-  | Texp_apply of expression * (expression option * optional) list
+  | Texp_function of label * (pattern * expression) list * partial
+  | Texp_apply of expression * (label * expression option * optional) list
   | Texp_match of expression * (pattern * expression) list * partial
   | Texp_try of expression * (pattern * expression) list
   | Texp_tuple of expression list
-  | Texp_construct of constructor_description * expression list
+  | Texp_construct of
+      Path.t * Longident.t loc * constructor_description * expression list *
+        bool
   | Texp_variant of label * expression option
-  | Texp_record of (label_description * expression) list * expression option
-  | Texp_field of expression * label_description
-  | Texp_setfield of expression * label_description * expression
+  | Texp_record of
+      (Path.t * Longident.t loc * label_description * expression) list *
+        expression option
+  | Texp_field of expression * Path.t * Longident.t loc * label_description
+  | Texp_setfield of
+      expression * Path.t * Longident.t loc * label_description * expression
   | Texp_array of expression list
   | Texp_ifthenelse of expression * expression * expression option
   | Texp_sequence of expression * expression
   | Texp_while of expression * expression
   | Texp_for of
-      Ident.t * expression * expression * direction_flag * expression
+      Ident.t * string loc * expression * expression * direction_flag *
+        expression
   | Texp_when of expression * expression
-  | Texp_send of expression * meth
-  | Texp_new of Path.t * class_declaration
-  | Texp_instvar of Path.t * Path.t
-  | Texp_setinstvar of Path.t * Path.t * expression
-  | Texp_override of Path.t * (Path.t * expression) list
-  | Texp_letmodule of Ident.t * module_expr * expression
+  | Texp_send of expression * meth * expression option
+  | Texp_new of Path.t * Longident.t loc * Types.class_declaration
+  | Texp_instvar of Path.t * Path.t * string loc
+  | Texp_setinstvar of Path.t * Path.t * string loc * expression
+  | Texp_override of Path.t * (Path.t * string loc * expression) list
+  | Texp_letmodule of Ident.t * string loc * module_expr * expression
   | Texp_assert of expression
   | Texp_assertfalse
   | Texp_lazy of expression
-  | Texp_object of class_structure * class_signature * string list
+  | Texp_poly of expression * core_type option
+  | Texp_object of class_structure * string list
+  | Texp_newtype of string * expression
   | Texp_pack of module_expr
 
 and meth =
@@ -90,60 +112,98 @@ and meth =
 and class_expr =
   { cl_desc: class_expr_desc;
     cl_loc: Location.t;
-    cl_type: class_type;
+    cl_type: Types.class_type;
     cl_env: Env.t }
 
 and class_expr_desc =
-    Tclass_ident of Path.t
-  | Tclass_structure of class_structure
-  | Tclass_fun of pattern * (Ident.t * expression) list * class_expr * partial
-  | Tclass_apply of class_expr * (expression option * optional) list
-  | Tclass_let of rec_flag *  (pattern * expression) list *
-                  (Ident.t * expression) list * class_expr
-  | Tclass_constraint of class_expr * string list * string list * Concr.t
+    Tcl_ident of Path.t * Longident.t loc * core_type list (* Pcl_constr *)
+  | Tcl_structure of class_structure
+  | Tcl_fun of
+      label * pattern * (Ident.t * string loc * expression) list * class_expr *
+        partial
+  | Tcl_apply of class_expr * (label * expression option * optional) list
+  | Tcl_let of rec_flag *  (pattern * expression) list *
+                  (Ident.t * string loc * expression) list * class_expr
+  | Tcl_constraint of
+      class_expr * class_type option * string list * string list * Concr.t
+    (* Visible instance variables, methods and concretes methods *)
 
 and class_structure =
-  { cl_field: class_field list;
-    cl_meths: Ident.t Meths.t }
+  { cstr_pat : pattern;
+    cstr_fields: class_field list;
+    cstr_type : Types.class_signature;
+    cstr_meths: Ident.t Meths.t }
 
 and class_field =
-    Cf_inher of class_expr * (string * Ident.t) list * (string * Ident.t) list
-  | Cf_val of string * Ident.t * expression option * bool
-  | Cf_meth of string * expression
-  | Cf_init of expression
+   {
+    cf_desc : class_field_desc;
+    cf_loc : Location.t;
+  }
+
+and class_field_kind =
+  Tcfk_virtual of core_type
+| Tcfk_concrete of expression
+
+and class_field_desc =
+    Tcf_inher of
+      override_flag * class_expr * string option * (string * Ident.t) list *
+        (string * Ident.t) list
+    (* Inherited instance variables and concrete methods *)
+  | Tcf_val of
+      string * string loc * mutable_flag * Ident.t * class_field_kind * bool
+        (* None = virtual, true = override *)
+  | Tcf_meth of string * string loc * private_flag * class_field_kind * bool
+  | Tcf_constr of core_type * core_type
+(*  | Tcf_let of rec_flag * (pattern * expression) list *
+              (Ident.t * string loc * expression) list *)
+  | Tcf_init of expression
 
 (* Value expressions for the module language *)
 
 and module_expr =
   { mod_desc: module_expr_desc;
     mod_loc: Location.t;
-    mod_type: module_type;
+    mod_type: Types.module_type;
     mod_env: Env.t }
 
+and module_type_constraint =
+  Tmodtype_implicit
+| Tmodtype_explicit of module_type
+
 and module_expr_desc =
-    Tmod_ident of Path.t
+    Tmod_ident of Path.t * Longident.t loc
   | Tmod_structure of structure
-  | Tmod_functor of Ident.t * module_type * module_expr
+  | Tmod_functor of Ident.t * string loc * module_type * module_expr
   | Tmod_apply of module_expr * module_expr * module_coercion
-  | Tmod_constraint of module_expr * module_type * module_coercion
-  | Tmod_unpack of expression * module_type
+  | Tmod_constraint of
+      module_expr * Types.module_type * module_type_constraint * module_coercion
+  | Tmod_unpack of expression * Types.module_type
 
-and structure = structure_item list
+and structure = {
+  str_items : structure_item list;
+  str_type : Types.signature;
+  str_final_env : Env.t;
+}
 
 and structure_item =
+  { str_desc : structure_item_desc;
+    str_loc : Location.t;
+    str_env : Env.t
+  }
+
+and structure_item_desc =
     Tstr_eval of expression
   | Tstr_value of rec_flag * (pattern * expression) list
-  | Tstr_primitive of Ident.t * value_description
-  | Tstr_type of (Ident.t * type_declaration) list
-  | Tstr_exception of Ident.t * exception_declaration
-  | Tstr_exn_rebind of Ident.t * Path.t
-  | Tstr_module of Ident.t * module_expr
-  | Tstr_recmodule of (Ident.t * module_expr) list
-  | Tstr_modtype of Ident.t * module_type
-  | Tstr_open of Path.t
-  | Tstr_class of
-      (Ident.t * int * string list * class_expr * virtual_flag) list
-  | Tstr_cltype of (Ident.t * cltype_declaration) list
+  | Tstr_primitive of Ident.t * string loc * value_description
+  | Tstr_type of (Ident.t * string loc * type_declaration) list
+  | Tstr_exception of Ident.t * string loc * exception_declaration
+  | Tstr_exn_rebind of Ident.t * string loc * Path.t * Longident.t loc
+  | Tstr_module of Ident.t * string loc * module_expr
+  | Tstr_recmodule of (Ident.t * string loc * module_type * module_expr) list
+  | Tstr_modtype of Ident.t * string loc * module_type
+  | Tstr_open of Path.t * Longident.t loc
+  | Tstr_class of (class_declaration * string list * virtual_flag) list
+  | Tstr_class_type of (Ident.t * string loc * class_type_declaration) list
   | Tstr_include of module_expr * Ident.t list
 
 and module_coercion =
@@ -152,15 +212,181 @@ and module_coercion =
   | Tcoerce_functor of module_coercion * module_coercion
   | Tcoerce_primitive of Primitive.description
 
+and module_type =
+  { mty_desc: module_type_desc;
+    mty_type : Types.module_type;
+    mty_env : Env.t; (* BINANNOT ADDED *)
+    mty_loc: Location.t }
+
+and module_type_desc =
+    Tmty_ident of Path.t * Longident.t loc
+  | Tmty_signature of signature
+  | Tmty_functor of Ident.t * string loc * module_type * module_type
+  | Tmty_with of module_type * (Path.t * Longident.t loc * with_constraint) list
+  | Tmty_typeof of module_expr
+
+and signature = {
+  sig_items : signature_item list;
+  sig_type : Types.signature;
+  sig_final_env : Env.t;
+}
+
+and signature_item =
+  { sig_desc: signature_item_desc;
+    sig_env : Env.t; (* BINANNOT ADDED *)
+    sig_loc: Location.t }
+
+and signature_item_desc =
+    Tsig_value of Ident.t * string loc * value_description
+  | Tsig_type of (Ident.t * string loc * type_declaration) list
+  | Tsig_exception of Ident.t * string loc * exception_declaration
+  | Tsig_module of Ident.t * string loc * module_type
+  | Tsig_recmodule of (Ident.t * string loc * module_type) list
+  | Tsig_modtype of Ident.t * string loc * modtype_declaration
+  | Tsig_open of Path.t * Longident.t loc
+  | Tsig_include of module_type * Types.signature
+  | Tsig_class of class_description list
+  | Tsig_class_type of class_type_declaration list
+
+and modtype_declaration =
+    Tmodtype_abstract
+  | Tmodtype_manifest of module_type
+
+and with_constraint =
+    Twith_type of type_declaration
+  | Twith_module of Path.t * Longident.t loc
+  | Twith_typesubst of type_declaration
+  | Twith_modsubst of Path.t * Longident.t loc
+
+and core_type =
+(* mutable because of [Typeclass.declare_method] *)
+  { mutable ctyp_desc : core_type_desc;
+    mutable ctyp_type : type_expr;
+    ctyp_env : Env.t; (* BINANNOT ADDED *)
+    ctyp_loc : Location.t }
+
+and core_type_desc =
+    Ttyp_any
+  | Ttyp_var of string
+  | Ttyp_arrow of label * core_type * core_type
+  | Ttyp_tuple of core_type list
+  | Ttyp_constr of Path.t * Longident.t loc * core_type list
+  | Ttyp_object of core_field_type list
+  | Ttyp_class of Path.t * Longident.t loc * core_type list * label list
+  | Ttyp_alias of core_type * string
+  | Ttyp_variant of row_field list * bool * label list option
+  | Ttyp_poly of string list * core_type
+  | Ttyp_package of package_type
+
+and package_type = {
+  pack_name : Path.t;
+  pack_fields : (Longident.t loc * core_type) list;
+  pack_type : Types.module_type;
+  pack_txt : Longident.t loc;
+}
+
+and core_field_type =
+  { field_desc: core_field_desc;
+    field_loc: Location.t }
+
+and core_field_desc =
+    Tcfield of string * core_type
+  | Tcfield_var
+
+and row_field =
+    Ttag of label * bool * core_type list
+  | Tinherit of core_type
+
+and value_description =
+  { val_desc : core_type;
+    val_val : Types.value_description;
+    val_prim : string list;
+    val_loc : Location.t;
+    }
+
+and type_declaration =
+  { typ_params: string loc option list;
+    typ_type : Types.type_declaration;
+    typ_cstrs: (core_type * core_type * Location.t) list;
+    typ_kind: type_kind;
+    typ_private: private_flag;
+    typ_manifest: core_type option;
+    typ_variance: (bool * bool) list;
+    typ_loc: Location.t }
+
+and type_kind =
+    Ttype_abstract
+  | Ttype_variant of (Ident.t * string loc * core_type list * Location.t) list
+  | Ttype_record of
+      (Ident.t * string loc * mutable_flag * core_type * Location.t) list
+
+and exception_declaration =
+  { exn_params : core_type list;
+    exn_exn : Types.exception_declaration;
+    exn_loc : Location.t }
+
+and class_type =
+  { cltyp_desc: class_type_desc;
+    cltyp_type : Types.class_type;
+    cltyp_env : Env.t; (* BINANNOT ADDED *)
+    cltyp_loc: Location.t }
+
+and class_type_desc =
+    Tcty_constr of Path.t * Longident.t loc * core_type list
+  | Tcty_signature of class_signature
+  | Tcty_fun of label * core_type * class_type
+
+and class_signature = {
+    csig_self : core_type;
+    csig_fields : class_type_field list;
+    csig_type : Types.class_signature;
+    csig_loc : Location.t;
+  }
+
+and class_type_field = {
+    ctf_desc : class_type_field_desc;
+    ctf_loc : Location.t;
+  }
+
+and class_type_field_desc =
+    Tctf_inher of class_type
+  | Tctf_val of (string * mutable_flag * virtual_flag * core_type)
+  | Tctf_virt  of (string * private_flag * core_type)
+  | Tctf_meth  of (string * private_flag * core_type)
+  | Tctf_cstr  of (core_type * core_type)
+
+and class_declaration =
+  class_expr class_infos
+
+and class_description =
+  class_type class_infos
+
+and class_type_declaration =
+  class_type class_infos
+
+and 'a class_infos =
+  { ci_virt: virtual_flag;
+    ci_params: string loc list * Location.t;
+    ci_id_name : string loc;
+    ci_id_class: Ident.t;
+    ci_id_class_type : Ident.t;
+    ci_id_object : Ident.t;
+    ci_id_typesharp : Ident.t;
+    ci_expr: 'a;
+    ci_decl: Types.class_declaration;
+    ci_type_decl : Types.class_type_declaration;
+    ci_variance: (bool * bool) list;
+    ci_loc: Location.t }
+
 (* Auxiliary functions over the a.s.t. *)
 
 let iter_pattern_desc f = function
-  | Tpat_alias(p, id) -> f p
+  | Tpat_alias(p, _, _) -> f p
   | Tpat_tuple patl -> List.iter f patl
-  | Tpat_construct(cstr, patl) -> List.iter f patl
+  | Tpat_construct(_, _, cstr, patl, _) -> List.iter f patl
   | Tpat_variant(_, pat, _) -> may f pat
-  | Tpat_record lbl_pat_list ->
-      List.iter (fun (lbl, pat) -> f pat) lbl_pat_list
+  | Tpat_record (lbl_pat_list, _) ->
+      List.iter (fun (_, _, lbl, pat) -> f pat) lbl_pat_list
   | Tpat_array patl -> List.iter f patl
   | Tpat_or(p1, p2, _) -> f p1; f p2
   | Tpat_lazy p -> f p
@@ -170,14 +396,15 @@ let iter_pattern_desc f = function
 
 let map_pattern_desc f d =
   match d with
-  | Tpat_alias (p1, id) ->
-      Tpat_alias (f p1, id)
+  | Tpat_alias (p1, id, s) ->
+      Tpat_alias (f p1, id, s)
   | Tpat_tuple pats ->
       Tpat_tuple (List.map f pats)
-  | Tpat_record lpats ->
-      Tpat_record (List.map (fun (l,p) -> l, f p) lpats)
-  | Tpat_construct (c,pats) ->
-      Tpat_construct (c, List.map f pats)
+  | Tpat_record (lpats, closed) ->
+      Tpat_record (List.map (fun ( lid, lid_loc, l,p) -> lid, lid_loc, l, f p)
+                     lpats, closed)
+  | Tpat_construct (lid, lid_loc, c,pats, arity) ->
+      Tpat_construct (lid, lid_loc, c, List.map f pats, arity)
   | Tpat_array pats ->
       Tpat_array (List.map f pats)
   | Tpat_lazy p1 -> Tpat_lazy (f p1)
@@ -192,12 +419,13 @@ let map_pattern_desc f d =
 
 (* List the identifiers bound by a pattern or a let *)
 
-let idents = ref([]: Ident.t list)
+let idents = ref([]: (Ident.t * string loc) list)
 
 let rec bound_idents pat =
   match pat.pat_desc with
-  | Tpat_var id -> idents := id :: !idents
-  | Tpat_alias(p, id) -> bound_idents p; idents := id :: !idents
+  | Tpat_var (id,s) -> idents := (id,s) :: !idents
+  | Tpat_alias(p, id, s ) ->
+      bound_idents p; idents := (id,s) :: !idents
   | Tpat_or(p1, _, _) ->
       (* Invariant : both arguments binds the same variables *)
       bound_idents p1
@@ -206,27 +434,33 @@ let rec bound_idents pat =
 let pat_bound_idents pat =
   idents := []; bound_idents pat; let res = !idents in idents := []; res
 
-let rev_let_bound_idents pat_expr_list =
+let rev_let_bound_idents_with_loc pat_expr_list =
   idents := [];
   List.iter (fun (pat, expr) -> bound_idents pat) pat_expr_list;
   let res = !idents in idents := []; res
 
-let let_bound_idents pat_expr_list =
-  List.rev(rev_let_bound_idents pat_expr_list)
+let let_bound_idents_with_loc pat_expr_list =
+  List.rev(rev_let_bound_idents_with_loc pat_expr_list)
+
+let rev_let_bound_idents pat = List.map fst (rev_let_bound_idents_with_loc pat)
+let let_bound_idents pat = List.map  fst (let_bound_idents_with_loc pat)
 
 let alpha_var env id = List.assoc id env
 
 let rec alpha_pat env p = match p.pat_desc with
-| Tpat_var id -> (* note the ``Not_found'' case *)
+| Tpat_var (id, s) -> (* note the ``Not_found'' case *)
     {p with pat_desc =
-     try Tpat_var (alpha_var env id) with
+     try Tpat_var (alpha_var env id, s) with
      | Not_found -> Tpat_any}
-| Tpat_alias (p1, id) ->
+| Tpat_alias (p1, id, s) ->
     let new_p =  alpha_pat env p1 in
     begin try
-      {p with pat_desc = Tpat_alias (new_p, alpha_var env id)}
+      {p with pat_desc = Tpat_alias (new_p, alpha_var env id, s)}
     with
     | Not_found -> new_p
     end
 | d ->
     {p with pat_desc = map_pattern_desc (alpha_pat env) d}
+
+let mkloc = Location.mkloc
+let mknoloc = Location.mknoloc
index 0c5efa8ea848ccfeed6f97e6f161af8a8d29c69a..0a32ba2abf14dddb678990c0d35f59463f1e682a 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: typedtree.mli 12521 2012-05-31 07:57:32Z garrigue $ *)
 
 (* Abstract syntax tree after typing *)
 
@@ -19,65 +19,87 @@ open Types
 
 (* Value expressions for the core language *)
 
+type partial = Partial | Total
+type optional = Required | Optional
+
 type pattern =
   { pat_desc: pattern_desc;
     pat_loc: Location.t;
+    pat_extra : (pat_extra * Location.t) list;
     pat_type: type_expr;
     mutable pat_env: Env.t }
 
+and pat_extra =
+  | Tpat_constraint of core_type
+  | Tpat_type of Path.t * Longident.t loc
+  | Tpat_unpack
+
 and pattern_desc =
     Tpat_any
-  | Tpat_var of Ident.t
-  | Tpat_alias of pattern * Ident.t
+  | Tpat_var of Ident.t * string loc
+  | Tpat_alias of pattern * Ident.t * string loc
   | Tpat_constant of constant
   | Tpat_tuple of pattern list
-  | Tpat_construct of constructor_description * pattern list
+  | Tpat_construct of
+      Path.t * Longident.t loc * constructor_description * pattern list * bool
   | Tpat_variant of label * pattern option * row_desc ref
-  | Tpat_record of (label_description * pattern) list
+  | Tpat_record of
+      (Path.t * Longident.t loc * label_description * pattern) list *
+        closed_flag
   | Tpat_array of pattern list
   | Tpat_or of pattern * pattern * row_desc option
   | Tpat_lazy of pattern
 
-type partial = Partial | Total
-type optional = Required | Optional
-
-type expression =
+and expression =
   { exp_desc: expression_desc;
     exp_loc: Location.t;
+    exp_extra : (exp_extra * Location.t) list;
     exp_type: type_expr;
     exp_env: Env.t }
 
+and exp_extra =
+  | Texp_constraint of core_type option * core_type option
+  | Texp_open of Path.t * Longident.t loc * Env.t
+
 and expression_desc =
-    Texp_ident of Path.t * value_description
+    Texp_ident of Path.t * Longident.t loc * Types.value_description
   | Texp_constant of constant
   | Texp_let of rec_flag * (pattern * expression) list * expression
-  | Texp_function of (pattern * expression) list * partial
-  | Texp_apply of expression * (expression option * optional) list
+  | Texp_function of label * (pattern * expression) list * partial
+  | Texp_apply of expression * (label * expression option * optional) list
   | Texp_match of expression * (pattern * expression) list * partial
   | Texp_try of expression * (pattern * expression) list
   | Texp_tuple of expression list
-  | Texp_construct of constructor_description * expression list
+  | Texp_construct of
+      Path.t * Longident.t loc * constructor_description * expression list *
+        bool
   | Texp_variant of label * expression option
-  | Texp_record of (label_description * expression) list * expression option
-  | Texp_field of expression * label_description
-  | Texp_setfield of expression * label_description * expression
+  | Texp_record of
+      (Path.t * Longident.t loc * label_description * expression) list *
+        expression option
+  | Texp_field of expression * Path.t * Longident.t loc * label_description
+  | Texp_setfield of
+      expression * Path.t * Longident.t loc * label_description * expression
   | Texp_array of expression list
   | Texp_ifthenelse of expression * expression * expression option
   | Texp_sequence of expression * expression
   | Texp_while of expression * expression
   | Texp_for of
-      Ident.t * expression * expression * direction_flag * expression
+      Ident.t * string loc * expression * expression * direction_flag *
+        expression
   | Texp_when of expression * expression
-  | Texp_send of expression * meth
-  | Texp_new of Path.t * class_declaration
-  | Texp_instvar of Path.t * Path.t
-  | Texp_setinstvar of Path.t * Path.t * expression
-  | Texp_override of Path.t * (Path.t * expression) list
-  | Texp_letmodule of Ident.t * module_expr * expression
+  | Texp_send of expression * meth * expression option
+  | Texp_new of Path.t * Longident.t loc * Types.class_declaration
+  | Texp_instvar of Path.t * Path.t * string loc
+  | Texp_setinstvar of Path.t * Path.t * string loc * expression
+  | Texp_override of Path.t * (Path.t * string loc * expression) list
+  | Texp_letmodule of Ident.t * string loc * module_expr * expression
   | Texp_assert of expression
   | Texp_assertfalse
   | Texp_lazy of expression
-  | Texp_object of class_structure * class_signature * string list
+  | Texp_poly of expression * core_type option
+  | Texp_object of class_structure * string list
+  | Texp_newtype of string * expression
   | Texp_pack of module_expr
 
 and meth =
@@ -89,63 +111,98 @@ and meth =
 and class_expr =
   { cl_desc: class_expr_desc;
     cl_loc: Location.t;
-    cl_type: class_type;
+    cl_type: Types.class_type;
     cl_env: Env.t }
 
 and class_expr_desc =
-    Tclass_ident of Path.t
-  | Tclass_structure of class_structure
-  | Tclass_fun of pattern * (Ident.t * expression) list * class_expr * partial
-  | Tclass_apply of class_expr * (expression option * optional) list
-  | Tclass_let of rec_flag *  (pattern * expression) list *
-                  (Ident.t * expression) list * class_expr
-  | Tclass_constraint of class_expr * string list * string list * Concr.t
+    Tcl_ident of Path.t * Longident.t loc * core_type list
+  | Tcl_structure of class_structure
+  | Tcl_fun of
+      label * pattern * (Ident.t * string loc * expression) list * class_expr *
+        partial
+  | Tcl_apply of class_expr * (label * expression option * optional) list
+  | Tcl_let of rec_flag *  (pattern * expression) list *
+                  (Ident.t * string loc * expression) list * class_expr
+  | Tcl_constraint of
+      class_expr * class_type option * string list * string list * Concr.t
     (* Visible instance variables, methods and concretes methods *)
 
 and class_structure =
-  { cl_field: class_field list;
-    cl_meths: Ident.t Meths.t }
+  { cstr_pat : pattern;
+    cstr_fields: class_field list;
+    cstr_type : Types.class_signature;
+    cstr_meths: Ident.t Meths.t }
 
 and class_field =
-    Cf_inher of class_expr * (string * Ident.t) list * (string * Ident.t) list
+   {
+    cf_desc : class_field_desc;
+    cf_loc : Location.t;
+  }
+
+and class_field_kind =
+  Tcfk_virtual of core_type
+| Tcfk_concrete of expression
+
+and class_field_desc =
+    Tcf_inher of
+      override_flag * class_expr * string option * (string * Ident.t) list *
+        (string * Ident.t) list
     (* Inherited instance variables and concrete methods *)
-  | Cf_val of string * Ident.t * expression option * bool
+  | Tcf_val of
+      string * string loc * mutable_flag * Ident.t * class_field_kind * bool
         (* None = virtual, true = override *)
-  | Cf_meth of string * expression
-  | Cf_init of expression
+  | Tcf_meth of string * string loc * private_flag * class_field_kind * bool
+  | Tcf_constr of core_type * core_type
+(*  | Tcf_let of rec_flag * (pattern * expression) list *
+              (Ident.t * string loc * expression) list *)
+  | Tcf_init of expression
 
 (* Value expressions for the module language *)
 
 and module_expr =
   { mod_desc: module_expr_desc;
     mod_loc: Location.t;
-    mod_type: module_type;
+    mod_type: Types.module_type;
     mod_env: Env.t }
 
+and module_type_constraint =
+  Tmodtype_implicit
+| Tmodtype_explicit of module_type
+
 and module_expr_desc =
-    Tmod_ident of Path.t
+    Tmod_ident of Path.t * Longident.t loc
   | Tmod_structure of structure
-  | Tmod_functor of Ident.t * module_type * module_expr
+  | Tmod_functor of Ident.t * string loc * module_type * module_expr
   | Tmod_apply of module_expr * module_expr * module_coercion
-  | Tmod_constraint of module_expr * module_type * module_coercion
-  | Tmod_unpack of expression * module_type
+  | Tmod_constraint of
+      module_expr * Types.module_type * module_type_constraint * module_coercion
+  | Tmod_unpack of expression * Types.module_type
 
-and structure = structure_item list
+and structure = {
+  str_items : structure_item list;
+  str_type : Types.signature;
+  str_final_env : Env.t;
+}
 
 and structure_item =
+  { str_desc : structure_item_desc;
+    str_loc : Location.t;
+    str_env : Env.t
+  }
+
+and structure_item_desc =
     Tstr_eval of expression
   | Tstr_value of rec_flag * (pattern * expression) list
-  | Tstr_primitive of Ident.t * value_description
-  | Tstr_type of (Ident.t * type_declaration) list
-  | Tstr_exception of Ident.t * exception_declaration
-  | Tstr_exn_rebind of Ident.t * Path.t
-  | Tstr_module of Ident.t * module_expr
-  | Tstr_recmodule of (Ident.t * module_expr) list
-  | Tstr_modtype of Ident.t * module_type
-  | Tstr_open of Path.t
-  | Tstr_class of
-      (Ident.t * int * string list * class_expr * virtual_flag) list
-  | Tstr_cltype of (Ident.t * cltype_declaration) list
+  | Tstr_primitive of Ident.t * string loc * value_description
+  | Tstr_type of (Ident.t * string loc * type_declaration) list
+  | Tstr_exception of Ident.t * string loc * exception_declaration
+  | Tstr_exn_rebind of Ident.t * string loc * Path.t * Longident.t loc
+  | Tstr_module of Ident.t * string loc * module_expr
+  | Tstr_recmodule of (Ident.t * string loc * module_type * module_expr) list
+  | Tstr_modtype of Ident.t * string loc * module_type
+  | Tstr_open of Path.t * Longident.t loc
+  | Tstr_class of (class_declaration * string list * virtual_flag) list
+  | Tstr_class_type of (Ident.t * string loc * class_type_declaration) list
   | Tstr_include of module_expr * Ident.t list
 
 and module_coercion =
@@ -154,14 +211,190 @@ and module_coercion =
   | Tcoerce_functor of module_coercion * module_coercion
   | Tcoerce_primitive of Primitive.description
 
+and module_type =
+  { mty_desc: module_type_desc;
+    mty_type : Types.module_type;
+    mty_env : Env.t;
+    mty_loc: Location.t }
+
+and module_type_desc =
+    Tmty_ident of Path.t * Longident.t loc
+  | Tmty_signature of signature
+  | Tmty_functor of Ident.t * string loc * module_type * module_type
+  | Tmty_with of module_type * (Path.t * Longident.t loc * with_constraint) list
+  | Tmty_typeof of module_expr
+
+and signature = {
+  sig_items : signature_item list;
+  sig_type : Types.signature;
+  sig_final_env : Env.t;
+}
+
+and signature_item =
+  { sig_desc: signature_item_desc;
+    sig_env : Env.t; (* BINANNOT ADDED *)
+    sig_loc: Location.t }
+
+and signature_item_desc =
+    Tsig_value of Ident.t * string loc * value_description
+  | Tsig_type of (Ident.t * string loc * type_declaration) list
+  | Tsig_exception of Ident.t * string loc * exception_declaration
+  | Tsig_module of Ident.t * string loc * module_type
+  | Tsig_recmodule of (Ident.t * string loc * module_type) list
+  | Tsig_modtype of Ident.t * string loc * modtype_declaration
+  | Tsig_open of Path.t * Longident.t loc
+  | Tsig_include of module_type * Types.signature
+  | Tsig_class of class_description list
+  | Tsig_class_type of class_type_declaration list
+
+and modtype_declaration =
+    Tmodtype_abstract
+  | Tmodtype_manifest of module_type
+
+and with_constraint =
+    Twith_type of type_declaration
+  | Twith_module of Path.t * Longident.t loc
+  | Twith_typesubst of type_declaration
+  | Twith_modsubst of Path.t * Longident.t loc
+
+and core_type =
+(* mutable because of [Typeclass.declare_method] *)
+  { mutable ctyp_desc : core_type_desc;
+    mutable ctyp_type : type_expr;
+    ctyp_env : Env.t; (* BINANNOT ADDED *)
+    ctyp_loc : Location.t }
+
+and core_type_desc =
+    Ttyp_any
+  | Ttyp_var of string
+  | Ttyp_arrow of label * core_type * core_type
+  | Ttyp_tuple of core_type list
+  | Ttyp_constr of Path.t * Longident.t loc * core_type list
+  | Ttyp_object of core_field_type list
+  | Ttyp_class of Path.t * Longident.t loc * core_type list * label list
+  | Ttyp_alias of core_type * string
+  | Ttyp_variant of row_field list * bool * label list option
+  | Ttyp_poly of string list * core_type
+  | Ttyp_package of package_type
+
+and package_type = {
+  pack_name : Path.t;
+  pack_fields : (Longident.t loc * core_type) list;
+  pack_type : Types.module_type;
+  pack_txt : Longident.t loc;
+}
+
+and core_field_type =
+  { field_desc: core_field_desc;
+    field_loc: Location.t }
+
+and core_field_desc =
+    Tcfield of string * core_type
+  | Tcfield_var
+
+and row_field =
+    Ttag of label * bool * core_type list
+  | Tinherit of core_type
+
+and value_description =
+  { val_desc : core_type;
+    val_val : Types.value_description;
+    val_prim : string list;
+    val_loc : Location.t;
+    }
+
+and type_declaration =
+  { typ_params: string loc option list;
+    typ_type : Types.type_declaration;
+    typ_cstrs: (core_type * core_type * Location.t) list;
+    typ_kind: type_kind;
+    typ_private: private_flag;
+    typ_manifest: core_type option;
+    typ_variance: (bool * bool) list;
+    typ_loc: Location.t }
+
+and type_kind =
+    Ttype_abstract
+  | Ttype_variant of (Ident.t * string loc * core_type list * Location.t) list
+  | Ttype_record of
+      (Ident.t * string loc * mutable_flag * core_type * Location.t) list
+
+and exception_declaration =
+  { exn_params : core_type list;
+    exn_exn : Types.exception_declaration;
+    exn_loc : Location.t }
+
+and class_type =
+  { cltyp_desc: class_type_desc;
+    cltyp_type : Types.class_type;
+    cltyp_env : Env.t; (* BINANNOT ADDED *)
+    cltyp_loc: Location.t }
+
+and class_type_desc =
+    Tcty_constr of Path.t * Longident.t loc * core_type list
+  | Tcty_signature of class_signature
+  | Tcty_fun of label * core_type * class_type
+
+and class_signature = {
+    csig_self : core_type;
+    csig_fields : class_type_field list;
+    csig_type : Types.class_signature;
+    csig_loc : Location.t;
+  }
+
+and class_type_field = {
+    ctf_desc : class_type_field_desc;
+    ctf_loc : Location.t;
+  }
+
+and class_type_field_desc =
+    Tctf_inher of class_type
+  | Tctf_val of (string * mutable_flag * virtual_flag * core_type)
+  | Tctf_virt  of (string * private_flag * core_type)
+  | Tctf_meth  of (string * private_flag * core_type)
+  | Tctf_cstr  of (core_type * core_type)
+
+and class_declaration =
+  class_expr class_infos
+
+and class_description =
+  class_type class_infos
+
+and class_type_declaration =
+  class_type class_infos
+
+and 'a class_infos =
+  { ci_virt: virtual_flag;
+    ci_params: string loc list * Location.t;
+    ci_id_name : string loc;
+    ci_id_class: Ident.t;
+    ci_id_class_type : Ident.t;
+    ci_id_object : Ident.t;
+    ci_id_typesharp : Ident.t;
+    ci_expr: 'a;
+    ci_decl: Types.class_declaration;
+    ci_type_decl : Types.class_type_declaration;
+    ci_variance: (bool * bool) list;
+    ci_loc: Location.t }
+
 (* Auxiliary functions over the a.s.t. *)
 
-val iter_pattern_desc : (pattern -> unit) -> pattern_desc -> unit
-val map_pattern_desc : (pattern -> pattern) -> pattern_desc -> pattern_desc
+val iter_pattern_desc: (pattern -> unit) -> pattern_desc -> unit
+val map_pattern_desc: (pattern -> pattern) -> pattern_desc -> pattern_desc
 
 val let_bound_idents: (pattern * expression) list -> Ident.t list
 val rev_let_bound_idents: (pattern * expression) list -> Ident.t list
 val pat_bound_idents: pattern -> Ident.t list
 
+val let_bound_idents_with_loc:
+    (pattern * expression) list -> (Ident.t * string loc) list
+val rev_let_bound_idents_with_loc:
+    (pattern * expression) list -> (Ident.t * string loc) list
+
 (* Alpha conversion of patterns *)
-val alpha_pat : (Ident.t * Ident.t) list -> pattern -> pattern
+val alpha_pat: (Ident.t * Ident.t) list -> pattern -> pattern
+
+val mknoloc: 'a -> 'a Asttypes.loc
+val mkloc: 'a -> Location.t -> 'a Asttypes.loc
+
+val pat_bound_idents: pattern -> (Ident.t * string Asttypes.loc) list
index 0a3f24e282d3a7a26170ad919e7dbbb004b4b8b6..b04d51596b2a3b1aa2d028471fc7dda5488d32cd 100644 (file)
@@ -10,9 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
-
-(* Type-checking of the module language *)
+(* $Id: typemod.ml 12542 2012-06-01 14:06:31Z frisch $ *)
 
 open Misc
 open Longident
@@ -20,7 +18,6 @@ open Path
 open Asttypes
 open Parsetree
 open Types
-open Typedtree
 open Format
 
 type error =
@@ -45,24 +42,34 @@ type error =
 
 exception Error of Location.t * error
 
+open Typedtree
+
+let fst3 (x,_,_) = x
+
+let rec path_concat head p =
+  match p with
+    Pident tail -> Pdot (Pident head, Ident.name tail, 0)
+  | Pdot (pre, s, pos) -> Pdot (path_concat head pre, s, pos)
+  | Papply _ -> assert false
+
 (* Extract a signature from a module type *)
 
 let extract_sig env loc mty =
   match Mtype.scrape env mty with
-    Tmty_signature sg -> sg
+    Mty_signature sg -> sg
   | _ -> raise(Error(loc, Signature_expected))
 
 let extract_sig_open env loc mty =
   match Mtype.scrape env mty with
-    Tmty_signature sg -> sg
+    Mty_signature sg -> sg
   | _ -> raise(Error(loc, Structure_expected mty))
 
 (* Compute the environment after opening a module *)
 
-let type_open env loc lid =
-  let (path, mty) = Typetexp.find_module env loc lid in
+let type_open ?toplevel env loc lid =
+  let (path, mty) = Typetexp.find_module env loc lid.txt in
   let sg = extract_sig_open env loc mty in
-  Env.open_signature ~loc path sg env
+  path, Env.open_signature ~loc ?toplevel path sg env
 
 (* Record a module type *)
 let rm node =
@@ -70,14 +77,15 @@ let rm node =
   node
 
 (* Forward declaration, to be filled in by type_module_type_of *)
-let type_module_type_of_fwd 
-  : (Env.t -> Parsetree.module_expr -> module_type) ref
+let type_module_type_of_fwd :
+    (Env.t -> Parsetree.module_expr ->
+      Typedtree.module_expr * Types.module_type) ref
   = ref (fun env m -> assert false)
 
 (* Merge one "with" constraint in a signature *)
 
 let rec add_rec_types env = function
-    Tsig_type(id, decl, Trec_next) :: rem ->
+    Sig_type(id, decl, Trec_next) :: rem ->
       add_rec_types (Env.add_type id decl env) rem
   | _ -> env
 
@@ -97,20 +105,24 @@ let wrap_param s = {ptyp_desc=Ptyp_var s; ptyp_loc=Location.none}
 let make_next_first rs rem =
   if rs = Trec_first then
     match rem with
-      Tsig_type (id, decl, Trec_next) :: rem ->
-        Tsig_type (id, decl, Trec_first) :: rem
-    | Tsig_module (id, mty, Trec_next) :: rem ->
-        Tsig_module (id, mty, Trec_first) :: rem
+      Sig_type (id, decl, Trec_next) :: rem ->
+        Sig_type (id, decl, Trec_first) :: rem
+    | Sig_module (id, mty, Trec_next) :: rem ->
+        Sig_module (id, mty, Trec_first) :: rem
     | _ -> rem
   else rem
 
-let merge_constraint initial_env loc sg lid constr =
+let sig_item desc typ env loc = {
+  Typedtree.sig_desc = desc; sig_loc = loc; sig_env = env
+}
+
+let merge_constraint initial_env loc  sg lid constr =
   let real_id = ref None in
   let rec merge env sg namelist row_id =
     match (sg, namelist, constr) with
       ([], _, _) ->
-        raise(Error(loc, With_no_component lid))
-    | (Tsig_type(id, decl, rs) :: rem, [s],
+        raise(Error(loc, With_no_component lid.txt))
+    | (Sig_type(id, decl, rs) :: rem, [s],
        Pwith_type ({ptype_kind = Ptype_abstract} as sdecl))
       when Ident.name id = s && Typedecl.is_fixed_type sdecl ->
         let decl_row =
@@ -127,51 +139,64 @@ let merge_constraint initial_env loc sg lid constr =
            type_newtype_level = None }
         and id_row = Ident.create (s^"#row") in
         let initial_env = Env.add_type id_row decl_row initial_env in
-        let newdecl = Typedecl.transl_with_constraint
+        let tdecl = Typedecl.transl_with_constraint
                         initial_env id (Some(Pident id_row)) decl sdecl in
+        let newdecl = tdecl.typ_type in
         check_type_decl env id row_id newdecl decl rs rem;
         let decl_row = {decl_row with type_params = newdecl.type_params} in
         let rs' = if rs = Trec_first then Trec_not else rs in
-        Tsig_type(id_row, decl_row, rs') :: Tsig_type(id, newdecl, rs) :: rem
-    | (Tsig_type(id, decl, rs) :: rem, [s], Pwith_type sdecl)
+        (Pident id, lid, Twith_type tdecl),
+        Sig_type(id_row, decl_row, rs') :: Sig_type(id, newdecl, rs) :: rem
+    | (Sig_type(id, decl, rs) :: rem , [s], Pwith_type sdecl)
       when Ident.name id = s ->
-        let newdecl =
+        let tdecl =
           Typedecl.transl_with_constraint initial_env id None decl sdecl in
+        let newdecl = tdecl.typ_type in
         check_type_decl env id row_id newdecl decl rs rem;
-        Tsig_type(id, newdecl, rs) :: rem
-    | (Tsig_type(id, decl, rs) :: rem, [s], (Pwith_type _ | Pwith_typesubst _))
+        (Pident id, lid, Twith_type tdecl), Sig_type(id, newdecl, rs) :: rem
+    | (Sig_type(id, decl, rs) :: rem, [s], (Pwith_type _ | Pwith_typesubst _))
       when Ident.name id = s ^ "#row" ->
         merge env rem namelist (Some id)
-    | (Tsig_type(id, decl, rs) :: rem, [s], Pwith_typesubst sdecl)
+    | (Sig_type(id, decl, rs) :: rem, [s], Pwith_typesubst sdecl)
       when Ident.name id = s ->
         (* Check as for a normal with constraint, but discard definition *)
-        let newdecl =
+        let tdecl =
           Typedecl.transl_with_constraint initial_env id None decl sdecl in
+        let newdecl = tdecl.typ_type in
         check_type_decl env id row_id newdecl decl rs rem;
         real_id := Some id;
+        (Pident id, lid, Twith_typesubst tdecl),
         make_next_first rs rem
-    | (Tsig_module(id, mty, rs) :: rem, [s], Pwith_module lid)
+    | (Sig_module(id, mty, rs) :: rem, [s], Pwith_module (lid))
       when Ident.name id = s ->
-        let (path, mty') = Typetexp.find_module initial_env loc lid in
+        let (path, mty') = Typetexp.find_module initial_env loc lid.txt in
         let newmty = Mtype.strengthen env mty' path in
         ignore(Includemod.modtypes env newmty mty);
-        Tsig_module(id, newmty, rs) :: rem
-    | (Tsig_module(id, mty, rs) :: rem, [s], Pwith_modsubst lid)
+        (Pident id, lid, Twith_module (path, lid)),
+        Sig_module(id, newmty, rs) :: rem
+    | (Sig_module(id, mty, rs) :: rem, [s], Pwith_modsubst (lid))
       when Ident.name id = s ->
-        let (path, mty') = Typetexp.find_module initial_env loc lid in
+        let (path, mty') = Typetexp.find_module initial_env loc lid.txt in
         let newmty = Mtype.strengthen env mty' path in
         ignore(Includemod.modtypes env newmty mty);
         real_id := Some id;
+        (Pident id, lid, Twith_modsubst (path, lid)),
         make_next_first rs rem
-    | (Tsig_module(id, mty, rs) :: rem, s :: namelist, _)
+    | (Sig_module(id, mty, rs) :: rem, s :: namelist, _)
       when Ident.name id = s ->
-        let newsg = merge env (extract_sig env loc mty) namelist None in
-        Tsig_module(id, Tmty_signature newsg, rs) :: rem
+        let ((path, path_loc, tcstr), newsg) =
+          merge env (extract_sig env loc mty) namelist None in
+        (path_concat id path, lid, tcstr),
+        Sig_module(id, Mty_signature newsg, rs) :: rem
     | (item :: rem, _, _) ->
-        item :: merge (Env.add_item item env) rem namelist row_id in
+        let (cstr, items) = merge (Env.add_item item env) rem namelist row_id
+        in
+        cstr, item :: items
+  in
   try
-    let names = Longident.flatten lid in
-    let sg = merge initial_env sg names None in
+    let names = Longident.flatten lid.txt in
+    let (tcstr, sg) = merge initial_env sg names None in
+    let sg =
     match names, constr with
       [s], Pwith_typesubst sdecl ->
         let id =
@@ -183,27 +208,32 @@ let merge_constraint initial_env loc sg lid constr =
                 List.map
                   (function {ptyp_desc=Ptyp_var s} -> s | _ -> raise Exit)
                   stl in
-              if List.map (fun x -> Some x) params <> sdecl.ptype_params
-             then raise Exit;
+              List.iter2 (fun x ox ->
+                match ox with
+                    Some y when x = y.txt -> ()
+                  | _ -> raise Exit
+              ) params sdecl.ptype_params;
               lid
           | _ -> raise Exit
           with Exit -> raise (Error (sdecl.ptype_loc, With_need_typeconstr))
         in
         let (path, _) =
-          try Env.lookup_type lid initial_env with Not_found -> assert false
+          try Env.lookup_type lid.txt initial_env with Not_found -> assert false
         in
         let sub = Subst.add_type id path Subst.identity in
         Subst.signature sub sg
-    | [s], Pwith_modsubst lid ->
+    | [s], Pwith_modsubst (lid) ->
         let id =
           match !real_id with None -> assert false | Some id -> id in
-        let (path, _) = Typetexp.find_module initial_env loc lid in
+        let (path, _) = Typetexp.find_module initial_env loc lid.txt in
         let sub = Subst.add_module id path Subst.identity in
         Subst.signature sub sg
     | _ ->
-        sg
+          sg
+    in
+    (tcstr, sg)
   with Includemod.Error explanation ->
-    raise(Error(loc, With_mismatch(lid, explanation)))
+    raise(Error(loc, With_mismatch(lid.txt, explanation)))
 
 (* Add recursion flags on declarations arising from a mutually recursive
    block. *)
@@ -219,6 +249,12 @@ let rec map_rec' fn decls rem =
       fn Trec_not d1 :: map_rec' fn dl rem
   | _ -> map_rec fn decls rem
 
+let rec map_rec'' fn decls rem =
+  match decls with
+  | (id, _,_ as d1) :: dl when Btype.is_row_name (Ident.name id) ->
+      fn Trec_not d1 :: map_rec'' fn dl rem
+  | _ -> map_rec fn decls rem
+
 (* Auxiliary for translating recursively-defined module types.
    Return a module type that approximates the shape of the given module
    type AST.  Retain only module, type, and module type
@@ -228,19 +264,20 @@ let rec map_rec' fn decls rem =
 let rec approx_modtype env smty =
   match smty.pmty_desc with
     Pmty_ident lid ->
-      let (path, info) = Typetexp.find_modtype env smty.pmty_loc lid in
-      Tmty_ident path
+      let (path, info) = Typetexp.find_modtype env smty.pmty_loc lid.txt in
+      Mty_ident path
   | Pmty_signature ssg ->
-      Tmty_signature(approx_sig env ssg)
+      Mty_signature(approx_sig env ssg)
   | Pmty_functor(param, sarg, sres) ->
       let arg = approx_modtype env sarg in
-      let (id, newenv) = Env.enter_module param arg env in
+      let (id, newenv) = Env.enter_module param.txt arg env in
       let res = approx_modtype newenv sres in
-      Tmty_functor(id, arg, res)
+      Mty_functor(id, arg, res)
   | Pmty_with(sbody, constraints) ->
       approx_modtype env sbody
   | Pmty_typeof smod ->
-      !type_module_type_of_fwd env smod
+      let (_, mty) = !type_module_type_of_fwd env smod in
+      mty
 
 and approx_sig env ssg =
   match ssg with
@@ -250,28 +287,29 @@ and approx_sig env ssg =
       | Psig_type sdecls ->
           let decls = Typedecl.approx_type_decl env sdecls in
           let rem = approx_sig env srem in
-          map_rec' (fun rs (id, info) -> Tsig_type(id, info, rs)) decls rem
+          map_rec' (fun rs (id, info) -> Sig_type(id, info, rs)) decls rem
       | Psig_module(name, smty) ->
           let mty = approx_modtype env smty in
-          let (id, newenv) = Env.enter_module name mty env in
-          Tsig_module(id, mty, Trec_not) :: approx_sig newenv srem
+          let (id, newenv) = Env.enter_module name.txt mty env in
+          Sig_module(id, mty, Trec_not) :: approx_sig newenv srem
       | Psig_recmodule sdecls ->
           let decls =
             List.map
               (fun (name, smty) ->
-                (Ident.create name, approx_modtype env smty))
+                (Ident.create name.txt, approx_modtype env smty))
               sdecls in
           let newenv =
             List.fold_left (fun env (id, mty) -> Env.add_module id mty env)
             env decls in
-          map_rec (fun rs (id, mty) -> Tsig_module(id, mty, rs)) decls
+          map_rec (fun rs (id, mty) -> Sig_module(id, mty, rs)) decls
                   (approx_sig newenv srem)
       | Psig_modtype(name, sinfo) ->
           let info = approx_modtype_info env sinfo in
-          let (id, newenv) = Env.enter_modtype name info env in
-          Tsig_modtype(id, info) :: approx_sig newenv srem
+          let (id, newenv) = Env.enter_modtype name.txt info env in
+          Sig_modtype(id, info) :: approx_sig newenv srem
       | Psig_open lid ->
-          approx_sig (type_open env item.psig_loc lid) srem
+          let (path, mty) = type_open env item.psig_loc lid in
+          approx_sig mty srem
       | Psig_include smty ->
           let mty = approx_modtype env smty in
           let sg = Subst.signature Subst.identity
@@ -283,10 +321,10 @@ and approx_sig env ssg =
           let rem = approx_sig env srem in
           List.flatten
             (map_rec
-              (fun rs (i1, d1, i2, d2, i3, d3) ->
-                [Tsig_cltype(i1, d1, rs);
-                 Tsig_type(i2, d2, rs);
-                 Tsig_type(i3, d3, rs)])
+              (fun rs (i1, _, d1, i2, d2, i3, d3, _) ->
+                [Sig_class_type(i1, d1, rs);
+                 Sig_type(i2, d2, rs);
+                 Sig_type(i3, d3, rs)])
               decls [rem])
       | _ ->
           approx_sig env srem
@@ -294,17 +332,18 @@ and approx_sig env ssg =
 and approx_modtype_info env sinfo =
   match sinfo with
     Pmodtype_abstract ->
-      Tmodtype_abstract
+      Modtype_abstract
   | Pmodtype_manifest smty ->
-      Tmodtype_manifest(approx_modtype env smty)
+      Modtype_manifest(approx_modtype env smty)
 
 (* Additional validity checks on type definitions arising from
    recursive modules *)
 
 let check_recmod_typedecls env sdecls decls =
-  let recmod_ids = List.map fst decls in
+  let recmod_ids = List.map fst3 decls in
   List.iter2
-    (fun (_, smty) (id, mty) ->
+    (fun (_, smty) (id, _, mty) ->
+       let mty = mty.mty_type in
       List.iter
         (fun path ->
           Typedecl.check_recmod_typedecl env smty.pmty_loc recmod_ids
@@ -322,23 +361,23 @@ let check cl loc set_ref name =
   else set_ref := StringSet.add name !set_ref
 
 let check_sig_item type_names module_names modtype_names loc = function
-    Tsig_type(id, _, _) ->
+    Sig_type(id, _, _) ->
       check "type" loc type_names (Ident.name id)
-  | Tsig_module(id, _, _) ->
+  | Sig_module(id, _, _) ->
       check "module" loc module_names (Ident.name id)
-  | Tsig_modtype(id, _) ->
+  | Sig_modtype(id, _) ->
       check "module type" loc modtype_names (Ident.name id)
   | _ -> ()
 
 let rec remove_values ids = function
     [] -> []
-  | Tsig_value (id, _) :: rem
+  | Sig_value (id, _) :: rem
     when List.exists (Ident.equal id) ids -> remove_values ids rem
   | f :: rem -> f :: remove_values ids rem
 
 let rec get_values = function
     [] -> []
-  | Tsig_value (id, _) :: rem -> id :: get_values rem
+  | Sig_value (id, _) :: rem -> id :: get_values rem
   | f :: rem -> get_values rem
 
 (* Check and translate a module type expression *)
@@ -347,28 +386,55 @@ let transl_modtype_longident loc env lid =
   let (path, info) = Typetexp.find_modtype env loc lid in
   path
 
+let mkmty desc typ env loc =
+  let mty = {
+    mty_desc = desc;
+    mty_type = typ;
+    mty_loc = loc;
+    mty_env = env;
+    } in
+  Cmt_format.add_saved_type (Cmt_format.Partial_module_type mty);
+  mty
+
+let mksig desc env loc =
+  let sg = { sig_desc = desc; sig_loc = loc; sig_env = env } in
+  Cmt_format.add_saved_type (Cmt_format.Partial_signature_item sg);
+  sg
+
+(* let signature sg = List.map (fun item -> item.sig_type) sg *)
+
 let rec transl_modtype env smty =
+  let loc = smty.pmty_loc in
   match smty.pmty_desc with
     Pmty_ident lid ->
-      Tmty_ident (transl_modtype_longident smty.pmty_loc env lid)
+      let path = transl_modtype_longident loc env lid.txt in
+      mkmty (Tmty_ident (path, lid)) (Mty_ident path) env loc
   | Pmty_signature ssg ->
-      Tmty_signature(transl_signature env ssg)
+      let sg = transl_signature env ssg in
+      mkmty (Tmty_signature sg) (Mty_signature sg.sig_type) env loc
   | Pmty_functor(param, sarg, sres) ->
       let arg = transl_modtype env sarg in
-      let (id, newenv) = Env.enter_module param arg env in
+      let (id, newenv) = Env.enter_module param.txt arg.mty_type env in
       let res = transl_modtype newenv sres in
-      Tmty_functor(id, arg, res)
+      mkmty (Tmty_functor (id, param, arg, res))
+      (Mty_functor(id, arg.mty_type, res.mty_type)) env loc
   | Pmty_with(sbody, constraints) ->
       let body = transl_modtype env sbody in
-      let init_sg = extract_sig env sbody.pmty_loc body in
-      let final_sg =
+      let init_sg = extract_sig env sbody.pmty_loc body.mty_type in
+      let (tcstrs, final_sg) =
         List.fold_left
-          (fun sg (lid, sdecl) ->
-            merge_constraint env smty.pmty_loc sg lid sdecl)
-          init_sg constraints in
-      Mtype.freshen (Tmty_signature final_sg)
+          (fun (tcstrs,sg) (lid, sdecl) ->
+            let (tcstr, sg) = merge_constraint env smty.pmty_loc sg lid sdecl
+            in
+            (tcstr :: tcstrs, sg)
+        )
+        ([],init_sg) constraints in
+      mkmty (Tmty_with ( body, tcstrs))
+      (Mtype.freshen (Mty_signature final_sg)) env loc
   | Pmty_typeof smod ->
-      !type_module_type_of_fwd env smod
+      let tmty, mty = !type_module_type_of_fwd env smod in
+      mkmty (Tmty_typeof tmty) mty env loc
+
 
 and transl_signature env sg =
   let type_names = ref StringSet.empty
@@ -377,52 +443,75 @@ and transl_signature env sg =
   let rec transl_sig env sg =
     Ctype.init_def(Ident.current_time());
     match sg with
-      [] -> []
+      [] -> [], [], env
     | item :: srem ->
+       let loc = item.psig_loc in
         match item.psig_desc with
         | Psig_value(name, sdesc) ->
-            let desc = Typedecl.transl_value_decl env item.psig_loc sdesc in
-            let (id, newenv) = Env.enter_value ~check:(fun s -> Warnings.Unused_value_declaration s) name desc env in
-            let rem = transl_sig newenv srem in
-            if List.exists (Ident.equal id) (get_values rem) then rem
-            else Tsig_value(id, desc) :: rem
+            let tdesc = Typedecl.transl_value_decl env item.psig_loc sdesc in
+            let desc = tdesc.val_val in
+            let (id, newenv) =
+              Env.enter_value name.txt desc env
+                ~check:(fun s -> Warnings.Unused_value_declaration s)  in
+            let (trem,rem, final_env) = transl_sig newenv srem in
+            mksig (Tsig_value (id, name, tdesc)) env loc :: trem,
+            (if List.exists (Ident.equal id) (get_values rem) then rem
+            else Sig_value(id, desc) :: rem),
+              final_env
         | Psig_type sdecls ->
             List.iter
-              (fun (name, decl) -> check "type" item.psig_loc type_names name)
+              (fun (name, decl) ->
+                check "type" item.psig_loc type_names name.txt)
               sdecls;
             let (decls, newenv) = Typedecl.transl_type_decl env sdecls in
-            let rem = transl_sig newenv srem in
-            map_rec' (fun rs (id, info) -> Tsig_type(id, info, rs)) decls rem
+            let (trem, rem, final_env) = transl_sig newenv srem in
+            mksig (Tsig_type decls) env loc :: trem,
+            map_rec'' (fun rs (id, _, info) ->
+                Sig_type(id, info.typ_type, rs)) decls rem,
+            final_env
         | Psig_exception(name, sarg) ->
             let arg = Typedecl.transl_exception env item.psig_loc sarg in
-            let (id, newenv) = Env.enter_exception name arg env in
-            let rem = transl_sig newenv srem in
-            Tsig_exception(id, arg) :: rem
+            let (id, newenv) = Env.enter_exception name.txt arg.exn_exn env in
+            let (trem, rem, final_env) = transl_sig newenv srem in
+            mksig (Tsig_exception (id, name, arg)) env loc :: trem,
+            Sig_exception(id, arg.exn_exn) :: rem,
+            final_env
         | Psig_module(name, smty) ->
-            check "module" item.psig_loc module_names name;
-            let mty = transl_modtype env smty in
-            let (id, newenv) = Env.enter_module name mty env in
-            let rem = transl_sig newenv srem in
-            Tsig_module(id, mty, Trec_not) :: rem
+            check "module" item.psig_loc module_names name.txt;
+            let tmty = transl_modtype env smty in
+            let mty = tmty.mty_type in
+            let (id, newenv) = Env.enter_module name.txt mty env in
+            let (trem, rem, final_env) = transl_sig newenv srem in
+            mksig (Tsig_module (id, name, tmty)) env loc :: trem,
+            Sig_module(id, mty, Trec_not) :: rem,
+            final_env
         | Psig_recmodule sdecls ->
             List.iter
               (fun (name, smty) ->
-                 check "module" item.psig_loc module_names name)
+                 check "module" item.psig_loc module_names name.txt)
               sdecls;
             let (decls, newenv) =
               transl_recmodule_modtypes item.psig_loc env sdecls in
-            let rem = transl_sig newenv srem in
-            map_rec (fun rs (id, mty) -> Tsig_module(id, mty, rs)) decls rem
+            let (trem, rem, final_env) = transl_sig newenv srem in
+            mksig (Tsig_recmodule decls) env loc :: trem,
+            map_rec (fun rs (id, _, tmty) -> Sig_module(id, tmty.mty_type, rs))
+              decls rem,
+            final_env
         | Psig_modtype(name, sinfo) ->
-            check "module type" item.psig_loc modtype_names name;
-            let info = transl_modtype_info env sinfo in
-            let (id, newenv) = Env.enter_modtype name info env in
-            let rem = transl_sig newenv srem in
-            Tsig_modtype(id, info) :: rem
+            check "module type" item.psig_loc modtype_names name.txt;
+            let (tinfo, info) = transl_modtype_info env sinfo in
+            let (id, newenv) = Env.enter_modtype name.txt info env in
+            let (trem, rem, final_env) = transl_sig newenv srem in
+            mksig (Tsig_modtype (id, name, tinfo)) env loc :: trem,
+            Sig_modtype(id, info) :: rem,
+            final_env
         | Psig_open lid ->
-            transl_sig (type_open env item.psig_loc lid) srem
+            let (path, newenv) = type_open env item.psig_loc lid in
+            let (trem, rem, final_env) = transl_sig newenv srem in
+            mksig (Tsig_open (path,lid)) env loc :: trem, rem, final_env
         | Psig_include smty ->
-            let mty = transl_modtype env smty in
+            let tmty = transl_modtype env smty in
+            let mty = tmty.mty_type in
             let sg = Subst.signature Subst.identity
                        (extract_sig env smty.pmty_loc mty) in
             List.iter
@@ -430,63 +519,88 @@ and transl_signature env sg =
                               item.psig_loc)
               sg;
             let newenv = Env.add_signature sg env in
-            let rem = transl_sig newenv srem in
-            remove_values (get_values rem) sg @ rem
+            let (trem, rem, final_env) = transl_sig newenv srem in
+            mksig (Tsig_include (tmty, sg)) env loc :: trem,
+            remove_values (get_values rem) sg @ rem, final_env
         | Psig_class cl ->
             List.iter
               (fun {pci_name = name} ->
-                 check "type" item.psig_loc type_names name)
+                 check "type" item.psig_loc type_names name.txt )
               cl;
             let (classes, newenv) = Typeclass.class_descriptions env cl in
-            let rem = transl_sig newenv srem in
+            let (trem, rem, final_env) = transl_sig newenv srem in
+            mksig (Tsig_class
+                     (List.map2
+                        (fun pcl tcl ->
+                         let (_, _, _, _, _, _, _, _, _, _, _, tcl) = tcl in
+                          tcl)
+                       cl classes)) env loc
+            :: trem,
             List.flatten
               (map_rec
-                 (fun rs (i, d, i', d', i'', d'', i''', d''', _, _, _) ->
-                    [Tsig_class(i, d, rs);
-                     Tsig_cltype(i', d', rs);
-                     Tsig_type(i'', d'', rs);
-                     Tsig_type(i''', d''', rs)])
-                 classes [rem])
+                 (fun rs (i, _, d, i', d', i'', d'', i''', d''', _, _, _) ->
+                   [Sig_class(i, d, rs);
+                    Sig_class_type(i', d', rs);
+                    Sig_type(i'', d'', rs);
+                    Sig_type(i''', d''', rs)])
+                 classes [rem]),
+            final_env
         | Psig_class_type cl ->
             List.iter
               (fun {pci_name = name} ->
-                 check "type" item.psig_loc type_names name)
+                 check "type" item.psig_loc type_names name.txt)
               cl;
             let (classes, newenv) = Typeclass.class_type_declarations env cl in
-            let rem = transl_sig newenv srem in
+            let (trem,rem, final_env) = transl_sig newenv srem in
+            mksig (Tsig_class_type (List.map2 (fun pcl tcl ->
+             let (_, _, _, _, _, _, _, tcl) = tcl in
+             tcl
+           ) cl classes)) env loc :: trem,
             List.flatten
               (map_rec
-                 (fun rs (i, d, i', d', i'', d'') ->
-                    [Tsig_cltype(i, d, rs);
-                     Tsig_type(i', d', rs);
-                     Tsig_type(i'', d'', rs)])
-                 classes [rem])
-    in transl_sig (Env.in_signature env) sg
+                 (fun rs (i, _, d, i', d', i'', d'', _) ->
+                   [Sig_class_type(i, d, rs);
+                    Sig_type(i', d', rs);
+                    Sig_type(i'', d'', rs)])
+                 classes [rem]),
+            final_env
+  in
+  let previous_saved_types = Cmt_format.get_saved_types () in
+  let (trem, rem, final_env) = transl_sig (Env.in_signature env) sg in
+  let sg = { sig_items = trem; sig_type =  rem; sig_final_env = final_env } in
+  Cmt_format.set_saved_types
+    ((Cmt_format.Partial_signature sg) :: previous_saved_types);
+  sg
 
 and transl_modtype_info env sinfo =
   match sinfo with
     Pmodtype_abstract ->
-      Tmodtype_abstract
+      Tmodtype_abstract, Modtype_abstract
   | Pmodtype_manifest smty ->
-      Tmodtype_manifest(transl_modtype env smty)
+      let tmty = transl_modtype env smty in
+      Tmodtype_manifest tmty, Modtype_manifest tmty.mty_type
 
 and transl_recmodule_modtypes loc env sdecls =
   let make_env curr =
     List.fold_left
-      (fun env (id, mty) -> Env.add_module id mty env)
+      (fun env (id, _, mty) -> Env.add_module id mty env)
+      env curr in
+  let make_env2 curr =
+    List.fold_left
+      (fun env (id, _, mty) -> Env.add_module id mty.mty_type env)
       env curr in
   let transition env_c curr =
     List.map2
-      (fun (_, smty) (id, mty) -> (id, transl_modtype env_c smty))
+      (fun (_,smty) (id,id_loc,mty) -> (id, id_loc, transl_modtype env_c smty))
       sdecls curr in
   let init =
     List.map
       (fun (name, smty) ->
-        (Ident.create name, approx_modtype env smty))
+        (Ident.create name.txt, name, approx_modtype env smty))
       sdecls in
   let env0 = make_env init in
   let dcl1 = transition env0 init in
-  let env1 = make_env dcl1 in
+  let env1 = make_env2 dcl1 in
   check_recmod_typedecls env1 sdecls dcl1;
   let dcl2 = transition env1 dcl1 in
 (*
@@ -495,7 +609,7 @@ and transl_recmodule_modtypes loc env sdecls =
       Format.printf "%a: %a@." Printtyp.ident id Printtyp.modtype mty)
     dcl2;
 *)
-  let env2 = make_env dcl2 in
+  let env2 = make_env2 dcl2 in
   check_recmod_typedecls env2 sdecls dcl2;
   (dcl2, env2)
 
@@ -505,7 +619,7 @@ exception Not_a_path
 
 let rec path_of_module mexp =
   match mexp.mod_desc with
-    Tmod_ident p -> p
+    Tmod_ident (p,_) -> p
   | Tmod_apply(funct, arg, coercion) when !Clflags.applicative_functors ->
       Papply(path_of_module funct, path_of_module arg)
   | _ -> raise Not_a_path
@@ -513,23 +627,24 @@ let rec path_of_module mexp =
 (* Check that all core type schemes in a structure are closed *)
 
 let rec closed_modtype = function
-    Tmty_ident p -> true
-  | Tmty_signature sg -> List.for_all closed_signature_item sg
-  | Tmty_functor(id, param, body) -> closed_modtype body
+    Mty_ident p -> true
+  | Mty_signature sg -> List.for_all closed_signature_item sg
+  | Mty_functor(id, param, body) -> closed_modtype body
 
 and closed_signature_item = function
-    Tsig_value(id, desc) -> Ctype.closed_schema desc.val_type
-  | Tsig_module(id, mty, _) -> closed_modtype mty
+    Sig_value(id, desc) -> Ctype.closed_schema desc.val_type
+  | Sig_module(id, mty, _) -> closed_modtype mty
   | _ -> true
 
-let check_nongen_scheme env = function
+let check_nongen_scheme env str =
+  match str.str_desc with
     Tstr_value(rec_flag, pat_exp_list) ->
       List.iter
         (fun (pat, exp) ->
           if not (Ctype.closed_schema exp.exp_type) then
             raise(Error(exp.exp_loc, Non_generalizable exp.exp_type)))
         pat_exp_list
-  | Tstr_module(id, md) ->
+  | Tstr_module(id, _, md) ->
       if not (closed_modtype md.mod_type) then
         raise(Error(md.mod_loc, Non_generalizable_module md.mod_type))
   | _ -> ()
@@ -544,11 +659,11 @@ let check_nongen_schemes env str =
 
 let rec bound_value_identifiers = function
     [] -> []
-  | Tsig_value(id, {val_kind = Val_reg}) :: rem ->
+  | Sig_value(id, {val_kind = Val_reg}) :: rem ->
       id :: bound_value_identifiers rem
-  | Tsig_exception(id, decl) :: rem -> id :: bound_value_identifiers rem
-  | Tsig_module(id, mty, _) :: rem -> id :: bound_value_identifiers rem
-  | Tsig_class(id, decl, _) :: rem -> id :: bound_value_identifiers rem
+  | Sig_exception(id, decl) :: rem -> id :: bound_value_identifiers rem
+  | Sig_module(id, mty, _) :: rem -> id :: bound_value_identifiers rem
+  | Sig_class(id, decl, _) :: rem -> id :: bound_value_identifiers rem
   | _ :: rem -> bound_value_identifiers rem
 
 (* Helpers for typing recursive modules *)
@@ -563,9 +678,10 @@ let enrich_type_decls anchor decls oldenv newenv =
     None -> newenv
   | Some p ->
       List.fold_left
-        (fun e (id, info) ->
+        (fun e (id, _, info) ->
           let info' =
-            Mtype.enrich_typedecl oldenv (Pdot(p, Ident.name id, nopos)) info
+            Mtype.enrich_typedecl oldenv (Pdot(p, Ident.name id, nopos))
+              info.typ_type
           in
             Env.add_type id info' e)
         oldenv decls
@@ -605,7 +721,7 @@ let check_recmodule_inclusion env bindings =
       (* Generate fresh names Y_i for the rec. bound module idents X_i *)
       let bindings1 =
         List.map
-          (fun (id, mty_decl, modl, mty_actual) ->
+          (fun (id, _, mty_decl, modl, mty_actual) ->
              (id, Ident.rename id, mty_actual))
           bindings in
       (* Enter the Y_i in the environment with their actual types substituted
@@ -630,8 +746,8 @@ let check_recmodule_inclusion env bindings =
     end else begin
       (* Base case: check inclusion of s(mty_actual) in s(mty_decl)
          and insert coercion if needed *)
-      let check_inclusion (id, mty_decl, modl, mty_actual) =
-        let mty_decl' = Subst.modtype s mty_decl
+      let check_inclusion (id, id_loc, mty_decl, modl, mty_actual) =
+        let mty_decl' = Subst.modtype s mty_decl.mty_type
         and mty_actual' = subst_and_strengthen env s id mty_actual in
         let coercion =
           try
@@ -639,11 +755,12 @@ let check_recmodule_inclusion env bindings =
           with Includemod.Error msg ->
             raise(Error(modl.mod_loc, Not_included msg)) in
         let modl' =
-          { mod_desc = Tmod_constraint(modl, mty_decl, coercion);
-            mod_type = mty_decl;
+            { mod_desc = Tmod_constraint(modl, mty_decl.mty_type,
+                Tmodtype_explicit mty_decl, coercion);
+            mod_type = mty_decl.mty_type;
             mod_env = env;
             mod_loc = modl.mod_loc } in
-        (id, modl') in
+        (id, id_loc, mty_decl, modl') in
       List.map check_inclusion bindings
     end
   in check_incl true (List.length bindings) env Subst.identity
@@ -656,50 +773,58 @@ let rec package_constraints env loc mty constrs =
   let sg' =
     List.map
       (function
-        | Tsig_type (id, ({type_params=[]} as td), rs) when List.mem_assoc [Ident.name id] constrs ->
+        | Sig_type (id, ({type_params=[]} as td), rs)
+          when List.mem_assoc [Ident.name id] constrs ->
             let ty = List.assoc [Ident.name id] constrs in
-            Tsig_type (id, {td with type_manifest = Some ty}, rs)
-        | Tsig_module (id, mty, rs) ->
+            Sig_type (id, {td with type_manifest = Some ty}, rs)
+        | Sig_module (id, mty, rs) ->
             let rec aux = function
-              | (m :: ((_ :: _) as l), t) :: rest when m = Ident.name id -> (l, t) :: aux rest
+              | (m :: ((_ :: _) as l), t) :: rest when m = Ident.name id ->
+                  (l, t) :: aux rest
               | _ :: rest -> aux rest
               | [] -> []
             in
-            Tsig_module (id, package_constraints env loc mty (aux constrs), rs)
+            Sig_module (id, package_constraints env loc mty (aux constrs), rs)
         | item -> item
       )
       sg
   in
-  Tmty_signature sg'
+  Mty_signature sg'
 
 let modtype_of_package env loc p nl tl =
   try match Env.find_modtype p env with
-  | Tmodtype_manifest mty when nl <> [] ->
-      package_constraints env loc mty (List.combine (List.map Longident.flatten nl) tl)
+  | Modtype_manifest mty when nl <> [] ->
+      package_constraints env loc mty
+        (List.combine (List.map Longident.flatten nl) tl)
   | _ ->
-      if nl = [] then Tmty_ident p
+      if nl = [] then Mty_ident p
       else raise(Error(loc, Signature_expected))
   with Not_found ->
     raise(Typetexp.Error(loc, Typetexp.Unbound_modtype (Ctype.lid_of_path p)))
 
-let wrap_constraint env arg mty =
+let wrap_constraint env arg mty explicit =
   let coercion =
     try
       Includemod.modtypes env arg.mod_type mty
     with Includemod.Error msg ->
       raise(Error(arg.mod_loc, Not_included msg)) in
-  { mod_desc = Tmod_constraint(arg, mty, coercion);
+  { mod_desc = Tmod_constraint(arg, mty, explicit, coercion);
     mod_type = mty;
     mod_env = env;
     mod_loc = arg.mod_loc }
 
 (* Type a module value expression *)
 
+let mkstr desc loc env =
+  let str = { str_desc = desc; str_loc = loc; str_env = env } in
+  Cmt_format.add_saved_type (Cmt_format.Partial_structure_item str);
+  str
+
 let rec type_module sttn funct_body anchor env smod =
   match smod.pmod_desc with
     Pmod_ident lid ->
-      let (path, mty) = Typetexp.find_module env smod.pmod_loc lid in
-      rm { mod_desc = Tmod_ident path;
+      let (path, mty) = Typetexp.find_module env smod.pmod_loc lid.txt in
+      rm { mod_desc = Tmod_ident (path, lid);
            mod_type = if sttn then Mtype.strengthen env mty path else mty;
            mod_env = env;
            mod_loc = smod.pmod_loc }
@@ -707,15 +832,15 @@ let rec type_module sttn funct_body anchor env smod =
       let (str, sg, finalenv) =
         type_structure funct_body anchor env sstr smod.pmod_loc in
       rm { mod_desc = Tmod_structure str;
-           mod_type = Tmty_signature sg;
+           mod_type = Mty_signature sg;
            mod_env = env;
            mod_loc = smod.pmod_loc }
   | Pmod_functor(name, smty, sbody) ->
       let mty = transl_modtype env smty in
-      let (id, newenv) = Env.enter_module name mty env in
+      let (id, newenv) = Env.enter_module name.txt mty.mty_type env in
       let body = type_module sttn true None newenv sbody in
-      rm { mod_desc = Tmod_functor(id, mty, body);
-           mod_type = Tmty_functor(id, mty, body.mod_type);
+      rm { mod_desc = Tmod_functor(id, name, mty, body);
+           mod_type = Mty_functor(id, mty.mty_type, body.mod_type);
            mod_env = env;
            mod_loc = smod.pmod_loc }
   | Pmod_apply(sfunct, sarg) ->
@@ -724,7 +849,7 @@ let rec type_module sttn funct_body anchor env smod =
       let funct =
         type_module (sttn && path <> None) funct_body None env sfunct in
       begin match Mtype.scrape env funct.mod_type with
-        Tmty_functor(param, mty_param, mty_res) as mty_functor ->
+        Mty_functor(param, mty_param, mty_res) as mty_functor ->
           let coercion =
             try
               Includemod.modtypes env arg.mod_type mty_param
@@ -753,7 +878,8 @@ let rec type_module sttn funct_body anchor env smod =
   | Pmod_constraint(sarg, smty) ->
       let arg = type_module true funct_body anchor env sarg in
       let mty = transl_modtype env smty in
-      rm {(wrap_constraint env arg mty) with mod_loc = smod.pmod_loc}
+      rm {(wrap_constraint env arg mty.mty_type (Tmodtype_explicit mty)) with
+          mod_loc = smod.pmod_loc}
 
   | Pmod_unpack sexp ->
       if funct_body then
@@ -787,20 +913,24 @@ let rec type_module sttn funct_body anchor env smod =
            mod_env = env;
            mod_loc = smod.pmod_loc }
 
-and type_structure funct_body anchor env sstr scope =
+and type_structure ?(toplevel = false) funct_body anchor env sstr scope =
   let type_names = ref StringSet.empty
   and module_names = ref StringSet.empty
   and modtype_names = ref StringSet.empty in
   let rec type_struct env sstr =
+    let mkstr desc loc = mkstr desc loc env in
     Ctype.init_def(Ident.current_time());
     match sstr with
       [] ->
         ([], [], env)
-    | {pstr_desc = Pstr_eval sexpr} :: srem ->
-        let expr = Typecore.type_expression env sexpr in
-        let (str_rem, sig_rem, final_env) = type_struct env srem in
-        (Tstr_eval expr :: str_rem, sig_rem, final_env)
-    | {pstr_desc = Pstr_value(rec_flag, sdefs); pstr_loc = loc} :: srem ->
+      | pstr :: srem ->
+         let loc = pstr.pstr_loc in
+           match pstr.pstr_desc with
+             | Pstr_eval sexpr ->
+                 let expr = Typecore.type_expression env sexpr in
+                 let (str_rem, sig_rem, final_env) = type_struct env srem in
+                   (mkstr (Tstr_eval expr) loc :: str_rem, sig_rem, final_env)
+             | Pstr_value(rec_flag, sdefs) ->
         let scope =
           match rec_flag with
           | Recursive -> Some (Annot.Idef {scope with
@@ -819,136 +949,145 @@ and type_structure funct_body anchor env sstr scope =
         (* Note: Env.find_value does not trigger the value_used event. Values
            will be marked as being used during the signature inclusion test. *)
         let make_sig_value id =
-          Tsig_value(id, Env.find_value (Pident id) newenv) in
-        (Tstr_value(rec_flag, defs) :: str_rem,
+          Sig_value(id, Env.find_value (Pident id) newenv) in
+        (mkstr (Tstr_value(rec_flag, defs)) loc :: str_rem,
          map_end make_sig_value bound_idents sig_rem,
          final_env)
-    | {pstr_desc = Pstr_primitive(name, sdesc); pstr_loc = loc} :: srem ->
+    | Pstr_primitive(name, sdesc) ->
         let desc = Typedecl.transl_value_decl env loc sdesc in
-        let (id, newenv) = Env.enter_value ~check:(fun s -> Warnings.Unused_value_declaration s) name desc env in
+        let (id, newenv) = Env.enter_value name.txt desc.val_val env
+            ~check:(fun s -> Warnings.Unused_value_declaration s) in
         let (str_rem, sig_rem, final_env) = type_struct newenv srem in
-        (Tstr_primitive(id, desc) :: str_rem,
-         Tsig_value(id, desc) :: sig_rem,
+        (mkstr (Tstr_primitive(id, name, desc)) loc :: str_rem,
+         Sig_value(id, desc.val_val) :: sig_rem,
          final_env)
-    | {pstr_desc = Pstr_type sdecls; pstr_loc = loc} :: srem ->
+    | Pstr_type sdecls ->
         List.iter
-          (fun (name, decl) -> check "type" loc type_names name)
+          (fun (name, decl) -> check "type" loc type_names name.txt)
           sdecls;
         let (decls, newenv) = Typedecl.transl_type_decl env sdecls in
         let newenv' =
           enrich_type_decls anchor decls env newenv in
         let (str_rem, sig_rem, final_env) = type_struct newenv' srem in
-        (Tstr_type decls :: str_rem,
-         map_rec' (fun rs (id, info) -> Tsig_type(id, info, rs)) decls sig_rem,
+        (mkstr (Tstr_type decls) loc :: str_rem,
+         map_rec'' (fun rs (id, _, info) -> Sig_type(id, info.typ_type, rs))
+           decls sig_rem,
          final_env)
-    | {pstr_desc = Pstr_exception(name, sarg); pstr_loc = loc} :: srem ->
+    | Pstr_exception(name, sarg) ->
         let arg = Typedecl.transl_exception env loc sarg in
-        let (id, newenv) = Env.enter_exception name arg env in
+        let (id, newenv) = Env.enter_exception name.txt arg.exn_exn env in
         let (str_rem, sig_rem, final_env) = type_struct newenv srem in
-        (Tstr_exception(id, arg) :: str_rem,
-         Tsig_exception(id, arg) :: sig_rem,
+        (mkstr (Tstr_exception(id, name, arg)) loc :: str_rem,
+         Sig_exception(id, arg.exn_exn) :: sig_rem,
          final_env)
-    | {pstr_desc = Pstr_exn_rebind(name, longid); pstr_loc = loc} :: srem ->
-        let (path, arg) = Typedecl.transl_exn_rebind env loc longid in
-        let (id, newenv) = Env.enter_exception name arg env in
+    | Pstr_exn_rebind(name, longid) ->
+        let (path, arg) = Typedecl.transl_exn_rebind env loc longid.txt in
+        let (id, newenv) = Env.enter_exception name.txt arg env in
         let (str_rem, sig_rem, final_env) = type_struct newenv srem in
-        (Tstr_exn_rebind(id, path) :: str_rem,
-         Tsig_exception(id, arg) :: sig_rem,
+        (mkstr (Tstr_exn_rebind(id, name, path, longid)) loc :: str_rem,
+         Sig_exception(id, arg) :: sig_rem,
          final_env)
-    | {pstr_desc = Pstr_module(name, smodl); pstr_loc = loc} :: srem ->
-        check "module" loc module_names name;
+    | Pstr_module(name, smodl) ->
+        check "module" loc module_names name.txt;
         let modl =
-          type_module true funct_body (anchor_submodule name anchor) env
+          type_module true funct_body (anchor_submodule name.txt anchor) env
             smodl in
-        let mty = enrich_module_type anchor name modl.mod_type env in
-        let (id, newenv) = Env.enter_module name mty env in
+        let mty = enrich_module_type anchor name.txt modl.mod_type env in
+        let (id, newenv) = Env.enter_module name.txt mty env in
         let (str_rem, sig_rem, final_env) = type_struct newenv srem in
-        (Tstr_module(id, modl) :: str_rem,
-         Tsig_module(id, modl.mod_type, Trec_not) :: sig_rem,
+        (mkstr (Tstr_module(id, name, modl)) loc :: str_rem,
+         Sig_module(id, modl.mod_type, Trec_not) :: sig_rem,
          final_env)
-    | {pstr_desc = Pstr_recmodule sbind; pstr_loc = loc} :: srem ->
+    | Pstr_recmodule sbind ->
         List.iter
-          (fun (name, _, _) -> check "module" loc module_names name)
+          (fun (name, _, _) -> check "module" loc module_names name.txt)
           sbind;
         let (decls, newenv) =
           transl_recmodule_modtypes loc env
             (List.map (fun (name, smty, smodl) -> (name, smty)) sbind) in
         let bindings1 =
           List.map2
-            (fun (id, mty) (name, smty, smodl) ->
+            (fun (id, _, mty) (name, _, smodl) ->
               let modl =
                 type_module true funct_body (anchor_recmodule id anchor) newenv
                   smodl in
               let mty' =
                 enrich_module_type anchor (Ident.name id) modl.mod_type newenv
               in
-              (id, mty, modl, mty'))
+              (id, name, mty, modl, mty'))
            decls sbind in
         let bindings2 =
           check_recmodule_inclusion newenv bindings1 in
         let (str_rem, sig_rem, final_env) = type_struct newenv srem in
-        (Tstr_recmodule bindings2 :: str_rem,
-         map_rec (fun rs (id, modl) -> Tsig_module(id, modl.mod_type, rs))
+        (mkstr (Tstr_recmodule bindings2) loc :: str_rem,
+         map_rec (fun rs (id, _, _, modl) -> Sig_module(id, modl.mod_type, rs))
                  bindings2 sig_rem,
          final_env)
-    | {pstr_desc = Pstr_modtype(name, smty); pstr_loc = loc} :: srem ->
-        check "module type" loc modtype_names name;
+    | Pstr_modtype(name, smty) ->
+        check "module type" loc modtype_names name.txt;
         let mty = transl_modtype env smty in
-        let (id, newenv) = Env.enter_modtype name (Tmodtype_manifest mty) env in
+        let (id, newenv) =
+          Env.enter_modtype name.txt (Modtype_manifest mty.mty_type) env in
         let (str_rem, sig_rem, final_env) = type_struct newenv srem in
-        (Tstr_modtype(id, mty) :: str_rem,
-         Tsig_modtype(id, Tmodtype_manifest mty) :: sig_rem,
+        (mkstr (Tstr_modtype(id, name, mty)) loc :: str_rem,
+         Sig_modtype(id, Modtype_manifest mty.mty_type) :: sig_rem,
          final_env)
-    | {pstr_desc = Pstr_open lid; pstr_loc = loc} :: srem ->
-        type_struct (type_open env loc lid) srem
-    | {pstr_desc = Pstr_class cl; pstr_loc = loc} :: srem ->
+    | Pstr_open (lid) ->
+       let (path, newenv) = type_open ~toplevel env loc lid in
+       let (str_rem, sig_rem, final_env) = type_struct newenv srem in
+         (mkstr (Tstr_open (path, lid)) loc :: str_rem, sig_rem, final_env)
+    | Pstr_class cl ->
          List.iter
-           (fun {pci_name = name} -> check "type" loc type_names name)
+           (fun {pci_name = name} -> check "type" loc type_names name.txt)
            cl;
         let (classes, new_env) = Typeclass.class_declarations env cl in
         let (str_rem, sig_rem, final_env) = type_struct new_env srem in
-        (Tstr_class
-           (List.map (fun (i, d, _,_,_,_,_,_, s, m, c) ->
+        (mkstr (Tstr_class
+           (List.map (fun (i, _, d, _,_,_,_,_,_, s, m, c) ->
               let vf = if d.cty_new = None then Virtual else Concrete in
-              (i, s, m, c, vf)) classes) ::
-         Tstr_cltype
-           (List.map (fun (_,_, i, d, _,_,_,_,_,_,_) -> (i, d)) classes) ::
+              (* (i, s, m, c, vf) *) (c, m, vf)) classes)) loc ::
+(* TODO: check with Jacques why this is here
+           Tstr_class_type
+           (List.map (fun (_,_, i, d, _,_,_,_,_,_,c) -> (i, c)) classes) ::
          Tstr_type
            (List.map (fun (_,_,_,_, i, d, _,_,_,_,_) -> (i, d)) classes) ::
          Tstr_type
            (List.map (fun (_,_,_,_,_,_, i, d, _,_,_) -> (i, d)) classes) ::
+*)
          str_rem,
          List.flatten
            (map_rec
-              (fun rs (i, d, i', d', i'', d'', i''', d''', _, _, _) ->
-                 [Tsig_class(i, d, rs);
-                  Tsig_cltype(i', d', rs);
-                  Tsig_type(i'', d'', rs);
-                  Tsig_type(i''', d''', rs)])
+              (fun rs (i, _, d, i', d', i'', d'', i''', d''', _, _, _) ->
+                 [Sig_class(i, d, rs);
+                  Sig_class_type(i', d', rs);
+                  Sig_type(i'', d'', rs);
+                  Sig_type(i''', d''', rs)])
               classes [sig_rem]),
          final_env)
-    | {pstr_desc = Pstr_class_type cl; pstr_loc = loc} :: srem ->
+    | Pstr_class_type cl ->
         List.iter
-          (fun {pci_name = name} -> check "type" loc type_names name)
+          (fun {pci_name = name} -> check "type" loc type_names name.txt)
           cl;
         let (classes, new_env) = Typeclass.class_type_declarations env cl in
         let (str_rem, sig_rem, final_env) = type_struct new_env srem in
-        (Tstr_cltype
-           (List.map (fun (i, d, _, _, _, _) -> (i, d)) classes) ::
-         Tstr_type
+        (mkstr (Tstr_class_type
+           (List.map (fun (i, i_loc, d, _, _, _, _, c) ->
+             (i, i_loc, c)) classes)) loc ::
+(*  TODO: check with Jacques why this is here
+       Tstr_type
            (List.map (fun (_, _, i, d, _, _) -> (i, d)) classes) ::
          Tstr_type
-           (List.map (fun (_, _, _, _, i, d) -> (i, d)) classes) ::
+           (List.map (fun (_, _, _, _, i, d) -> (i, d)) classes) :: *)
          str_rem,
          List.flatten
            (map_rec
-              (fun rs (i, d, i', d', i'', d'') ->
-                 [Tsig_cltype(i, d, rs);
-                  Tsig_type(i', d', rs);
-                  Tsig_type(i'', d'', rs)])
+              (fun rs (i, _, d, i', d', i'', d'', _) ->
+                 [Sig_class_type(i, d, rs);
+                  Sig_type(i', d', rs);
+                  Sig_type(i'', d'', rs)])
               classes [sig_rem]),
          final_env)
-    | {pstr_desc = Pstr_include smodl; pstr_loc = loc} :: srem ->
+    | Pstr_include smodl ->
         let modl = type_module true funct_body None env smodl in
         (* Rename all identifiers bound by this signature to avoid clashes *)
         let sg = Subst.signature Subst.identity
@@ -957,29 +1096,36 @@ and type_structure funct_body anchor env sstr scope =
           (check_sig_item type_names module_names modtype_names loc) sg;
         let new_env = Env.add_signature sg env in
         let (str_rem, sig_rem, final_env) = type_struct new_env srem in
-        (Tstr_include (modl, bound_value_identifiers sg) :: str_rem,
+        (mkstr (Tstr_include (modl, bound_value_identifiers sg)) loc :: str_rem,
          sg @ sig_rem,
          final_env)
   in
-  if !Clflags.annotations
-  then List.iter (function {pstr_loc = l} -> Stypes.record_phrase l) sstr;
-  type_struct env sstr
-
+  if !Clflags.annotations then
+    (* moved to genannot *)
+    List.iter (function {pstr_loc = l} -> Stypes.record_phrase l) sstr;
+  let previous_saved_types = Cmt_format.get_saved_types () in
+  let (items, sg, final_env) = type_struct env sstr in
+  let str = { str_items = items; str_type = sg; str_final_env = final_env } in
+  Cmt_format.set_saved_types
+    (Cmt_format.Partial_structure str :: previous_saved_types);
+  str, sg, final_env
+
+let type_toplevel_phrase env s = type_structure ~toplevel:true false None env s Location.none
 let type_module = type_module true false None
 let type_structure = type_structure false None
 
 (* Normalize types in a signature *)
 
 let rec normalize_modtype env = function
-    Tmty_ident p -> ()
-  | Tmty_signature sg -> normalize_signature env sg
-  | Tmty_functor(id, param, body) -> normalize_modtype env body
+    Mty_ident p -> ()
+  | Mty_signature sg -> normalize_signature env sg
+  | Mty_functor(id, param, body) -> normalize_modtype env body
 
 and normalize_signature env = List.iter (normalize_signature_item env)
 
 and normalize_signature_item env = function
-    Tsig_value(id, desc) -> Ctype.normalize_type env desc.val_type
-  | Tsig_module(id, mty, _) -> normalize_modtype env mty
+    Sig_value(id, desc) -> Ctype.normalize_type env desc.val_type
+  | Sig_module(id, mty, _) -> normalize_modtype env mty
   | _ -> ()
 
 (* Simplify multiple specifications of a value or an exception in a signature.
@@ -989,26 +1135,26 @@ and normalize_signature_item env = function
 
 let rec simplify_modtype mty =
   match mty with
-    Tmty_ident path -> mty
-  | Tmty_functor(id, arg, res) -> Tmty_functor(id, arg, simplify_modtype res)
-  | Tmty_signature sg -> Tmty_signature(simplify_signature sg)
+    Mty_ident path -> mty
+  | Mty_functor(id, arg, res) -> Mty_functor(id, arg, simplify_modtype res)
+  | Mty_signature sg -> Mty_signature(simplify_signature sg)
 
 and simplify_signature sg =
   let rec simplif val_names exn_names res = function
     [] -> res
-  | (Tsig_value(id, descr) as component) :: sg ->
+  | (Sig_value(id, descr) as component) :: sg ->
       let name = Ident.name id in
       simplif (StringSet.add name val_names) exn_names
               (if StringSet.mem name val_names then res else component :: res)
               sg
-  | (Tsig_exception(id, decl) as component) :: sg ->
+  | (Sig_exception(id, decl) as component) :: sg ->
       let name = Ident.name id in
       simplif val_names (StringSet.add name exn_names)
               (if StringSet.mem name exn_names then res else component :: res)
               sg
-  | Tsig_module(id, mty, rs) :: sg ->
+  | Sig_module(id, mty, rs) :: sg ->
       simplif val_names exn_names
-              (Tsig_module(id, simplify_modtype mty, rs) :: res) sg
+              (Sig_module(id, simplify_modtype mty, rs) :: res) sg
   | component :: sg ->
       simplif val_names exn_names (component :: res) sg
   in
@@ -1017,23 +1163,28 @@ and simplify_signature sg =
 (* Extract the module type of a module expression *)
 
 let type_module_type_of env smod =
-  let mty =
+  let tmty =
     match smod.pmod_desc with
     | Pmod_ident lid -> (* turn off strengthening in this case *)
-        let (path, mty) = Typetexp.find_module env smod.pmod_loc lid in mty
-    | _ -> (type_module env smod).mod_type in
+        let (path, mty) = Typetexp.find_module env smod.pmod_loc lid.txt in
+        rm { mod_desc = Tmod_ident (path, lid);
+             mod_type = mty;
+             mod_env = env;
+             mod_loc = smod.pmod_loc }
+    | _ -> type_module env smod in
+  let mty = tmty.mod_type in
   (* PR#5037: clean up inferred signature to remove duplicate specs *)
   let mty = simplify_modtype mty in
   (* PR#5036: must not contain non-generalized type variables *)
   if not (closed_modtype mty) then
     raise(Error(smod.pmod_loc, Non_generalizable_module mty));
-  mty
+  tmty, mty
 
 (* For Typecore *)
 
 let rec get_manifest_types = function
     [] -> []
-  | Tsig_type (id, {type_params=[]; type_manifest=Some ty}, _) :: rem ->
+  | Sig_type (id, {type_params=[]; type_manifest=Some ty}, _) :: rem ->
       (Ident.name id, ty) :: get_manifest_types rem
   | _ :: rem -> get_manifest_types rem
 
@@ -1049,7 +1200,7 @@ let type_package env m p nl tl =
   Typetexp.widen context;
   let (mp, env) =
     match modl.mod_desc with
-      Tmod_ident mp -> (mp, env)
+      Tmod_ident (mp,_) -> (mp, env)
     | _ ->
       let (id, new_env) = Env.enter_module "%M" modl.mod_type env in
       (Pident id, new_env)
@@ -1063,14 +1214,15 @@ let type_package env m p nl tl =
     List.map (fun name -> Ctype.newconstr (mkpath mp name) []) nl in
   (* go back to original level *)
   Ctype.end_def ();
-  if nl = [] then (wrap_constraint env modl (Tmty_ident p), []) else
-  let mty = modtype_of_package env modl.mod_loc p nl tl' in
+  if nl = [] then
+    (wrap_constraint env modl (Mty_ident p) Tmodtype_implicit, [])
+  else let mty = modtype_of_package env modl.mod_loc p nl tl' in
   List.iter2
     (fun n ty ->
       try Ctype.unify env ty (Ctype.newvar ())
       with Ctype.Unify _ -> raise (Error(m.pmod_loc, Scoping_pack (n,ty))))
     nl tl';
-  (wrap_constraint env modl mty, tl')
+  (wrap_constraint env modl mty Tmodtype_implicit, tl')
 
 (* Fill in the forward declarations *)
 let () =
@@ -1084,6 +1236,8 @@ let () =
 (* Typecheck an implementation file *)
 
 let type_implementation sourcefile outputprefix modulename initial_env ast =
+  Cmt_format.set_saved_types [];
+  try
   Typecore.reset_delayed_checks ();
   let (str, sg, finalenv) = type_structure initial_env ast Location.none in
   let simple_sg = simplify_signature sg in
@@ -1105,9 +1259,11 @@ let type_implementation sourcefile outputprefix modulename initial_env ast =
       (* It is important to run these checks after the inclusion test above,
          so that value declarations which are not used internally but exported
          are not reported as being unused. *)
+      Cmt_format.save_cmt (outputprefix ^ ".cmt") modulename
+        (Cmt_format.Implementation str) (Some sourcefile) initial_env None;
       (str, coercion)
     end else begin
-      check_nongen_schemes finalenv str;
+      check_nongen_schemes finalenv str.str_items;
       normalize_signature finalenv simple_sg;
       let coercion =
         Includemod.compunit sourcefile sg
@@ -1117,11 +1273,27 @@ let type_implementation sourcefile outputprefix modulename initial_env ast =
          the value being exported. We can still capture unused
          declarations like "let x = true;; let x = 1;;", because in this
          case, the inferred signature contains only the last declaration. *)
-      if not !Clflags.dont_write_files then
-        Env.save_signature simple_sg modulename (outputprefix ^ ".cmi");
+      if not !Clflags.dont_write_files then begin
+        let sg =
+          Env.save_signature simple_sg modulename (outputprefix ^ ".cmi") in
+        Cmt_format.save_cmt  (outputprefix ^ ".cmt") modulename
+          (Cmt_format.Implementation str)
+          (Some sourcefile) initial_env (Some sg);
+      end;
       (str, coercion)
     end
-  end
+    end
+  with e ->
+    Cmt_format.save_cmt  (outputprefix ^ ".cmt") modulename
+      (Cmt_format.Partial_implementation
+         (Array.of_list (Cmt_format.get_saved_types ())))
+      (Some sourcefile) initial_env None;
+    raise e
+
+
+let save_signature modname tsg outputprefix source_file initial_env cmi =
+  Cmt_format.save_cmt  (outputprefix ^ ".cmti") modname
+    (Cmt_format.Interface tsg) (Some source_file) initial_env (Some cmi)
 
 (* "Packaging" of several compilation units into one unit
    having them as sub-modules.  *)
@@ -1132,7 +1304,7 @@ let rec package_signatures subst = function
       let sg' = Subst.signature subst sg in
       let oldid = Ident.create_persistent name
       and newid = Ident.create name in
-      Tsig_module(newid, Tmty_signature sg', Trec_not) ::
+      Sig_module(newid, Mty_signature sg', Trec_not) ::
       package_signatures (Subst.add_module oldid (Pident newid) subst) rem
 
 let package_units objfiles cmifile modulename =
@@ -1152,13 +1324,15 @@ let package_units objfiles cmifile modulename =
   Ident.reinit();
   let sg = package_signatures Subst.identity units in
   (* See if explicit interface is provided *)
-  let mlifile =
-    chop_extension_if_any cmifile ^ !Config.interface_suffix in
+  let prefix = chop_extension_if_any cmifile in
+  let mlifile = prefix ^ !Config.interface_suffix in
   if Sys.file_exists mlifile then begin
     if not (Sys.file_exists cmifile) then begin
       raise(Error(Location.in_file mlifile, Interface_not_compiled mlifile))
     end;
     let dclsig = Env.read_signature modulename cmifile in
+    Cmt_format.save_cmt  (prefix ^ ".cmt") modulename
+      (Cmt_format.Packed (sg, objfiles)) None Env.initial None ;
     Includemod.compunit "(obtained by packing)" sg mlifile dclsig
   end else begin
     (* Determine imports *)
@@ -1168,7 +1342,13 @@ let package_units objfiles cmifile modulename =
         (fun (name, crc) -> not (List.mem name unit_names))
         (Env.imported_units()) in
     (* Write packaged signature *)
-    Env.save_signature_with_imports sg modulename cmifile imports;
+    if not !Clflags.dont_write_files then begin
+      let sg =
+        Env.save_signature_with_imports sg modulename
+          (prefix ^ ".cmi") imports in
+      Cmt_format.save_cmt (prefix ^ ".cmt")  modulename
+        (Cmt_format.Packed (sg, objfiles)) None Env.initial (Some sg)
+    end;
     Tcoerce_none
   end
 
index a2c03aaa83a4fcf33dafab3055e7152c80f9ce5a..5042c65c10df4b7c03d30fa624eb0f460d868310 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: typemod.mli 12542 2012-06-01 14:06:31Z frisch $ *)
 
 (* Type-checking of the module language *)
 
@@ -21,20 +21,28 @@ val type_module:
         Env.t -> Parsetree.module_expr -> Typedtree.module_expr
 val type_structure:
         Env.t -> Parsetree.structure -> Location.t ->
-          Typedtree.structure * signature * Env.t
+         Typedtree.structure * Types.signature * Env.t
+val type_toplevel_phrase:
+        Env.t -> Parsetree.structure ->
+         Typedtree.structure * Types.signature * Env.t
 val type_implementation:
-        string -> string -> string -> Env.t -> Parsetree.structure ->
-                               Typedtree.structure * Typedtree.module_coercion
+  string -> string -> string -> Env.t -> Parsetree.structure ->
+  Typedtree.structure * Typedtree.module_coercion
 val transl_signature:
-        Env.t -> Parsetree.signature -> signature
+        Env.t -> Parsetree.signature -> Typedtree.signature
 val check_nongen_schemes:
-        Env.t -> Typedtree.structure -> unit
+        Env.t -> Typedtree.structure_item list -> unit
 
 val simplify_signature: signature -> signature
 
+val save_signature : string -> Typedtree.signature -> string -> string ->
+  Env.t -> Types.signature_item list -> unit
+
 val package_units:
         string list -> string -> string -> Typedtree.module_coercion
 
+val bound_value_identifiers : Types.signature_item list -> Ident.t list
+
 type error =
     Cannot_apply of module_type
   | Not_included of Includemod.error list
index 982dd76abdcfb11278989670387e1f8fa6a2a229..1f5c9207f40fd37f9504818bbd8e7c7cd20b6d85 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: types.ml 12511 2012-05-30 13:29:48Z lefessan $ *)
 
 (* Representation of types and declarations *)
 
@@ -155,8 +155,8 @@ type type_declaration =
 and type_kind =
     Type_abstract
   | Type_record of
-      (string * mutable_flag * type_expr) list * record_representation
-  | Type_variant of (string * type_expr list * type_expr option) list 
+      (Ident.t * mutable_flag * type_expr) list * record_representation
+  | Type_variant of (Ident.t * type_expr list * type_expr option) list
 
 type exception_declaration =
     { exn_args: type_expr list;
@@ -167,9 +167,9 @@ type exception_declaration =
 module Concr = Set.Make(OrderedString)
 
 type class_type =
-    Tcty_constr of Path.t * type_expr list * class_type
-  | Tcty_signature of class_signature
-  | Tcty_fun of label * type_expr * class_type
+    Cty_constr of Path.t * type_expr list * class_type
+  | Cty_signature of class_signature
+  | Cty_fun of label * type_expr * class_type
 
 and class_signature =
   { cty_self: type_expr;
@@ -185,7 +185,7 @@ type class_declaration =
     cty_new: type_expr option;
     cty_variance: (bool * bool) list }
 
-type cltype_declaration =
+type class_type_declaration =
   { clty_params: type_expr list;
     clty_type: class_type;
     clty_path: Path.t;
@@ -194,24 +194,24 @@ type cltype_declaration =
 (* Type expressions for the module language *)
 
 type module_type =
-    Tmty_ident of Path.t
-  | Tmty_signature of signature
-  | Tmty_functor of Ident.t * module_type * module_type
+    Mty_ident of Path.t
+  | Mty_signature of signature
+  | Mty_functor of Ident.t * module_type * module_type
 
 and signature = signature_item list
 
 and signature_item =
-    Tsig_value of Ident.t * value_description
-  | Tsig_type of Ident.t * type_declaration * rec_status
-  | Tsig_exception of Ident.t * exception_declaration
-  | Tsig_module of Ident.t * module_type * rec_status
-  | Tsig_modtype of Ident.t * modtype_declaration
-  | Tsig_class of Ident.t * class_declaration * rec_status
-  | Tsig_cltype of Ident.t * cltype_declaration * rec_status
+    Sig_value of Ident.t * value_description
+  | Sig_type of Ident.t * type_declaration * rec_status
+  | Sig_exception of Ident.t * exception_declaration
+  | Sig_module of Ident.t * module_type * rec_status
+  | Sig_modtype of Ident.t * modtype_declaration
+  | Sig_class of Ident.t * class_declaration * rec_status
+  | Sig_class_type of Ident.t * class_type_declaration * rec_status
 
 and modtype_declaration =
-    Tmodtype_abstract
-  | Tmodtype_manifest of module_type
+    Modtype_abstract
+  | Modtype_manifest of module_type
 
 and rec_status =
     Trec_not                            (* not recursive *)
index cf897bd7a47229995b310025537c60baad3ae3b8..aff39eb33502057d6bd0d5d63e704de6504abd69 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: types.mli 12511 2012-05-30 13:29:48Z lefessan $ *)
 
 (* Representation of types and declarations *)
 
@@ -153,8 +153,8 @@ type type_declaration =
 and type_kind =
     Type_abstract
   | Type_record of
-      (string * mutable_flag * type_expr) list * record_representation
-  | Type_variant of (string * type_expr list * type_expr option) list
+      (Ident.t * mutable_flag * type_expr) list * record_representation
+  | Type_variant of (Ident.t * type_expr list * type_expr option) list
 
 type exception_declaration =
     { exn_args: type_expr list;
@@ -165,9 +165,9 @@ type exception_declaration =
 module Concr : Set.S with type elt = string
 
 type class_type =
-    Tcty_constr of Path.t * type_expr list * class_type
-  | Tcty_signature of class_signature
-  | Tcty_fun of label * type_expr * class_type
+    Cty_constr of Path.t * type_expr list * class_type
+  | Cty_signature of class_signature
+  | Cty_fun of label * type_expr * class_type
 
 and class_signature =
   { cty_self: type_expr;
@@ -182,7 +182,7 @@ type class_declaration =
     cty_new: type_expr option;
     cty_variance: (bool * bool) list }
 
-type cltype_declaration =
+type class_type_declaration =
   { clty_params: type_expr list;
     clty_type: class_type;
     clty_path: Path.t;
@@ -191,24 +191,24 @@ type cltype_declaration =
 (* Type expressions for the module language *)
 
 type module_type =
-    Tmty_ident of Path.t
-  | Tmty_signature of signature
-  | Tmty_functor of Ident.t * module_type * module_type
+    Mty_ident of Path.t
+  | Mty_signature of signature
+  | Mty_functor of Ident.t * module_type * module_type
 
 and signature = signature_item list
 
 and signature_item =
-    Tsig_value of Ident.t * value_description
-  | Tsig_type of Ident.t * type_declaration * rec_status
-  | Tsig_exception of Ident.t * exception_declaration
-  | Tsig_module of Ident.t * module_type * rec_status
-  | Tsig_modtype of Ident.t * modtype_declaration
-  | Tsig_class of Ident.t * class_declaration * rec_status
-  | Tsig_cltype of Ident.t * cltype_declaration * rec_status
+    Sig_value of Ident.t * value_description
+  | Sig_type of Ident.t * type_declaration * rec_status
+  | Sig_exception of Ident.t * exception_declaration
+  | Sig_module of Ident.t * module_type * rec_status
+  | Sig_modtype of Ident.t * modtype_declaration
+  | Sig_class of Ident.t * class_declaration * rec_status
+  | Sig_class_type of Ident.t * class_type_declaration * rec_status
 
 and modtype_declaration =
-    Tmodtype_abstract
-  | Tmodtype_manifest of module_type
+    Modtype_abstract
+  | Modtype_manifest of module_type
 
 and rec_status =
     Trec_not                            (* not recursive *)
index 131b12a793d9f779a88c5453a9781cb5da2fc36f..5f9c6caf52729da889a87eb9d3969d44764004dd 100644 (file)
 
 (* Typechecking of type expressions for the core language *)
 
+open Asttypes
 open Misc
 open Parsetree
+open Typedtree
 open Types
 open Ctype
 
@@ -101,7 +103,7 @@ let find_module =
   find_component Env.lookup_module (fun lid -> Unbound_module lid)
 let find_modtype =
   find_component Env.lookup_modtype (fun lid -> Unbound_modtype lid)
-let find_cltype =
+let find_class_type =
   find_component Env.lookup_cltype (fun lid -> Unbound_cltype lid)
 
 (* Support for first-class modules. *)
@@ -113,7 +115,8 @@ let create_package_mty fake loc env (p, l) =
   let l =
     List.sort
       (fun (s1, t1) (s2, t2) ->
-         if s1 = s2 then raise (Error (loc, Multiple_constraints_on_type s1));
+         if s1.txt = s2.txt then
+           raise (Error (loc, Multiple_constraints_on_type s1.txt));
          compare s1 s2)
       l
   in
@@ -127,7 +130,7 @@ let create_package_mty fake loc env (p, l) =
                ptype_manifest = if fake then None else Some t;
                ptype_variance = [];
                ptype_loc = loc} in
-      {pmty_desc=Pmty_with (mty, [ s, Pwith_type d ]);
+      {pmty_desc=Pmty_with (mty, [ { txt = s.txt; loc }, Pwith_type d ]);
        pmty_loc=loc}
     )
     {pmty_desc=Pmty_ident p; pmty_loc=loc}
@@ -195,14 +198,22 @@ let rec swap_list = function
 
 type policy = Fixed | Extensible | Univars
 
+let ctyp ctyp_desc ctyp_type ctyp_env ctyp_loc =
+  { ctyp_desc; ctyp_type; ctyp_env; ctyp_loc }
+
 let rec transl_type env policy styp =
+  let loc = styp.ptyp_loc in
   match styp.ptyp_desc with
     Ptyp_any ->
-      if policy = Univars then new_pre_univar () else
-      if policy = Fixed then
-        raise (Error (styp.ptyp_loc, Unbound_type_variable "_"))
-      else newvar ()
+      let ty =
+        if policy = Univars then new_pre_univar () else
+          if policy = Fixed then
+            raise (Error (styp.ptyp_loc, Unbound_type_variable "_"))
+          else newvar ()
+      in
+      ctyp Ttyp_any ty env loc
   | Ptyp_var name ->
+    let ty =
       if name <> "" && name.[0] = '_' then
         raise (Error (styp.ptyp_loc, Invalid_variable_name ("'" ^ name)));
       begin try
@@ -216,16 +227,21 @@ let rec transl_type env policy styp =
         used_variables := Tbl.add name (v, styp.ptyp_loc) !used_variables;
         v
       end
+    in
+    ctyp (Ttyp_var name) ty env loc
   | Ptyp_arrow(l, st1, st2) ->
-      let ty1 = transl_type env policy st1 in
-      let ty2 = transl_type env policy st2 in
-      newty (Tarrow(l, ty1, ty2, Cok))
+    let cty1 = transl_type env policy st1 in
+    let cty2 = transl_type env policy st2 in
+    let ty = newty (Tarrow(l, cty1.ctyp_type, cty2.ctyp_type, Cok)) in
+    ctyp (Ttyp_arrow (l, cty1, cty2)) ty env loc
   | Ptyp_tuple stl ->
-      newty (Ttuple(List.map (transl_type env policy) stl))
+    let ctys = List.map (transl_type env policy) stl in
+    let ty = newty (Ttuple (List.map (fun ctyp -> ctyp.ctyp_type) ctys)) in
+    ctyp (Ttyp_tuple ctys) ty env loc
   | Ptyp_constr(lid, stl) ->
-      let (path, decl) = find_type env styp.ptyp_loc lid in
+      let (path, decl) = find_type env styp.ptyp_loc lid.txt in
       if List.length stl <> decl.type_arity then
-        raise(Error(styp.ptyp_loc, Type_arity_mismatch(lid, decl.type_arity,
+        raise(Error(styp.ptyp_loc, Type_arity_mismatch(lid.txt, decl.type_arity,
                                                            List.length stl)));
       let args = List.map (transl_type env policy) stl in
       let params = instance_list decl.type_params in
@@ -236,23 +252,36 @@ let rec transl_type env policy styp =
             if (repr ty).level = Btype.generic_level then unify_var else unify
       in
       List.iter2
-        (fun (sty, ty) ty' ->
-           try unify_param env ty' ty with Unify trace ->
+        (fun (sty, cty) ty' ->
+           try unify_param env ty' cty.ctyp_type with Unify trace ->
              raise (Error(sty.ptyp_loc, Type_mismatch (swap_list trace))))
         (List.combine stl args) params;
-      let constr = newconstr path args in
+      let constr =
+        newconstr path (List.map (fun ctyp -> ctyp.ctyp_type) args) in
       begin try
         Ctype.enforce_constraints env constr
       with Unify trace ->
         raise (Error(styp.ptyp_loc, Type_mismatch trace))
       end;
-      constr
+       ctyp (Ttyp_constr (path, lid, args)) constr env loc
   | Ptyp_object fields ->
-      newobj (transl_fields env policy [] fields)
+      let fields = List.map
+          (fun pf ->
+           let desc =
+             match pf.pfield_desc with
+             | Pfield_var -> Tcfield_var
+             | Pfield (s,e) ->
+                 let ty1 = transl_type env policy e in
+                 Tcfield (s, ty1)
+           in
+           { field_desc = desc; field_loc = pf.pfield_loc })
+         fields in
+      let ty = newobj (transl_fields env policy [] fields) in
+       ctyp (Ttyp_object fields) ty env loc
   | Ptyp_class(lid, stl, present) ->
       let (path, decl, is_variant) =
         try
-          let (path, decl) = Env.lookup_type lid env in
+          let (path, decl) = Env.lookup_type lid.txt env in
           let rec check decl =
             match decl.type_manifest with
               None -> raise Not_found
@@ -268,7 +297,7 @@ let rec transl_type env policy styp =
         with Not_found -> try
           if present <> [] then raise Not_found;
           let lid2 =
-            match lid with
+            match lid.txt with
               Longident.Lident s     -> Longident.Lident ("#" ^ s)
             | Longident.Ldot(r, s)   -> Longident.Ldot (r, "#" ^ s)
             | Longident.Lapply(_, _) -> fatal_error "Typetexp.transl_type"
@@ -276,24 +305,25 @@ let rec transl_type env policy styp =
           let (path, decl) = Env.lookup_type lid2 env in
           (path, decl, false)
         with Not_found ->
-          raise(Error(styp.ptyp_loc, Unbound_class lid))
+          raise(Error(styp.ptyp_loc, Unbound_class lid.txt))
       in
       if List.length stl <> decl.type_arity then
-        raise(Error(styp.ptyp_loc, Type_arity_mismatch(lid, decl.type_arity,
+        raise(Error(styp.ptyp_loc, Type_arity_mismatch(lid.txt, decl.type_arity,
                                                        List.length stl)));
       let args = List.map (transl_type env policy) stl in
       let params = instance_list decl.type_params in
       List.iter2
-        (fun (sty, ty) ty' ->
-           try unify_var env ty' ty with Unify trace ->
+        (fun (sty, cty) ty' ->
+           try unify_var env ty' cty.ctyp_type with Unify trace ->
              raise (Error(sty.ptyp_loc, Type_mismatch (swap_list trace))))
         (List.combine stl args) params;
+       let ty_args = List.map (fun ctyp -> ctyp.ctyp_type) args in
       let ty =
-        try Ctype.expand_head env (newconstr path args)
+        try Ctype.expand_head env (newconstr path ty_args)
         with Unify trace ->
           raise (Error(styp.ptyp_loc, Type_mismatch trace))
       in
-      begin match ty.desc with
+      let ty = match ty.desc with
         Tvariant row ->
           let row = Btype.row_repr row in
           List.iter
@@ -313,7 +343,7 @@ let rec transl_type env policy styp =
               row.row_fields
           in
           let row = { row_closed = true; row_fields = fields;
-                      row_bound = (); row_name = Some (path, args);
+                      row_bound = (); row_name = Some (path, ty_args);
                       row_fixed = false; row_more = newvar () } in
           let static = Btype.static_row row in
           let row =
@@ -328,9 +358,10 @@ let rec transl_type env policy styp =
           ty
       | _ ->
           assert false
-      end
+      in
+       ctyp (Ttyp_class (path, lid, args, present)) ty env loc
   | Ptyp_alias(st, alias) ->
-      begin
+      let cty =
         try
           let t =
             try List.assoc alias !univars
@@ -338,7 +369,7 @@ let rec transl_type env policy styp =
               instance env (fst(Tbl.find alias !used_variables))
           in
           let ty = transl_type env policy st in
-          begin try unify_var env t ty with Unify trace ->
+          begin try unify_var env t ty.ctyp_type with Unify trace ->
             let trace = swap_list trace in
             raise(Error(styp.ptyp_loc, Alias_type_mismatch trace))
           end;
@@ -348,7 +379,7 @@ let rec transl_type env policy styp =
           let t = newvar () in
           used_variables := Tbl.add alias (t, styp.ptyp_loc) !used_variables;
           let ty = transl_type env policy st in
-          begin try unify_var env t ty with Unify trace ->
+          begin try unify_var env t ty.ctyp_type with Unify trace ->
             let trace = swap_list trace in
             raise(Error(styp.ptyp_loc, Alias_type_mismatch trace))
           end;
@@ -363,8 +394,9 @@ let rec transl_type env policy styp =
           | Tunivar None -> Btype.log_type px; px.desc <- Tunivar (Some alias)
           | _ -> ()
           end;
-          t
-      end
+          { ty with ctyp_type = t }
+      in
+      ctyp (Ttyp_alias (cty, alias)) cty.ctyp_type env loc
   | Ptyp_variant(fields, closed, present) ->
       let name = ref None in
       let mkfield l f =
@@ -388,21 +420,25 @@ let rec transl_type env policy styp =
       let rec add_field = function
           Rtag (l, c, stl) ->
             name := None;
+            let tl = List.map (transl_type env policy) stl in
             let f = match present with
               Some present when not (List.mem l present) ->
-                let tl = List.map (transl_type env policy) stl in
-                Reither(c, tl, false, ref None)
+               let ty_tl = List.map (fun cty -> cty.ctyp_type) tl in
+                Reither(c, ty_tl, false, ref None)
             | _ ->
                 if List.length stl > 1 || c && stl <> [] then
                   raise(Error(styp.ptyp_loc, Present_has_conjunction l));
-                match stl with [] -> Rpresent None
-                | st :: _ -> Rpresent (Some(transl_type env policy st))
+                match tl with [] -> Rpresent None
+                | st :: _ ->
+                     Rpresent (Some st.ctyp_type)
             in
-            add_typed_field styp.ptyp_loc l f
+            add_typed_field styp.ptyp_loc l f;
+             Ttag (l,c,tl)
         | Rinherit sty ->
-            let ty = transl_type env policy sty in
+            let cty = transl_type env policy sty in
+           let ty = cty.ctyp_type in
             let nm =
-              match repr ty with
+              match repr cty.ctyp_type with
                 {desc=Tconstr(p, tl, _)} -> Some(p, tl)
               | _                        -> None
             in
@@ -414,7 +450,7 @@ let rec transl_type env policy styp =
               (* Unset it otherwise *)
               name := None
             end;
-            let fl = match expand_head env ty, nm with
+            let fl = match expand_head env cty.ctyp_type, nm with
               {desc=Tvariant row}, _ when Btype.static_row row ->
                 let row = Btype.row_repr row in
                 row.row_fields
@@ -438,9 +474,10 @@ let rec transl_type env policy styp =
                 | _ -> f
                 in
                 add_typed_field sty.ptyp_loc l f)
-              fl
+              fl;
+             Tinherit cty
       in
-      List.iter add_field fields;
+      let tfields = List.map add_field fields in
       let fields = Hashtbl.fold (fun _ p l -> p :: l) hfields [] in
       begin match present with None -> ()
       | Some present ->
@@ -459,13 +496,15 @@ let rec transl_type env policy styp =
         else if policy <> Univars then row
         else { row with row_more = new_pre_univar () }
       in
-      newty (Tvariant row)
-  | Ptyp_poly(vars, st) ->
+      let ty = newty (Tvariant row) in
+      ctyp (Ttyp_variant (tfields, closed, present)) ty env loc
+   | Ptyp_poly(vars, st) ->
       begin_def();
       let new_univars = List.map (fun name -> name, newvar ~name ()) vars in
       let old_univars = !univars in
       univars := new_univars @ !univars;
-      let ty = transl_type env policy st in
+      let cty = transl_type env policy st in
+      let ty = cty.ctyp_type in
       univars := old_univars;
       end_def();
       generalize ty;
@@ -485,28 +524,37 @@ let rec transl_type env policy styp =
       in
       let ty' = Btype.newgenty (Tpoly(ty, List.rev ty_list)) in
       unify_var env (newvar()) ty';
-      ty'
+      ctyp (Ttyp_poly (vars, cty)) ty' env loc
   | Ptyp_package (p, l) ->
       let l, mty = create_package_mty true styp.ptyp_loc env (p, l) in
       let z = narrow () in
-      ignore (!transl_modtype env mty);
+      let mty = !transl_modtype env mty in
       widen z;
-      newty (Tpackage (!transl_modtype_longident styp.ptyp_loc env p,
-                       List.map fst l,
-                       List.map (transl_type env policy) (List.map snd l)))
+      let ptys = List.map (fun (s, pty) ->
+                            s, transl_type env policy pty
+                         ) l in
+      let path = !transl_modtype_longident styp.ptyp_loc env p.txt in
+      let ty = newty (Tpackage (path,
+                       List.map (fun (s, pty) -> s.txt) l,
+                       List.map (fun (_,cty) -> cty.ctyp_type) ptys))
+      in
+       ctyp (Ttyp_package {
+               pack_name = path;
+               pack_type = mty.mty_type;
+               pack_fields = ptys;
+                pack_txt = p;
+             }) ty env loc
 
 and transl_fields env policy seen =
   function
     [] ->
       newty Tnil
-  | {pfield_desc = Pfield_var}::_ ->
+  | {field_desc = Tcfield_var}::_ ->
       if policy = Univars then new_pre_univar () else newvar ()
-  | {pfield_desc = Pfield(s, e); pfield_loc = loc}::l ->
+  | {field_desc = Tcfield(s, ty1); field_loc = loc}::l ->
       if List.mem s seen then  raise (Error (loc, Repeated_method_label s));
-      let ty1 = transl_type env policy e in
       let ty2 = transl_fields env policy (s::seen) l in
-        newty (Tfield (s, Fpresent, ty1, ty2))
-
+        newty (Tfield (s, Fpresent, ty1.ctyp_type, ty2))
 
 (* Make the rows "fixed" in this type, to make universal check easier *)
 let rec make_fixed_univars ty =
@@ -563,7 +611,7 @@ let transl_simple_type env fixed styp =
   univars := []; used_variables := Tbl.empty;
   let typ = transl_type env (if fixed then Fixed else Extensible) styp in
   globalize_used_variables env fixed ();
-  make_fixed_univars typ;
+  make_fixed_univars typ.ctyp_type;
   typ
 
 let transl_simple_type_univars env styp =
@@ -580,7 +628,7 @@ let transl_simple_type_univars env styp =
     new_variables;
   globalize_used_variables env false ();
   end_def ();
-  generalize typ;
+  generalize typ.ctyp_type;
   let univs =
     List.fold_left
       (fun acc v ->
@@ -591,13 +639,14 @@ let transl_simple_type_univars env styp =
         | _ -> acc)
       [] !pre_univars
   in
-  make_fixed_univars typ;
-  instance env (Btype.newgenty (Tpoly (typ, univs)))
+  make_fixed_univars typ.ctyp_type;
+    { typ with ctyp_type =
+       instance env (Btype.newgenty (Tpoly (typ.ctyp_type, univs))) }
 
 let transl_simple_type_delayed env styp =
   univars := []; used_variables := Tbl.empty;
   let typ = transl_type env Extensible styp in
-  make_fixed_univars typ;
+  make_fixed_univars typ.ctyp_type;
   (typ, globalize_used_variables env false)
 
 let transl_type_scheme env styp =
@@ -605,7 +654,7 @@ let transl_type_scheme env styp =
   begin_def();
   let typ = transl_simple_type env false styp in
   end_def();
-  generalize typ;
+  generalize typ.ctyp_type;
   typ
 
 
index 79082d5f5e2a31b4285b09151885456eb14df069..bf20894e83698e87e59540097f4d581042852066 100644 (file)
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: typetexp.mli 12521 2012-05-31 07:57:32Z garrigue $ *)
 
 (* Typechecking of type expressions for the core language *)
 
 open Format;;
 
 val transl_simple_type:
-        Env.t -> bool -> Parsetree.core_type -> Types.type_expr
+        Env.t -> bool -> Parsetree.core_type -> Typedtree.core_type
 val transl_simple_type_univars:
-        Env.t -> Parsetree.core_type -> Types.type_expr
+        Env.t -> Parsetree.core_type -> Typedtree.core_type
 val transl_simple_type_delayed:
-        Env.t -> Parsetree.core_type -> Types.type_expr * (unit -> unit)
+        Env.t -> Parsetree.core_type -> Typedtree.core_type * (unit -> unit)
         (* Translate a type, but leave type variables unbound. Returns
            the type and a function that binds the type variable. *)
 val transl_type_scheme:
-        Env.t -> Parsetree.core_type -> Types.type_expr
+        Env.t -> Parsetree.core_type -> Typedtree.core_type
 val reset_type_variables: unit -> unit
 val enter_type_variable: bool -> Location.t -> string -> Types.type_expr
 val type_variable: Location.t -> string -> Types.type_expr
@@ -69,15 +69,28 @@ exception Error of Location.t * error
 val report_error: formatter -> error -> unit
 
 (* Support for first-class modules. *)
-val transl_modtype_longident: (Location.t -> Env.t -> Longident.t -> Path.t) ref  (* from Typemod *)
-val transl_modtype: (Env.t -> Parsetree.module_type -> Types.module_type) ref (* from Typemod *)
-val create_package_mty: Location.t -> Env.t -> Parsetree.package_type -> (Longident.t * Parsetree.core_type) list * Parsetree.module_type
+val transl_modtype_longident:  (* from Typemod *)
+    (Location.t -> Env.t -> Longident.t -> Path.t) ref
+val transl_modtype: (* from Typemod *)
+    (Env.t -> Parsetree.module_type -> Typedtree.module_type) ref
+val create_package_mty:
+    Location.t -> Env.t -> Parsetree.package_type ->
+    (Longident.t Asttypes.loc * Parsetree.core_type) list *
+      Parsetree.module_type
 
-val find_type: Env.t -> Location.t -> Longident.t -> Path.t * Types.type_declaration
-val find_constructor: Env.t -> Location.t -> Longident.t -> Types.constructor_description
-val find_label: Env.t -> Location.t -> Longident.t -> Types.label_description
-val find_value: Env.t -> Location.t -> Longident.t -> Path.t * Types.value_description
-val find_class:  Env.t -> Location.t -> Longident.t -> Path.t * Types.class_declaration
-val find_module: Env.t -> Location.t -> Longident.t -> Path.t * Types.module_type
-val find_modtype: Env.t -> Location.t -> Longident.t -> Path.t * Types.modtype_declaration
-val find_cltype: Env.t -> Location.t -> Longident.t -> Path.t * Types.cltype_declaration
+val find_type:
+    Env.t -> Location.t -> Longident.t -> Path.t * Types.type_declaration
+val find_constructor:
+    Env.t -> Location.t -> Longident.t -> Path.t * Types.constructor_description
+val find_label:
+    Env.t -> Location.t -> Longident.t -> Path.t * Types.label_description
+val find_value:
+    Env.t -> Location.t -> Longident.t -> Path.t * Types.value_description
+val find_class:
+    Env.t -> Location.t -> Longident.t -> Path.t * Types.class_declaration
+val find_module:
+    Env.t -> Location.t -> Longident.t -> Path.t * Types.module_type
+val find_modtype:
+    Env.t -> Location.t -> Longident.t -> Path.t * Types.modtype_declaration
+val find_class_type:
+    Env.t -> Location.t -> Longident.t -> Path.t * Types.class_type_declaration
index 66525e5b9eb5d73722cb2c225c3770e2c227076e..ebb382f81085ac61e773cd2334b31ffe910162be 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: ccomp.ml 12027 2012-01-16 09:05:37Z frisch $ *)
 
 (* Compiling C files and building C libraries *)
 
index 687c701fa71d2f7da6b31927c5e5962538429542..a7246c91d599d879bd9391385d6488ef16f14b49 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: ccomp.mli 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (* Compiling C files and building C libraries *)
 
index 51c80ed0e5641ab859f37483dc68a655426a70d1..d39d57af3c2f0e2714ccdfd054c9bc3abf1016e2 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: clflags.ml 12511 2012-05-30 13:29:48Z lefessan $ *)
 
 (* Command-line parameters *)
 
@@ -34,6 +34,7 @@ and classic = ref false                 (* -nolabels *)
 and nopervasives = ref false            (* -nopervasives *)
 and preprocessor = ref(None : string option) (* -pp *)
 let annotations = ref false             (* -annot *)
+let binary_annotations = ref false      (* -annot *)
 and use_threads = ref false             (* -thread *)
 and use_vmthreads = ref false           (* -vmthread *)
 and noassert = ref false                (* -noassert *)
index 4cff375a4efb7deddc02442ce3e39425083aa30a..fb0cddf137cf843bb71aafb48bd2845a1c82cba8 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: clflags.mli 12511 2012-05-30 13:29:48Z lefessan $ *)
 
 val objfiles : string list ref
 val ccobjs : string list ref
@@ -31,6 +31,7 @@ val classic : bool ref
 val nopervasives : bool ref
 val preprocessor : string option ref
 val annotations : bool ref
+val binary_annotations : bool ref
 val use_threads : bool ref
 val use_vmthreads : bool ref
 val noassert : bool ref
@@ -80,3 +81,4 @@ val std_include_dir : unit -> string list
 val shared : bool ref
 val dlcode : bool ref
 val runtime_variant : string ref
+
index ca6e6d47675879ecb5a964fc6617f4c20c6e0223..7e02f742b2cf503d309c3b6e16128f0be4b326fb 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: config.mlbuild 12511 2012-05-30 13:29:48Z lefessan $ *)
 
 (***********************************************************************)
 (**                                                                   **)
@@ -62,14 +62,15 @@ let mkexe = C.mkexe
 let mkmaindll = C.mkmaindll
 
 let exec_magic_number = "Caml1999X008"
-and cmi_magic_number = "Caml1999I013"
+and cmi_magic_number = "Caml1999I014"
 and cmo_magic_number = "Caml1999O007"
 and cma_magic_number = "Caml1999A008"
 and cmx_magic_number = "Caml1999Y011"
 and cmxa_magic_number = "Caml1999Z010"
-and ast_impl_magic_number = "Caml1999M014"
-and ast_intf_magic_number = "Caml1999N013"
+and ast_impl_magic_number = "Caml1999M015"
+and ast_intf_magic_number = "Caml1999N014"
 and cmxs_magic_number = "Caml2007D001"
+and cmt_magic_number = "Caml2012T001"
 
 let load_path = ref ([] : string list)
 
index 822df4b061d18ff1762bf03a91f31b3134eeac66..361c69f6fd17a9de3e58efb1e78a842253c39b38 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: config.mli 12511 2012-05-30 13:29:48Z lefessan $ *)
 
 (* System configuration *)
 
@@ -75,6 +75,8 @@ val ast_impl_magic_number: string
         (* Magic number for file holding an implementation syntax tree *)
 val cmxs_magic_number: string
         (* Magic number for dynamically-loadable plugins *)
+val cmt_magic_number: string
+        (* Magic number for compiled interface files *)
 
 val max_tag: int
         (* Biggest tag that can be stored in the header of a regular block. *)
index 9b3edb9896e576f6cd2f912d734a042b2df65c06..cdf67d440e7bbeb8907060645e1db0b96652d56b 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: config.mlp 12511 2012-05-30 13:29:48Z lefessan $ *)
 
 (***********************************************************************)
 (**                                                                   **)
@@ -51,14 +51,15 @@ let mkexe = "%%MKEXE%%"
 let mkmaindll = "%%MKMAINDLL%%"
 
 let exec_magic_number = "Caml1999X008"
-and cmi_magic_number = "Caml1999I013"
+and cmi_magic_number = "Caml1999I014"
 and cmo_magic_number = "Caml1999O007"
 and cma_magic_number = "Caml1999A008"
 and cmx_magic_number = "Caml1999Y011"
 and cmxa_magic_number = "Caml1999Z010"
-and ast_impl_magic_number = "Caml1999M014"
-and ast_intf_magic_number = "Caml1999N013"
+and ast_impl_magic_number = "Caml1999M015"
+and ast_intf_magic_number = "Caml1999N014"
 and cmxs_magic_number = "Caml2007D001"
+and cmt_magic_number = "Caml2012T001"
 
 let load_path = ref ([] : string list)
 
index f724e4f8f79b7bc2a9ae8b369e65c651212b43de..e7acee913bb71fbf88b19081f570b4201e9562a1 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: consistbl.ml 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (* Consistency tables: for checking consistency of module CRCs *)
 
index a877733b5e7819a34f17997a3c61194dc9d35855..fa9871fe309f2def30ee76f46c6368d95157d47f 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: consistbl.mli 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (* Consistency tables: for checking consistency of module CRCs *)
 
index 1f5bb98b1abcc80b1d46ed26b0f387934f9d1e50..dda9909feb21868ab389d81a9bf01168a4824b18 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: misc.ml 12511 2012-05-30 13:29:48Z lefessan $ *)
 
 (* Errors *)
 
@@ -141,6 +141,17 @@ let copy_file_chunk ic oc len =
     end
   in copy len
 
+let string_of_file ic =
+  let b = Buffer.create 0x10000 in
+  let buff = String.create 0x1000 in
+  let rec copy () =
+    let n = input ic buff 0 0x1000 in
+    if n = 0 then Buffer.contents b else
+      (Buffer.add_substring b buff 0 n; copy())
+  in copy()
+
+
+
 (* Reading from a channel *)
 
 let input_bytes ic n =
@@ -205,3 +216,12 @@ let rev_split_words s =
 let get_ref r =
   let v = !r in
   r := []; v
+
+let fst3 (x, _, _) = x
+let snd3 (_,x,_) = x
+let thd3 (_,_,x) = x
+
+let fst4 (x, _, _, _) = x
+let snd4 (_,x,_, _) = x
+let thd4 (_,_,x,_) = x
+
index 6ccb1b66bedb9a782f485c3333f926eb3eba4a07..6c48e403cf337ee9ba2b344a2b122da00f8990f6 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: misc.mli 12511 2012-05-30 13:29:48Z lefessan $ *)
 
 (* Miscellaneous useful types and functions *)
 
@@ -65,7 +65,9 @@ val copy_file_chunk: in_channel -> out_channel -> int -> unit
         (* [copy_file_chunk ic oc n] reads [n] bytes from [ic] and copies
            them to [oc]. It raises [End_of_file] when encountering
            EOF on [ic]. *)
-
+val string_of_file: in_channel -> string
+        (* [string_of_file ic] reads the contents of file [ic] and copies
+           them to a string. It stops when encountering EOF on [ic]. *)
 val input_bytes : in_channel -> int -> string;;
         (* [input_bytes ic n] reads [n] bytes from [ic] and returns them
            in a new string.  It raises [End_of_file] if EOF is encountered
@@ -111,3 +113,12 @@ val rev_split_words: string -> string list
 val get_ref: 'a list ref -> 'a list
         (* [get_ref lr] returns the content of the list reference [lr] and reset
            its content to the empty list. *)
+
+
+val fst3: 'a * 'b * 'c -> 'a
+val snd3: 'a * 'b * 'c -> 'b
+val thd3: 'a * 'b * 'c -> 'c
+
+val fst4: 'a * 'b * 'c * 'd -> 'a
+val snd4: 'a * 'b * 'c * 'd -> 'b
+val thd4: 'a * 'b * 'c * 'd -> 'c
index 63c133a205eb958c5c2709532254a246efb7bb5c..3a5285cc1526b1e0f48fb184ee539603ed68a8b7 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: tbl.ml 11156 2011-07-27 14:17:02Z doligez $ *)
 
 type ('a, 'b) t =
     Empty
index 626fd4c13200f5ac58c056ff518fb6a895dbae4b..34918ce822a42e76890d688e0327f8fbe400cbc3 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: tbl.mli 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (* Association tables from any ordered type to any type.
    We use the generic ordering to compare keys. *)
index 4619ac61c64c3a672dd54e6eeffecae35fa79476..44d553a142961889c7f26190c62073d7d95b9554 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: terminfo.ml 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (* Basic interface to the terminfo database *)
 
index 5fa3aa14e751374823ef1e2a2cbbef5062f5b414..68d6e01b5dddd8c16f6bc24f11de7175aedd79db 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: terminfo.mli 11156 2011-07-27 14:17:02Z doligez $ *)
 
 (* Basic interface to the terminfo database *)
 
index e633c562aca661225a82643c9fbffafe89d9c0a9..6bc8efbe66cfe11391db9e6720624575fb8877ad 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: warnings.ml 12504 2012-05-29 12:35:17Z frisch $ *)
 
 (* When you change this, you need to update the documentation:
    - man/ocamlc.m   in ocaml
@@ -58,6 +58,7 @@ type t =
   | Unused_ancestor of string               (* 36 *)
   | Unused_constructor of string * bool * bool  (* 37 *)
   | Unused_exception of string * bool       (* 38 *)
+  | Unused_rec_flag                         (* 39 *)
 ;;
 
 (* If you remove a warning, leave a hole in the numbering.  NEVER change
@@ -105,9 +106,10 @@ let number = function
   | Unused_ancestor _ -> 36
   | Unused_constructor _ -> 37
   | Unused_exception _ -> 38
+  | Unused_rec_flag -> 39
 ;;
 
-let last_warning_number = 38;;
+let last_warning_number = 39
 (* Must be the max number returned by the [number] function. *)
 
 let letter = function
@@ -123,7 +125,7 @@ let letter = function
   | 'h' -> []
   | 'i' -> []
   | 'j' -> []
-  | 'k' -> [32; 33; 34; 35; 36; 37; 38]
+  | 'k' -> [32; 33; 34; 35; 36; 37; 38; 39]
   | 'l' -> [6]
   | 'm' -> [7]
   | 'n' -> []
@@ -202,7 +204,7 @@ let parse_opt flags s =
 let parse_options errflag s = parse_opt (if errflag then error else active) s;;
 
 (* If you change these, don't forget to change them in man/ocamlc.m *)
-let defaults_w = "+a-4-6-7-9-27-29-32..38";;
+let defaults_w = "+a-4-6-7-9-27-29-32..39";;
 let defaults_warn_error = "-a";;
 
 let () = parse_options false defaults_w;;
@@ -300,6 +302,8 @@ let message = function
       "exception constructor " ^ s ^
       " is never raised or used to build values.\n\
         (However, this constructor appears in patterns.)"
+  | Unused_rec_flag ->
+      "unused rec flag."
 ;;
 
 let nerrors = ref 0;;
@@ -384,6 +388,7 @@ let descriptions =
    36, "Unused ancestor variable.";
    37, "Unused constructor.";
    38, "Unused exception constructor.";
+   39, "Unused rec flag.";
   ]
 ;;
 
index c7542af8cd918182e44ef6e97a146b6e543faa6e..6720e49d9c0d14204460355711a058628923196e 100644 (file)
@@ -10,7 +10,7 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id$ *)
+(* $Id: warnings.mli 12504 2012-05-29 12:35:17Z frisch $ *)
 
 open Format
 
@@ -53,6 +53,7 @@ type t =
   | Unused_ancestor of string               (* 36 *)
   | Unused_constructor of string * bool * bool  (* 37 *)
   | Unused_exception of string * bool       (* 38 *)
+  | Unused_rec_flag                         (* 39 *)
 ;;
 
 val parse_options : bool -> string -> unit;;
index bf37bf6c4ce9351e84dbda55dd4b7151246559eb..833c2dea6d34f8ee5962a1a4a503dae3387aa94e 100644 (file)
@@ -1,3 +1,4 @@
 ocamlyacc
+ocamlyacc.exe
 version.h
 .gdb_history
index fb560cfd32d1ef93dbeb20e6d7d876dead13d16e..fc7abc7cbb6bb0aa5e6593481f12c177c09b55ce 100644 (file)
@@ -10,7 +10,7 @@
 #                                                                       #
 #########################################################################
 
-# $Id$
+# $Id: Makefile 11156 2011-07-27 14:17:02Z doligez $
 
 # Makefile for the parser generator.
 
index 14a69f02d72cc630b74fc8b53182bbc2cd876c13..d67597640d3f122248e86d59f8fe75bcfca91ece 100644 (file)
@@ -10,7 +10,7 @@
 #                                                                       #
 #########################################################################
 
-# $Id$
+# $Id: Makefile.nt 11156 2011-07-27 14:17:02Z doligez $
 
 # Makefile for the parser generator.
 
index b3f4659d0187a60bac43f37ee26cd024a9466f25..3eb8d2c96e1099685d88241ffd65220a2aaeef52 100644 (file)
@@ -12,7 +12,7 @@
 
 /* Based on public-domain code from Berkeley Yacc */
 
-/* $Id$ */
+/* $Id: closure.c 11156 2011-07-27 14:17:02Z doligez $ */
 
 #include "defs.h"
 
index 75c8ef101df8aeda29f103f77eb876f6262e6995..990d36aeb4177ddf6ddf66dfe42d9a57aa186521 100644 (file)
@@ -12,7 +12,7 @@
 
 /* Based on public-domain code from Berkeley Yacc */
 
-/* $Id$ */
+/* $Id: defs.h 11156 2011-07-27 14:17:02Z doligez $ */
 
 #include <assert.h>
 #include <ctype.h>
index f0b92d2d6d7691ed1a97b4edbc6f4fdeb58266dd..c67552e6930fb9999a6f2aa7221bc9d8d72e0122 100644 (file)
@@ -12,7 +12,7 @@
 
 /* Based on public-domain code from Berkeley Yacc */
 
-/* $Id$ */
+/* $Id: error.c 11156 2011-07-27 14:17:02Z doligez $ */
 
 /* routines for printing error messages  */
 
index d595e76d71e6bf54b1add51087330607e726b26c..f4f554dd06c1ce346cc988a182b880063185a3b9 100644 (file)
@@ -12,7 +12,7 @@
 
 /* Based on public-domain code from Berkeley Yacc */
 
-/* $Id$ */
+/* $Id: lalr.c 11156 2011-07-27 14:17:02Z doligez $ */
 
 #include "defs.h"
 
index 3da50da00bf75918ccddddb60cf734389c22ac42..3a1e42591902a1071b71396caee1c64b7e20b018 100644 (file)
@@ -12,7 +12,7 @@
 
 /* Based on public-domain code from Berkeley Yacc */
 
-/* $Id$ */
+/* $Id: lr0.c 11156 2011-07-27 14:17:02Z doligez $ */
 
 
 #include "defs.h"
index 8616b9b3daf96efbe6a2ae926e6eba273aa8b986..d36205fb532b2059f1ad3931edffe6a1494992c1 100644 (file)
@@ -12,7 +12,7 @@
 
 /* Based on public-domain code from Berkeley Yacc */
 
-/* $Id$ */
+/* $Id: main.c 11156 2011-07-27 14:17:02Z doligez $ */
 
 #include <signal.h>
 #include <string.h>
index 0e20724bf0f753de0e2a60d79c3fcd8039e9f86f..33a874a3b06eea39b5fd70c7e969ad7e3e5a82b6 100644 (file)
@@ -12,7 +12,7 @@
 
 /* Based on public-domain code from Berkeley Yacc */
 
-/* $Id$ */
+/* $Id: mkpar.c 11156 2011-07-27 14:17:02Z doligez $ */
 
 
 #include "defs.h"
index 9723d3fa675046e1af6de790fc788c9511ea74dd..b1247483ffae6825adb05b9bc06bc84e721612bb 100644 (file)
@@ -12,7 +12,7 @@
 
 /* Based on public-domain code from Berkeley Yacc */
 
-/* $Id$ */
+/* $Id: output.c 11156 2011-07-27 14:17:02Z doligez $ */
 
 #include "defs.h"
 
index 1c36843d4447e3b65e913d88a9bf5b6daead5bfe..f4a26ea48cb1d5a0389f06020e4130167ccd719b 100644 (file)
@@ -12,7 +12,7 @@
 
 /* Based on public-domain code from Berkeley Yacc */
 
-/* $Id$ */
+/* $Id: reader.c 11156 2011-07-27 14:17:02Z doligez $ */
 
 #include <string.h>
 #include "defs.h"
index 8048999d7d2d04c5ec979973a5f180c470b9761a..5d4b08346dae2ae9945b6a3ecfa7161c36adb5bc 100644 (file)
@@ -12,7 +12,7 @@
 
 /* Based on public-domain code from Berkeley Yacc */
 
-/* $Id$ */
+/* $Id: skeleton.c 11156 2011-07-27 14:17:02Z doligez $ */
 
 #include "defs.h"
 
index f30e4a90d438a048ae672eeef321f93956f95404..1301dc29c55f6b32cc27c890e21601cadc2ba2b2 100644 (file)
@@ -12,7 +12,7 @@
 
 /* Based on public-domain code from Berkeley Yacc */
 
-/* $Id$ */
+/* $Id: symtab.c 11156 2011-07-27 14:17:02Z doligez $ */
 
 #include <string.h>
 #include "defs.h"
index 799c4969aa96a7602a8d4c880a2c95252782dd86..376cccaf791e7492ce580fe5bb74ff80be98bcf0 100644 (file)
@@ -12,7 +12,7 @@
 
 /* Based on public-domain code from Berkeley Yacc */
 
-/* $Id$ */
+/* $Id: verbose.c 11156 2011-07-27 14:17:02Z doligez $ */
 
 
 #include "defs.h"
index c9ec782beb4a132b363e92a22e17b0de68e9b570..7207dc114cb8d1580a2392b2f2adebcbe8b27dce 100644 (file)
@@ -12,7 +12,7 @@
 
 /* Based on public-domain code from Berkeley Yacc */
 
-/* $Id$ */
+/* $Id: warshall.c 11156 2011-07-27 14:17:02Z doligez $ */
 
 #include "defs.h"